MCPcopy
hub / github.com/gildas-lormeau/zip.js / closeFile

Function closeFile

index-native.cjs:5571–5785  ·  view source on GitHub ↗
(zipWriter, comment, options)

Source from the content-addressed store, hash-verified

5569
5570
5571async function closeFile(zipWriter, comment, options) {
5572 const { files, writer } = zipWriter;
5573 const { diskOffset } = writer;
5574 let { diskNumber } = writer;
5575 let offset = 0;
5576 let directoryDataLength = 0;
5577 let directoryOffset = zipWriter.offset - diskOffset;
5578 let filesLength = files.size;
5579 for (const [, fileEntry] of files) {
5580 const {
5581 rawFilename,
5582 rawExtraFieldAES,
5583 rawComment,
5584 rawExtraFieldNTFS,
5585 rawExtraFieldUnix,
5586 rawExtraField,
5587 extendedTimestamp,
5588 extraFieldExtendedTimestampFlag,
5589 lastModDate,
5590 zip64UncompressedSize,
5591 zip64CompressedSize,
5592 uncompressedSize,
5593 compressedSize
5594 } = fileEntry;
5595 const zip64Offset = fileEntry.offset > MAX_32_BITS;
5596 const zip64DiskNumberStart = fileEntry.diskNumberStart > MAX_16_BITS;
5597 let rawExtraFieldZip64;
5598 if (zip64Offset || zip64DiskNumberStart || zip64UncompressedSize || zip64CompressedSize) {
5599 let length = 4;
5600 if (zip64UncompressedSize) length += 8;
5601 if (zip64CompressedSize) length += 8;
5602 if (zip64Offset) length += 8;
5603 if (zip64DiskNumberStart) length += 4;
5604 rawExtraFieldZip64 = new Uint8Array(length);
5605 const zip64View = getDataView(rawExtraFieldZip64);
5606 setUint16(zip64View, 0, EXTRAFIELD_TYPE_ZIP64);
5607 setUint16(zip64View, 2, length - 4);
5608 let zip64FieldOffset = 4;
5609 if (zip64UncompressedSize) { setBigUint64(zip64View, zip64FieldOffset, BigInt(uncompressedSize)); zip64FieldOffset += 8; }
5610 if (zip64CompressedSize) { setBigUint64(zip64View, zip64FieldOffset, BigInt(compressedSize)); zip64FieldOffset += 8; }
5611 if (zip64Offset) { setBigUint64(zip64View, zip64FieldOffset, BigInt(fileEntry.offset)); zip64FieldOffset += 8; }
5612 if (zip64DiskNumberStart) { setUint32(zip64View, zip64FieldOffset, fileEntry.diskNumberStart); }
5613 } else {
5614 rawExtraFieldZip64 = new Uint8Array();
5615 }
5616 fileEntry.rawExtraFieldZip64 = rawExtraFieldZip64;
5617 fileEntry.zip64Offset = zip64Offset;
5618 fileEntry.zip64DiskNumberStart = zip64DiskNumberStart;
5619 let rawExtraFieldTimestamp;
5620 if (extendedTimestamp) {
5621 rawExtraFieldTimestamp = new Uint8Array(9);
5622 const extraFieldExtendedTimestampView = getDataView(rawExtraFieldTimestamp);
5623 setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
5624 setUint16(extraFieldExtendedTimestampView, 2, 5);
5625 setUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag);
5626 setUint32(extraFieldExtendedTimestampView, 5, Math.floor(lastModDate.getTime() / 1000));
5627 } else {
5628 rawExtraFieldTimestamp = new Uint8Array();

Callers 1

closeMethod · 0.70

Calls 11

getDataViewFunction · 0.70
setUint16Function · 0.70
setBigUint64Function · 0.70
setUint32Function · 0.70
setUint8Function · 0.70
getLengthFunction · 0.70
initStreamFunction · 0.70
arraySetFunction · 0.70
writeDataFunction · 0.70
getOptionValueFunction · 0.70
onprogressMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…