@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-fs.js
CHANGED
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
const FILE_ATTR_MSDOS_DIR_MASK = 0x10;
|
|
70
70
|
const FILE_ATTR_UNIX_DIR_MASK = 0x4000;
|
|
71
71
|
const FILE_ATTR_UNIX_EXECUTABLE_MASK = 0o111;
|
|
72
|
+
const FILE_ATTR_UNIX_DEFAULT_MASK = 0o644;
|
|
72
73
|
|
|
73
74
|
const VERSION_DEFLATE = 0x14;
|
|
74
75
|
const VERSION_ZIP64 = 0x2D;
|
|
@@ -3376,12 +3377,14 @@
|
|
|
3376
3377
|
const PROPERTY_NAME_VERSION = "version";
|
|
3377
3378
|
const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
|
|
3378
3379
|
const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
|
|
3380
|
+
const PROPERTY_NAME_DIRECTORY = "directory";
|
|
3381
|
+
const PROPERTY_NAME_EXECUTABLE = "executable";
|
|
3379
3382
|
|
|
3380
3383
|
const PROPERTY_NAMES = [
|
|
3381
3384
|
PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
|
|
3382
3385
|
PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
|
|
3383
3386
|
PROPERTY_NAME_LAST_ACCESS_DATE, PROPERTY_NAME_CREATION_DATE, PROPERTY_NAME_OFFSET, PROPERTY_NAME_DISK_NUMBER_START,
|
|
3384
|
-
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,
|
|
3387
|
+
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"];
|
|
3385
3388
|
|
|
3386
3389
|
class Entry {
|
|
3387
3390
|
|
|
@@ -4226,10 +4229,37 @@
|
|
|
4226
4229
|
|
|
4227
4230
|
async function addFile(zipWriter, name, reader, options) {
|
|
4228
4231
|
name = name.trim();
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4232
|
+
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
4233
|
+
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
4234
|
+
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
4235
|
+
if (versionMadeBy > MAX_16_BITS) {
|
|
4236
|
+
throw new Error(ERR_INVALID_VERSION);
|
|
4237
|
+
}
|
|
4238
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
4239
|
+
if (externalFileAttributes === 0) {
|
|
4240
|
+
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
4241
|
+
}
|
|
4242
|
+
if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
4243
|
+
options.directory = true;
|
|
4244
|
+
}
|
|
4245
|
+
const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
|
|
4246
|
+
if (directory) {
|
|
4247
|
+
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
4248
|
+
name += DIRECTORY_SIGNATURE;
|
|
4249
|
+
}
|
|
4250
|
+
if (externalFileAttributes === 0) {
|
|
4251
|
+
if (msDosCompatible) {
|
|
4252
|
+
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
4253
|
+
} else {
|
|
4254
|
+
externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
|
|
4255
|
+
}
|
|
4256
|
+
}
|
|
4257
|
+
} else if (!msDosCompatible && externalFileAttributes === 0) {
|
|
4258
|
+
if (executable) {
|
|
4259
|
+
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
4260
|
+
} else {
|
|
4261
|
+
externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
|
|
4262
|
+
}
|
|
4233
4263
|
}
|
|
4234
4264
|
const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
|
|
4235
4265
|
let rawFilename = encode(name);
|
|
@@ -4251,22 +4281,13 @@
|
|
|
4251
4281
|
if (version > MAX_16_BITS) {
|
|
4252
4282
|
throw new Error(ERR_INVALID_VERSION);
|
|
4253
4283
|
}
|
|
4254
|
-
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20);
|
|
4255
|
-
if (versionMadeBy > MAX_16_BITS) {
|
|
4256
|
-
throw new Error(ERR_INVALID_VERSION);
|
|
4257
|
-
}
|
|
4258
4284
|
const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
|
|
4259
4285
|
const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
4260
4286
|
const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
4261
|
-
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
|
|
4262
4287
|
let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
4263
4288
|
if (internalFileAttributes === 0) {
|
|
4264
4289
|
internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
|
|
4265
4290
|
}
|
|
4266
|
-
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
4267
|
-
if (externalFileAttributes === 0) {
|
|
4268
|
-
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
4269
|
-
}
|
|
4270
4291
|
const passThrough = getOptionValue(zipWriter, options, "passThrough");
|
|
4271
4292
|
let password, rawPassword;
|
|
4272
4293
|
if (!passThrough) {
|
|
@@ -4589,6 +4610,7 @@
|
|
|
4589
4610
|
zipCrypto,
|
|
4590
4611
|
dataDescriptor,
|
|
4591
4612
|
directory,
|
|
4613
|
+
executable,
|
|
4592
4614
|
versionMadeBy,
|
|
4593
4615
|
rawComment,
|
|
4594
4616
|
rawExtraField,
|
|
@@ -4610,6 +4632,7 @@
|
|
|
4610
4632
|
versionMadeBy,
|
|
4611
4633
|
zip64,
|
|
4612
4634
|
directory: Boolean(directory),
|
|
4635
|
+
executable: Boolean(executable),
|
|
4613
4636
|
filenameUTF8: true,
|
|
4614
4637
|
rawFilename,
|
|
4615
4638
|
commentUTF8: true,
|
|
@@ -5070,13 +5093,11 @@
|
|
|
5070
5093
|
rawComment,
|
|
5071
5094
|
versionMadeBy,
|
|
5072
5095
|
headerArray,
|
|
5073
|
-
directory,
|
|
5074
5096
|
zip64,
|
|
5075
5097
|
zip64UncompressedSize,
|
|
5076
5098
|
zip64CompressedSize,
|
|
5077
5099
|
zip64DiskNumberStart,
|
|
5078
5100
|
zip64Offset,
|
|
5079
|
-
msDosCompatible,
|
|
5080
5101
|
internalFileAttributes,
|
|
5081
5102
|
externalFileAttributes,
|
|
5082
5103
|
diskNumberStart,
|
|
@@ -5100,8 +5121,6 @@
|
|
|
5100
5121
|
setUint16(directoryView, offset + 36, internalFileAttributes);
|
|
5101
5122
|
if (externalFileAttributes) {
|
|
5102
5123
|
setUint32(directoryView, offset + 38, externalFileAttributes);
|
|
5103
|
-
} else if (directory && msDosCompatible) {
|
|
5104
|
-
setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
|
|
5105
5124
|
}
|
|
5106
5125
|
setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
5107
5126
|
arraySet(directoryArray, rawFilename, offset + 46);
|