UNPKG

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
/** * 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; }