@zip.js/zip.js 2.7.56 → 2.7.57
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/deno.json +1 -1
- package/dist/zip-fs-full.js +37 -18
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +37 -18
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +37 -18
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +37 -18
- package/dist/zip.min.js +1 -1
- package/index.cjs +37 -18
- package/index.d.ts +7 -1
- package/index.min.js +1 -1
- package/lib/core/constants.js +2 -0
- package/lib/core/zip-entry.js +5 -1
- package/lib/core/zip-writer.js +38 -17
- package/package.json +1 -1
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;
|
|
@@ -7591,12 +7592,14 @@
|
|
|
7591
7592
|
const PROPERTY_NAME_VERSION = "version";
|
|
7592
7593
|
const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
|
|
7593
7594
|
const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
|
|
7595
|
+
const PROPERTY_NAME_DIRECTORY = "directory";
|
|
7596
|
+
const PROPERTY_NAME_EXECUTABLE = "executable";
|
|
7594
7597
|
|
|
7595
7598
|
const PROPERTY_NAMES = [
|
|
7596
7599
|
PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
|
|
7597
7600
|
PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
|
|
7598
7601
|
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,
|
|
7602
|
+
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
7603
|
|
|
7601
7604
|
class Entry {
|
|
7602
7605
|
|
|
@@ -8441,10 +8444,37 @@
|
|
|
8441
8444
|
|
|
8442
8445
|
async function addFile(zipWriter, name, reader, options) {
|
|
8443
8446
|
name = name.trim();
|
|
8444
|
-
|
|
8445
|
-
|
|
8446
|
-
|
|
8447
|
-
|
|
8447
|
+
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
8448
|
+
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
8449
|
+
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
8450
|
+
if (versionMadeBy > MAX_16_BITS) {
|
|
8451
|
+
throw new Error(ERR_INVALID_VERSION);
|
|
8452
|
+
}
|
|
8453
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
8454
|
+
if (externalFileAttributes === 0) {
|
|
8455
|
+
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
8456
|
+
}
|
|
8457
|
+
if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
8458
|
+
options.directory = true;
|
|
8459
|
+
}
|
|
8460
|
+
const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
|
|
8461
|
+
if (directory) {
|
|
8462
|
+
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
8463
|
+
name += DIRECTORY_SIGNATURE;
|
|
8464
|
+
}
|
|
8465
|
+
if (externalFileAttributes === 0) {
|
|
8466
|
+
if (msDosCompatible) {
|
|
8467
|
+
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
8468
|
+
} else {
|
|
8469
|
+
externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
|
|
8470
|
+
}
|
|
8471
|
+
}
|
|
8472
|
+
} else if (!msDosCompatible && externalFileAttributes === 0) {
|
|
8473
|
+
if (executable) {
|
|
8474
|
+
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
8475
|
+
} else {
|
|
8476
|
+
externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
|
|
8477
|
+
}
|
|
8448
8478
|
}
|
|
8449
8479
|
const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
|
|
8450
8480
|
let rawFilename = encode(name);
|
|
@@ -8466,22 +8496,13 @@
|
|
|
8466
8496
|
if (version > MAX_16_BITS) {
|
|
8467
8497
|
throw new Error(ERR_INVALID_VERSION);
|
|
8468
8498
|
}
|
|
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
8499
|
const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
|
|
8474
8500
|
const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
8475
8501
|
const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
8476
|
-
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
|
|
8477
8502
|
let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
8478
8503
|
if (internalFileAttributes === 0) {
|
|
8479
8504
|
internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
|
|
8480
8505
|
}
|
|
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
8506
|
const passThrough = getOptionValue(zipWriter, options, "passThrough");
|
|
8486
8507
|
let password, rawPassword;
|
|
8487
8508
|
if (!passThrough) {
|
|
@@ -8804,6 +8825,7 @@
|
|
|
8804
8825
|
zipCrypto,
|
|
8805
8826
|
dataDescriptor,
|
|
8806
8827
|
directory,
|
|
8828
|
+
executable,
|
|
8807
8829
|
versionMadeBy,
|
|
8808
8830
|
rawComment,
|
|
8809
8831
|
rawExtraField,
|
|
@@ -8825,6 +8847,7 @@
|
|
|
8825
8847
|
versionMadeBy,
|
|
8826
8848
|
zip64,
|
|
8827
8849
|
directory: Boolean(directory),
|
|
8850
|
+
executable: Boolean(executable),
|
|
8828
8851
|
filenameUTF8: true,
|
|
8829
8852
|
rawFilename,
|
|
8830
8853
|
commentUTF8: true,
|
|
@@ -9285,13 +9308,11 @@
|
|
|
9285
9308
|
rawComment,
|
|
9286
9309
|
versionMadeBy,
|
|
9287
9310
|
headerArray,
|
|
9288
|
-
directory,
|
|
9289
9311
|
zip64,
|
|
9290
9312
|
zip64UncompressedSize,
|
|
9291
9313
|
zip64CompressedSize,
|
|
9292
9314
|
zip64DiskNumberStart,
|
|
9293
9315
|
zip64Offset,
|
|
9294
|
-
msDosCompatible,
|
|
9295
9316
|
internalFileAttributes,
|
|
9296
9317
|
externalFileAttributes,
|
|
9297
9318
|
diskNumberStart,
|
|
@@ -9315,8 +9336,6 @@
|
|
|
9315
9336
|
setUint16(directoryView, offset + 36, internalFileAttributes);
|
|
9316
9337
|
if (externalFileAttributes) {
|
|
9317
9338
|
setUint32(directoryView, offset + 38, externalFileAttributes);
|
|
9318
|
-
} else if (directory && msDosCompatible) {
|
|
9319
|
-
setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
|
|
9320
9339
|
}
|
|
9321
9340
|
setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
9322
9341
|
arraySet(directoryArray, rawFilename, offset + 46);
|