UNPKG

igir

Version:

🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

40 lines (39 loc) • 1.64 kB
export default { parseExtraFields: (buffer) => { if (buffer.length === 0) { return new Map(); } const extraFields = new Map(); let position = 0; while (position < buffer.length - 3) { const headerId = buffer.readUInt16LE(position); const dataSize = buffer.readUInt16LE(position + 2); extraFields.set(headerId, buffer.subarray(position + 4, position + 4 + dataSize)); position += 4 + dataSize; } return extraFields; }, parseZip64ExtendedInformation: (buffer, originalUncompressedSize, originalCompressedSize, originalLocalFileHeaderRelativeOffset, originalFileDiskStart) => { if (buffer === undefined || buffer.length === 0) { return undefined; } const extendedInformation = {}; let position = 0; if (originalUncompressedSize === 0xff_ff_ff_ff) { extendedInformation.uncompressedSize = Number(buffer.readBigUInt64LE(position)); position += 8; } if (originalCompressedSize === 0xff_ff_ff_ff) { extendedInformation.compressedSize = Number(buffer.readBigUInt64LE(position)); position += 8; } if (originalLocalFileHeaderRelativeOffset === 0xff_ff_ff_ff) { extendedInformation.localFileHeaderRelativeOffset = Number(buffer.readBigUInt64LE(position)); position += 8; } if (originalFileDiskStart === 0xff_ff) { extendedInformation.fileDiskStart = buffer.readUInt32LE(position); } return extendedInformation; }, };