tar-iterator
Version:
Extract contents from tar archive type using an iterator API using streams or paths. Use stream interface and pipe transforms to add decompression algorithms
288 lines • 7.14 kB
JavaScript
/**
* TAR Format Constants
*
* These define the structure of TAR headers per POSIX USTAR specification
* with GNU and PAX extensions.
*/ // Block sizes
"use strict";
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 BLOCK_SIZE () {
return BLOCK_SIZE;
},
get CHECKSUM_OFFSET () {
return CHECKSUM_OFFSET;
},
get CHECKSUM_SIZE () {
return CHECKSUM_SIZE;
},
get DEVMAJOR_OFFSET () {
return DEVMAJOR_OFFSET;
},
get DEVMAJOR_SIZE () {
return DEVMAJOR_SIZE;
},
get DEVMINOR_OFFSET () {
return DEVMINOR_OFFSET;
},
get DEVMINOR_SIZE () {
return DEVMINOR_SIZE;
},
get GID_OFFSET () {
return GID_OFFSET;
},
get GID_SIZE () {
return GID_SIZE;
},
get GNAME_OFFSET () {
return GNAME_OFFSET;
},
get GNAME_SIZE () {
return GNAME_SIZE;
},
get GNU_MAGIC () {
return GNU_MAGIC;
},
get GNU_VER () {
return GNU_VER;
},
get HEADER_SIZE () {
return HEADER_SIZE;
},
get LINKNAME_OFFSET () {
return LINKNAME_OFFSET;
},
get LINKNAME_SIZE () {
return LINKNAME_SIZE;
},
get MAGIC_OFFSET () {
return MAGIC_OFFSET;
},
get MAGIC_SIZE () {
return MAGIC_SIZE;
},
get MODE_OFFSET () {
return MODE_OFFSET;
},
get MODE_SIZE () {
return MODE_SIZE;
},
get MTIME_OFFSET () {
return MTIME_OFFSET;
},
get MTIME_SIZE () {
return MTIME_SIZE;
},
get NAME_OFFSET () {
return NAME_OFFSET;
},
get NAME_SIZE () {
return NAME_SIZE;
},
get PREFIX_OFFSET () {
return PREFIX_OFFSET;
},
get PREFIX_SIZE () {
return PREFIX_SIZE;
},
get SIZE_OFFSET () {
return SIZE_OFFSET;
},
get SIZE_SIZE () {
return SIZE_SIZE;
},
get SPARSE_ENTRIES_IN_HEADER () {
return SPARSE_ENTRIES_IN_HEADER;
},
get SPARSE_ENTRY_NUMBYTES_SIZE () {
return SPARSE_ENTRY_NUMBYTES_SIZE;
},
get SPARSE_ENTRY_OFFSET_SIZE () {
return SPARSE_ENTRY_OFFSET_SIZE;
},
get SPARSE_ENTRY_SIZE () {
return SPARSE_ENTRY_SIZE;
},
get SPARSE_EXTENDED_ENTRIES () {
return SPARSE_EXTENDED_ENTRIES;
},
get SPARSE_EXTENDED_ISEXTENDED_OFFSET () {
return SPARSE_EXTENDED_ISEXTENDED_OFFSET;
},
get SPARSE_ISEXTENDED_OFFSET () {
return SPARSE_ISEXTENDED_OFFSET;
},
get SPARSE_OFFSET () {
return SPARSE_OFFSET;
},
get SPARSE_REALSIZE_OFFSET () {
return SPARSE_REALSIZE_OFFSET;
},
get SPARSE_REALSIZE_SIZE () {
return SPARSE_REALSIZE_SIZE;
},
get TYPEFLAG_OFFSET () {
return TYPEFLAG_OFFSET;
},
get TYPE_BLOCK_DEVICE () {
return TYPE_BLOCK_DEVICE;
},
get TYPE_CHAR_DEVICE () {
return TYPE_CHAR_DEVICE;
},
get TYPE_CONTIGUOUS () {
return TYPE_CONTIGUOUS;
},
get TYPE_DIRECTORY () {
return TYPE_DIRECTORY;
},
get TYPE_FIFO () {
return TYPE_FIFO;
},
get TYPE_FILE () {
return TYPE_FILE;
},
get TYPE_GNU_DUMPDIR () {
return TYPE_GNU_DUMPDIR;
},
get TYPE_GNU_LONG_LINK () {
return TYPE_GNU_LONG_LINK;
},
get TYPE_GNU_LONG_PATH () {
return TYPE_GNU_LONG_PATH;
},
get TYPE_GNU_MULTIVOL () {
return TYPE_GNU_MULTIVOL;
},
get TYPE_GNU_SPARSE () {
return TYPE_GNU_SPARSE;
},
get TYPE_GNU_VOLHDR () {
return TYPE_GNU_VOLHDR;
},
get TYPE_LINK () {
return TYPE_LINK;
},
get TYPE_PAX_GLOBAL () {
return TYPE_PAX_GLOBAL;
},
get TYPE_PAX_HEADER () {
return TYPE_PAX_HEADER;
},
get TYPE_SYMLINK () {
return TYPE_SYMLINK;
},
get UID_OFFSET () {
return UID_OFFSET;
},
get UID_SIZE () {
return UID_SIZE;
},
get UNAME_OFFSET () {
return UNAME_OFFSET;
},
get UNAME_SIZE () {
return UNAME_SIZE;
},
get USTAR_MAGIC () {
return USTAR_MAGIC;
},
get VERSION_OFFSET () {
return VERSION_OFFSET;
},
get VERSION_SIZE () {
return VERSION_SIZE;
},
get ZERO_OFFSET () {
return ZERO_OFFSET;
}
});
var HEADER_SIZE = 512;
var BLOCK_SIZE = 512;
var NAME_OFFSET = 0;
var NAME_SIZE = 100;
var MODE_OFFSET = 100;
var MODE_SIZE = 8;
var UID_OFFSET = 108;
var UID_SIZE = 8;
var GID_OFFSET = 116;
var GID_SIZE = 8;
var SIZE_OFFSET = 124;
var SIZE_SIZE = 12;
var MTIME_OFFSET = 136;
var MTIME_SIZE = 12;
var CHECKSUM_OFFSET = 148;
var CHECKSUM_SIZE = 8;
var TYPEFLAG_OFFSET = 156;
var LINKNAME_OFFSET = 157;
var LINKNAME_SIZE = 100;
var MAGIC_OFFSET = 257;
var MAGIC_SIZE = 6;
var VERSION_OFFSET = 263;
var VERSION_SIZE = 2;
var UNAME_OFFSET = 265;
var UNAME_SIZE = 32;
var GNAME_OFFSET = 297;
var GNAME_SIZE = 32;
var DEVMAJOR_OFFSET = 329;
var DEVMAJOR_SIZE = 8;
var DEVMINOR_OFFSET = 337;
var DEVMINOR_SIZE = 8;
var PREFIX_OFFSET = 345;
var PREFIX_SIZE = 155;
var SPARSE_OFFSET = 386;
var SPARSE_ENTRY_SIZE = 24; // Each sparse entry is 24 bytes
var SPARSE_ENTRY_OFFSET_SIZE = 12;
var SPARSE_ENTRY_NUMBYTES_SIZE = 12;
var SPARSE_ENTRIES_IN_HEADER = 4; // Up to 4 entries in main header
var SPARSE_ISEXTENDED_OFFSET = 482; // 1 byte: 1 if more entries follow
var SPARSE_REALSIZE_OFFSET = 483; // 12 bytes: actual file size
var SPARSE_REALSIZE_SIZE = 12;
var SPARSE_EXTENDED_ENTRIES = 21;
var SPARSE_EXTENDED_ISEXTENDED_OFFSET = 504; // isextended in extended block
var USTAR_MAGIC = [
117,
115,
116,
97,
114,
0
];
var GNU_MAGIC = [
117,
115,
116,
97,
114,
32
];
var GNU_VER = [
32,
0
];
var ZERO_OFFSET = 48;
var TYPE_FILE = 0; // '0' or '\0'
var TYPE_LINK = 1; // '1' - hard link
var TYPE_SYMLINK = 2; // '2' - symbolic link
var TYPE_CHAR_DEVICE = 3; // '3' - character device
var TYPE_BLOCK_DEVICE = 4; // '4' - block device
var TYPE_DIRECTORY = 5; // '5' - directory
var TYPE_FIFO = 6; // '6' - FIFO (named pipe)
var TYPE_CONTIGUOUS = 7; // '7' - contiguous file
var TYPE_GNU_LONG_PATH = 76; // 'L' - GNU long pathname
var TYPE_GNU_LONG_LINK = 75; // 'K' - GNU long linkname
var TYPE_GNU_SPARSE = 83; // 'S' - GNU sparse file
var TYPE_GNU_DUMPDIR = 68; // 'D' - GNU directory dump
var TYPE_GNU_MULTIVOL = 77; // 'M' - GNU multi-volume continuation
var TYPE_GNU_VOLHDR = 86; // 'V' - GNU volume header
var TYPE_PAX_HEADER = 120; // 'x' - PAX extended header for next entry
var TYPE_PAX_GLOBAL = 103; // 'g' - PAX global extended header
/* 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; }