fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
113 lines • 4.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get bufferAlloc () {
return bufferAlloc;
},
get bufferAllocUnsafe () {
return bufferAllocUnsafe;
},
get bufferCompare () {
return bufferCompare;
},
get bufferEquals () {
return bufferEquals;
},
get bufferFrom () {
return bufferFrom;
}
});
var major = +process.versions.node.split('.')[0];
// Buffer.from (Node 4.5+)
// Check that Buffer.from exists and is not the Uint8Array.from that was incorrectly aliased in some versions
var hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;
function bufferFrom(data, encoding) {
if (hasBufferFrom) {
if (typeof data === 'string') {
return Buffer.from(data, encoding);
}
return Buffer.from(data);
}
// Node 0.8-4.4 fallback using deprecated Buffer constructor
// biome-ignore lint/suspicious/noExplicitAny: Buffer constructor signature changed between Node versions
return new Buffer(data, encoding);
}
// Buffer.alloc (Node 4.5+)
var hasBufferAlloc = typeof Buffer.alloc === 'function';
function bufferAlloc(size, fill, encoding) {
if (hasBufferAlloc) {
return Buffer.alloc(size, fill, encoding);
}
// Node 0.8-4.4 fallback
// biome-ignore lint/suspicious/noExplicitAny: Buffer constructor signature changed between Node versions
var buf = new Buffer(size);
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding);
} else {
buf.fill(fill);
}
} else {
buf.fill(0);
}
return buf;
}
// Buffer.allocUnsafe (Node 4.5+)
var hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';
function bufferAllocUnsafe(size) {
if (hasBufferAllocUnsafe) {
return Buffer.allocUnsafe(size);
}
// Node 0.8-4.4 fallback
// biome-ignore lint/suspicious/noExplicitAny: Buffer constructor signature changed between Node versions
return new Buffer(size);
}
// Buffer.compare with offset support (full support Node 5+, basic in Node 0.12+)
// Node 0.12-4: buffer.compare(target) only - no offset support
// Node 5+: buffer.compare(target, targetStart, targetEnd, sourceStart, sourceEnd)
function compareOffset(source, target, targetStart, sourceStart, targetEnd, sourceEnd) {
var sourceLength = sourceEnd - sourceStart;
var targetLength = targetEnd - targetStart;
var length = Math.min(sourceLength, targetLength);
for(var index = 0; index < length; index++){
var sourceValue = source[sourceStart + index];
var targetValue = target[targetStart + index];
if (sourceValue > targetValue) return 1;
if (sourceValue < targetValue) return -1;
}
return 0;
}
function bufferCompare(source, target, targetStart, targetEnd, sourceStart, sourceEnd) {
// If no offsets provided and basic compare exists, use it
if (targetStart === undefined && typeof source.compare === 'function') {
return source.compare(target);
}
// Node 5+ has full offset support
if (major >= 5 && typeof source.compare === 'function') {
return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);
}
// Manual implementation for Node 0.8-4 or when offsets are needed
if (targetStart === undefined) targetStart = 0;
if (targetEnd === undefined) targetEnd = target.length;
if (sourceStart === undefined) sourceStart = 0;
if (sourceEnd === undefined) sourceEnd = source.length;
if (sourceStart >= sourceEnd) return targetStart >= targetEnd ? 0 : -1;
if (targetStart >= targetEnd) return 1;
return compareOffset(source, target, targetStart, sourceStart, targetEnd, sourceEnd);
}
function bufferEquals(buf, offset, expected) {
if (offset + expected.length > buf.length) return false;
for(var i = 0; i < expected.length; i++){
if (buf[offset + i] !== expected[i]) return false;
}
return true;
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }