@zip.js/zip.js 2.7.22 → 2.7.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/zip-fs-full.js +88 -199
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +76 -58
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +60 -45
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +60 -45
- package/dist/zip.min.js +1 -1
- package/index.cjs +88 -199
- package/index.d.ts +1 -1
- package/index.min.js +1 -1
- package/lib/core/util/mime-type.js +12 -141
- package/lib/core/zip-fs-core.js +16 -13
- package/lib/core/zip-reader.js +18 -13
- package/lib/core/zip-writer.js +42 -32
- package/package.json +1 -1
package/dist/zip-full.js
CHANGED
|
@@ -7748,7 +7748,7 @@
|
|
|
7748
7748
|
localDirectory.rawExtraField = localDirectory.extraFieldLength ?
|
|
7749
7749
|
await readUint8Array(reader, offset + 30 + localDirectory.filenameLength, localDirectory.extraFieldLength, diskNumberStart) :
|
|
7750
7750
|
new Uint8Array();
|
|
7751
|
-
await readCommonFooter(zipEntry, localDirectory, dataView, 4);
|
|
7751
|
+
await readCommonFooter(zipEntry, localDirectory, dataView, 4, true);
|
|
7752
7752
|
Object.assign(fileEntry, {
|
|
7753
7753
|
lastAccessDate: localDirectory.lastAccessDate,
|
|
7754
7754
|
creationDate: localDirectory.creationDate
|
|
@@ -7835,7 +7835,7 @@
|
|
|
7835
7835
|
});
|
|
7836
7836
|
}
|
|
7837
7837
|
|
|
7838
|
-
async function readCommonFooter(fileEntry, directory, dataView, offset) {
|
|
7838
|
+
async function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory) {
|
|
7839
7839
|
const { rawExtraField } = directory;
|
|
7840
7840
|
const extraField = directory.extraField = new Map();
|
|
7841
7841
|
const rawExtraFieldView = getDataView$1(new Uint8Array(rawExtraField));
|
|
@@ -7888,7 +7888,7 @@
|
|
|
7888
7888
|
}
|
|
7889
7889
|
const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
|
|
7890
7890
|
if (extraFieldExtendedTimestamp) {
|
|
7891
|
-
readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory);
|
|
7891
|
+
readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);
|
|
7892
7892
|
directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;
|
|
7893
7893
|
}
|
|
7894
7894
|
}
|
|
@@ -7979,23 +7979,28 @@
|
|
|
7979
7979
|
}
|
|
7980
7980
|
}
|
|
7981
7981
|
|
|
7982
|
-
function readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory) {
|
|
7982
|
+
function readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory) {
|
|
7983
7983
|
const extraFieldView = getDataView$1(extraFieldExtendedTimestamp.data);
|
|
7984
7984
|
const flags = getUint8(extraFieldView, 0);
|
|
7985
7985
|
const timeProperties = [];
|
|
7986
7986
|
const timeRawProperties = [];
|
|
7987
|
-
if (
|
|
7987
|
+
if (localDirectory) {
|
|
7988
|
+
if ((flags & 0x1) == 0x1) {
|
|
7989
|
+
timeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE);
|
|
7990
|
+
timeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);
|
|
7991
|
+
}
|
|
7992
|
+
if ((flags & 0x2) == 0x2) {
|
|
7993
|
+
timeProperties.push(PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
7994
|
+
timeRawProperties.push(PROPERTY_NAME_RAW_LAST_ACCESS_DATE);
|
|
7995
|
+
}
|
|
7996
|
+
if ((flags & 0x4) == 0x4) {
|
|
7997
|
+
timeProperties.push(PROPERTY_NAME_CREATION_DATE);
|
|
7998
|
+
timeRawProperties.push(PROPERTY_NAME_RAW_CREATION_DATE);
|
|
7999
|
+
}
|
|
8000
|
+
} else if (extraFieldExtendedTimestamp.data.length >= 5) {
|
|
7988
8001
|
timeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE);
|
|
7989
8002
|
timeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);
|
|
7990
8003
|
}
|
|
7991
|
-
if ((flags & 0x2) == 0x2) {
|
|
7992
|
-
timeProperties.push(PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
7993
|
-
timeRawProperties.push(PROPERTY_NAME_RAW_LAST_ACCESS_DATE);
|
|
7994
|
-
}
|
|
7995
|
-
if ((flags & 0x4) == 0x4) {
|
|
7996
|
-
timeProperties.push(PROPERTY_NAME_CREATION_DATE);
|
|
7997
|
-
timeRawProperties.push(PROPERTY_NAME_RAW_CREATION_DATE);
|
|
7998
|
-
}
|
|
7999
8004
|
let offset = 1;
|
|
8000
8005
|
timeProperties.forEach((propertyName, indexProperty) => {
|
|
8001
8006
|
if (extraFieldExtendedTimestamp.data.length >= offset + 4) {
|
|
@@ -8478,6 +8483,7 @@
|
|
|
8478
8483
|
version,
|
|
8479
8484
|
compressionMethod,
|
|
8480
8485
|
rawExtraFieldExtendedTimestamp,
|
|
8486
|
+
extraFieldExtendedTimestampFlag,
|
|
8481
8487
|
rawExtraFieldNTFS,
|
|
8482
8488
|
rawExtraFieldAES
|
|
8483
8489
|
} = headerInfo;
|
|
@@ -8609,6 +8615,7 @@
|
|
|
8609
8615
|
headerArray,
|
|
8610
8616
|
signature,
|
|
8611
8617
|
rawExtraFieldZip64,
|
|
8618
|
+
extraFieldExtendedTimestampFlag,
|
|
8612
8619
|
zip64UncompressedSize,
|
|
8613
8620
|
zip64CompressedSize,
|
|
8614
8621
|
zip64Offset,
|
|
@@ -8631,7 +8638,7 @@
|
|
|
8631
8638
|
directory,
|
|
8632
8639
|
rawExtraField,
|
|
8633
8640
|
encryptionStrength,
|
|
8634
|
-
extendedTimestamp
|
|
8641
|
+
extendedTimestamp
|
|
8635
8642
|
} = options;
|
|
8636
8643
|
const compressed = level !== 0 && !directory;
|
|
8637
8644
|
const encrypted = Boolean(password && getLength(password));
|
|
@@ -8648,19 +8655,23 @@
|
|
|
8648
8655
|
}
|
|
8649
8656
|
let rawExtraFieldNTFS;
|
|
8650
8657
|
let rawExtraFieldExtendedTimestamp;
|
|
8658
|
+
let extraFieldExtendedTimestampFlag;
|
|
8651
8659
|
if (extendedTimestamp) {
|
|
8652
8660
|
rawExtraFieldExtendedTimestamp = new Uint8Array(9 + (lastAccessDate ? 4 : 0) + (creationDate ? 4 : 0));
|
|
8653
8661
|
const extraFieldExtendedTimestampView = getDataView(rawExtraFieldExtendedTimestamp);
|
|
8654
8662
|
setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
|
|
8655
8663
|
setUint16(extraFieldExtendedTimestampView, 2, getLength(rawExtraFieldExtendedTimestamp) - 4);
|
|
8656
|
-
|
|
8664
|
+
extraFieldExtendedTimestampFlag = 0x1 + (lastAccessDate ? 0x2 : 0) + (creationDate ? 0x4 : 0);
|
|
8657
8665
|
setUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag);
|
|
8658
|
-
|
|
8666
|
+
let offset = 5;
|
|
8667
|
+
setUint32(extraFieldExtendedTimestampView, offset, Math.floor(lastModDate.getTime() / 1000));
|
|
8668
|
+
offset += 4;
|
|
8659
8669
|
if (lastAccessDate) {
|
|
8660
|
-
setUint32(extraFieldExtendedTimestampView,
|
|
8670
|
+
setUint32(extraFieldExtendedTimestampView, offset, Math.floor(lastAccessDate.getTime() / 1000));
|
|
8671
|
+
offset += 4;
|
|
8661
8672
|
}
|
|
8662
8673
|
if (creationDate) {
|
|
8663
|
-
setUint32(extraFieldExtendedTimestampView,
|
|
8674
|
+
setUint32(extraFieldExtendedTimestampView, offset, Math.floor(creationDate.getTime() / 1000));
|
|
8664
8675
|
}
|
|
8665
8676
|
try {
|
|
8666
8677
|
rawExtraFieldNTFS = new Uint8Array(36);
|
|
@@ -8741,6 +8752,7 @@
|
|
|
8741
8752
|
compressed,
|
|
8742
8753
|
version,
|
|
8743
8754
|
compressionMethod,
|
|
8755
|
+
extraFieldExtendedTimestampFlag,
|
|
8744
8756
|
rawExtraFieldExtendedTimestamp,
|
|
8745
8757
|
rawExtraFieldNTFS,
|
|
8746
8758
|
rawExtraFieldAES
|
|
@@ -8877,23 +8889,38 @@
|
|
|
8877
8889
|
let directoryDataLength = 0;
|
|
8878
8890
|
let directoryOffset = zipWriter.offset - diskOffset;
|
|
8879
8891
|
let filesLength = files.size;
|
|
8880
|
-
for (const [, {
|
|
8881
|
-
|
|
8882
|
-
|
|
8883
|
-
|
|
8884
|
-
|
|
8885
|
-
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8892
|
+
for (const [, fileEntry] of files) {
|
|
8893
|
+
const {
|
|
8894
|
+
rawFilename,
|
|
8895
|
+
rawExtraFieldZip64,
|
|
8896
|
+
rawExtraFieldAES,
|
|
8897
|
+
rawComment,
|
|
8898
|
+
rawExtraFieldNTFS,
|
|
8899
|
+
rawExtraField,
|
|
8900
|
+
extendedTimestamp,
|
|
8901
|
+
extraFieldExtendedTimestampFlag,
|
|
8902
|
+
lastModDate
|
|
8903
|
+
} = fileEntry;
|
|
8904
|
+
let rawExtraFieldTimestamp;
|
|
8905
|
+
if (extendedTimestamp) {
|
|
8906
|
+
rawExtraFieldTimestamp = new Uint8Array(9);
|
|
8907
|
+
const extraFieldExtendedTimestampView = getDataView(rawExtraFieldTimestamp);
|
|
8908
|
+
setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
|
|
8909
|
+
setUint16(extraFieldExtendedTimestampView, 2, 5);
|
|
8910
|
+
setUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag);
|
|
8911
|
+
setUint32(extraFieldExtendedTimestampView, 5, Math.floor(lastModDate.getTime() / 1000));
|
|
8912
|
+
} else {
|
|
8913
|
+
rawExtraFieldTimestamp = new Uint8Array();
|
|
8914
|
+
}
|
|
8915
|
+
fileEntry.rawExtraFieldCDExtendedTimestamp = rawExtraFieldTimestamp;
|
|
8889
8916
|
directoryDataLength += 46 +
|
|
8890
8917
|
getLength(
|
|
8891
8918
|
rawFilename,
|
|
8892
8919
|
rawComment,
|
|
8893
8920
|
rawExtraFieldZip64,
|
|
8894
8921
|
rawExtraFieldAES,
|
|
8895
|
-
rawExtraFieldExtendedTimestamp,
|
|
8896
8922
|
rawExtraFieldNTFS,
|
|
8923
|
+
rawExtraFieldTimestamp,
|
|
8897
8924
|
rawExtraField);
|
|
8898
8925
|
}
|
|
8899
8926
|
const directoryArray = new Uint8Array(directoryDataLength);
|
|
@@ -8906,6 +8933,7 @@
|
|
|
8906
8933
|
rawFilename,
|
|
8907
8934
|
rawExtraFieldZip64,
|
|
8908
8935
|
rawExtraFieldAES,
|
|
8936
|
+
rawExtraFieldCDExtendedTimestamp,
|
|
8909
8937
|
rawExtraFieldNTFS,
|
|
8910
8938
|
rawExtraField,
|
|
8911
8939
|
rawComment,
|
|
@@ -8920,24 +8948,11 @@
|
|
|
8920
8948
|
msDosCompatible,
|
|
8921
8949
|
internalFileAttribute,
|
|
8922
8950
|
externalFileAttribute,
|
|
8923
|
-
extendedTimestamp,
|
|
8924
|
-
lastModDate,
|
|
8925
8951
|
diskNumberStart,
|
|
8926
8952
|
uncompressedSize,
|
|
8927
8953
|
compressedSize
|
|
8928
8954
|
} = fileEntry;
|
|
8929
|
-
|
|
8930
|
-
if (extendedTimestamp) {
|
|
8931
|
-
rawExtraFieldExtendedTimestamp = new Uint8Array(9);
|
|
8932
|
-
const extraFieldExtendedTimestampView = getDataView(rawExtraFieldExtendedTimestamp);
|
|
8933
|
-
setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);
|
|
8934
|
-
setUint16(extraFieldExtendedTimestampView, 2, getLength(rawExtraFieldExtendedTimestamp) - 4);
|
|
8935
|
-
setUint8(extraFieldExtendedTimestampView, 4, 0x1);
|
|
8936
|
-
setUint32(extraFieldExtendedTimestampView, 5, Math.floor(lastModDate.getTime() / 1000));
|
|
8937
|
-
} else {
|
|
8938
|
-
rawExtraFieldExtendedTimestamp = new Uint8Array();
|
|
8939
|
-
}
|
|
8940
|
-
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraField);
|
|
8955
|
+
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS, rawExtraField);
|
|
8941
8956
|
setUint32(directoryView, offset, CENTRAL_FILE_HEADER_SIGNATURE);
|
|
8942
8957
|
setUint16(directoryView, offset + 4, versionMadeBy);
|
|
8943
8958
|
const headerView = getDataView(headerArray);
|
|
@@ -8961,9 +8976,9 @@
|
|
|
8961
8976
|
arraySet(directoryArray, rawFilename, offset + 46);
|
|
8962
8977
|
arraySet(directoryArray, rawExtraFieldZip64, offset + 46 + getLength(rawFilename));
|
|
8963
8978
|
arraySet(directoryArray, rawExtraFieldAES, offset + 46 + getLength(rawFilename, rawExtraFieldZip64));
|
|
8964
|
-
arraySet(directoryArray,
|
|
8965
|
-
arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES,
|
|
8966
|
-
arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES,
|
|
8979
|
+
arraySet(directoryArray, rawExtraFieldCDExtendedTimestamp, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES));
|
|
8980
|
+
arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp));
|
|
8981
|
+
arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS));
|
|
8967
8982
|
arraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength);
|
|
8968
8983
|
const directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
8969
8984
|
if (offset - directoryDiskOffset > writer.availableSize) {
|