@zip.js/zip.js 2.7.56 → 2.7.58
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/.github/workflows/publish.yml +17 -0
- package/deno.json +1 -1
- package/dist/zip-fs-full.js +46 -20
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +46 -20
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +46 -20
- 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 +46 -20
- package/dist/zip.min.js +1 -1
- package/index-fflate.js +2 -1
- package/index.cjs +46 -20
- package/index.d.ts +55 -47
- package/index.js +2 -1
- package/index.min.js +1 -1
- package/lib/core/constants.js +2 -0
- package/lib/core/io.js +10 -3
- package/lib/core/zip-entry.js +5 -1
- package/lib/core/zip-writer.js +38 -17
- package/package.json +7 -7
package/dist/zip-full.js
CHANGED
|
@@ -4284,6 +4284,7 @@
|
|
|
4284
4284
|
const FILE_ATTR_MSDOS_DIR_MASK = 0x10;
|
|
4285
4285
|
const FILE_ATTR_UNIX_DIR_MASK = 0x4000;
|
|
4286
4286
|
const FILE_ATTR_UNIX_EXECUTABLE_MASK = 0o111;
|
|
4287
|
+
const FILE_ATTR_UNIX_DEFAULT_MASK = 0o644;
|
|
4287
4288
|
|
|
4288
4289
|
const VERSION_DEFLATE = 0x14;
|
|
4289
4290
|
const VERSION_ZIP64 = 0x2D;
|
|
@@ -6773,6 +6774,7 @@
|
|
|
6773
6774
|
const ERR_HTTP_STATUS = "HTTP error ";
|
|
6774
6775
|
const ERR_HTTP_RANGE = "HTTP Range not supported";
|
|
6775
6776
|
const ERR_ITERATOR_COMPLETED_TOO_SOON = "Writer iterator completed too soon";
|
|
6777
|
+
const ERR_WRITER_NOT_INITIALIZED = "Writer not initialized";
|
|
6776
6778
|
|
|
6777
6779
|
const CONTENT_TYPE_TEXT_PLAIN = "text/plain";
|
|
6778
6780
|
const HTTP_HEADER_CONTENT_LENGTH = "Content-Length";
|
|
@@ -6810,8 +6812,10 @@
|
|
|
6810
6812
|
async pull(controller) {
|
|
6811
6813
|
const { offset = 0, size, diskNumberStart } = readable;
|
|
6812
6814
|
const { chunkOffset } = this;
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
+
const dataSize = size === UNDEFINED_VALUE ? chunkSize : Math.min(chunkSize, size - chunkOffset);
|
|
6816
|
+
const data = await readUint8Array(reader, offset + chunkOffset, dataSize, diskNumberStart);
|
|
6817
|
+
controller.enqueue(data);
|
|
6818
|
+
if ((chunkOffset + chunkSize > size) || (size === UNDEFINED_VALUE && !data.length && dataSize)) {
|
|
6815
6819
|
controller.close();
|
|
6816
6820
|
} else {
|
|
6817
6821
|
this.chunkOffset += chunkSize;
|
|
@@ -6829,6 +6833,9 @@
|
|
|
6829
6833
|
const writer = this;
|
|
6830
6834
|
const writable = new WritableStream({
|
|
6831
6835
|
write(chunk) {
|
|
6836
|
+
if (!writer.initialized) {
|
|
6837
|
+
throw new Error(ERR_WRITER_NOT_INITIALIZED);
|
|
6838
|
+
}
|
|
6832
6839
|
return writer.writeUint8Array(chunk);
|
|
6833
6840
|
}
|
|
6834
6841
|
});
|
|
@@ -7591,12 +7598,14 @@
|
|
|
7591
7598
|
const PROPERTY_NAME_VERSION = "version";
|
|
7592
7599
|
const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
|
|
7593
7600
|
const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
|
|
7601
|
+
const PROPERTY_NAME_DIRECTORY = "directory";
|
|
7602
|
+
const PROPERTY_NAME_EXECUTABLE = "executable";
|
|
7594
7603
|
|
|
7595
7604
|
const PROPERTY_NAMES = [
|
|
7596
7605
|
PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
|
|
7597
7606
|
PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
|
|
7598
7607
|
PROPERTY_NAME_LAST_ACCESS_DATE, PROPERTY_NAME_CREATION_DATE, PROPERTY_NAME_OFFSET, PROPERTY_NAME_DISK_NUMBER_START,
|
|
7599
|
-
PROPERTY_NAME_DISK_NUMBER_START, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_MS_DOS_COMPATIBLE, PROPERTY_NAME_ZIP64, PROPERTY_NAME_ENCRYPTED, PROPERTY_NAME_VERSION, PROPERTY_NAME_VERSION_MADE_BY, PROPERTY_NAME_ZIPCRYPTO,
|
|
7608
|
+
PROPERTY_NAME_DISK_NUMBER_START, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, PROPERTY_NAME_MS_DOS_COMPATIBLE, PROPERTY_NAME_ZIP64, PROPERTY_NAME_ENCRYPTED, PROPERTY_NAME_VERSION, PROPERTY_NAME_VERSION_MADE_BY, PROPERTY_NAME_ZIPCRYPTO, PROPERTY_NAME_DIRECTORY, PROPERTY_NAME_EXECUTABLE, "bitFlag", "signature", "filenameUTF8", "commentUTF8", "compressionMethod", "extraField", "rawExtraField", "extraFieldZip64", "extraFieldUnicodePath", "extraFieldUnicodeComment", "extraFieldAES", "extraFieldNTFS", "extraFieldExtendedTimestamp"];
|
|
7600
7609
|
|
|
7601
7610
|
class Entry {
|
|
7602
7611
|
|
|
@@ -8441,10 +8450,37 @@
|
|
|
8441
8450
|
|
|
8442
8451
|
async function addFile(zipWriter, name, reader, options) {
|
|
8443
8452
|
name = name.trim();
|
|
8444
|
-
|
|
8445
|
-
|
|
8446
|
-
|
|
8447
|
-
|
|
8453
|
+
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
8454
|
+
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
8455
|
+
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
8456
|
+
if (versionMadeBy > MAX_16_BITS) {
|
|
8457
|
+
throw new Error(ERR_INVALID_VERSION);
|
|
8458
|
+
}
|
|
8459
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
8460
|
+
if (externalFileAttributes === 0) {
|
|
8461
|
+
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
8462
|
+
}
|
|
8463
|
+
if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
8464
|
+
options.directory = true;
|
|
8465
|
+
}
|
|
8466
|
+
const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
|
|
8467
|
+
if (directory) {
|
|
8468
|
+
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
8469
|
+
name += DIRECTORY_SIGNATURE;
|
|
8470
|
+
}
|
|
8471
|
+
if (externalFileAttributes === 0) {
|
|
8472
|
+
if (msDosCompatible) {
|
|
8473
|
+
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
8474
|
+
} else {
|
|
8475
|
+
externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
|
|
8476
|
+
}
|
|
8477
|
+
}
|
|
8478
|
+
} else if (!msDosCompatible && externalFileAttributes === 0) {
|
|
8479
|
+
if (executable) {
|
|
8480
|
+
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
8481
|
+
} else {
|
|
8482
|
+
externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
|
|
8483
|
+
}
|
|
8448
8484
|
}
|
|
8449
8485
|
const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
|
|
8450
8486
|
let rawFilename = encode(name);
|
|
@@ -8466,22 +8502,13 @@
|
|
|
8466
8502
|
if (version > MAX_16_BITS) {
|
|
8467
8503
|
throw new Error(ERR_INVALID_VERSION);
|
|
8468
8504
|
}
|
|
8469
|
-
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20);
|
|
8470
|
-
if (versionMadeBy > MAX_16_BITS) {
|
|
8471
|
-
throw new Error(ERR_INVALID_VERSION);
|
|
8472
|
-
}
|
|
8473
8505
|
const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
|
|
8474
8506
|
const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
8475
8507
|
const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
8476
|
-
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
|
|
8477
8508
|
let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
8478
8509
|
if (internalFileAttributes === 0) {
|
|
8479
8510
|
internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
|
|
8480
8511
|
}
|
|
8481
|
-
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
8482
|
-
if (externalFileAttributes === 0) {
|
|
8483
|
-
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
8484
|
-
}
|
|
8485
8512
|
const passThrough = getOptionValue(zipWriter, options, "passThrough");
|
|
8486
8513
|
let password, rawPassword;
|
|
8487
8514
|
if (!passThrough) {
|
|
@@ -8804,6 +8831,7 @@
|
|
|
8804
8831
|
zipCrypto,
|
|
8805
8832
|
dataDescriptor,
|
|
8806
8833
|
directory,
|
|
8834
|
+
executable,
|
|
8807
8835
|
versionMadeBy,
|
|
8808
8836
|
rawComment,
|
|
8809
8837
|
rawExtraField,
|
|
@@ -8825,6 +8853,7 @@
|
|
|
8825
8853
|
versionMadeBy,
|
|
8826
8854
|
zip64,
|
|
8827
8855
|
directory: Boolean(directory),
|
|
8856
|
+
executable: Boolean(executable),
|
|
8828
8857
|
filenameUTF8: true,
|
|
8829
8858
|
rawFilename,
|
|
8830
8859
|
commentUTF8: true,
|
|
@@ -9285,13 +9314,11 @@
|
|
|
9285
9314
|
rawComment,
|
|
9286
9315
|
versionMadeBy,
|
|
9287
9316
|
headerArray,
|
|
9288
|
-
directory,
|
|
9289
9317
|
zip64,
|
|
9290
9318
|
zip64UncompressedSize,
|
|
9291
9319
|
zip64CompressedSize,
|
|
9292
9320
|
zip64DiskNumberStart,
|
|
9293
9321
|
zip64Offset,
|
|
9294
|
-
msDosCompatible,
|
|
9295
9322
|
internalFileAttributes,
|
|
9296
9323
|
externalFileAttributes,
|
|
9297
9324
|
diskNumberStart,
|
|
@@ -9315,8 +9342,6 @@
|
|
|
9315
9342
|
setUint16(directoryView, offset + 36, internalFileAttributes);
|
|
9316
9343
|
if (externalFileAttributes) {
|
|
9317
9344
|
setUint32(directoryView, offset + 38, externalFileAttributes);
|
|
9318
|
-
} else if (directory && msDosCompatible) {
|
|
9319
|
-
setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
|
|
9320
9345
|
}
|
|
9321
9346
|
setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
9322
9347
|
arraySet(directoryArray, rawFilename, offset + 46);
|
|
@@ -9527,6 +9552,7 @@
|
|
|
9527
9552
|
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION;
|
|
9528
9553
|
exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
|
|
9529
9554
|
exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
|
|
9555
|
+
exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
|
|
9530
9556
|
exports.HttpRangeReader = HttpRangeReader;
|
|
9531
9557
|
exports.HttpReader = HttpReader;
|
|
9532
9558
|
exports.Reader = Reader;
|