@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/lib/core/constants.js
CHANGED
|
@@ -60,6 +60,7 @@ const BITFLAG_LANG_ENCODING_FLAG = 0x0800;
|
|
|
60
60
|
const FILE_ATTR_MSDOS_DIR_MASK = 0x10;
|
|
61
61
|
const FILE_ATTR_UNIX_DIR_MASK = 0x4000;
|
|
62
62
|
const FILE_ATTR_UNIX_EXECUTABLE_MASK = 0o111;
|
|
63
|
+
const FILE_ATTR_UNIX_DEFAULT_MASK = 0o644;
|
|
63
64
|
|
|
64
65
|
const VERSION_DEFLATE = 0x14;
|
|
65
66
|
const VERSION_ZIP64 = 0x2D;
|
|
@@ -106,6 +107,7 @@ export {
|
|
|
106
107
|
FILE_ATTR_MSDOS_DIR_MASK,
|
|
107
108
|
FILE_ATTR_UNIX_DIR_MASK,
|
|
108
109
|
FILE_ATTR_UNIX_EXECUTABLE_MASK,
|
|
110
|
+
FILE_ATTR_UNIX_DEFAULT_MASK,
|
|
109
111
|
VERSION_DEFLATE,
|
|
110
112
|
VERSION_ZIP64,
|
|
111
113
|
VERSION_AES,
|
package/lib/core/zip-entry.js
CHANGED
|
@@ -50,12 +50,14 @@ const PROPERTY_NAME_ENCRYPTED = "encrypted";
|
|
|
50
50
|
const PROPERTY_NAME_VERSION = "version";
|
|
51
51
|
const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
|
|
52
52
|
const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
|
|
53
|
+
const PROPERTY_NAME_DIRECTORY = "directory";
|
|
54
|
+
const PROPERTY_NAME_EXECUTABLE = "executable";
|
|
53
55
|
|
|
54
56
|
const PROPERTY_NAMES = [
|
|
55
57
|
PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
|
|
56
58
|
PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
|
|
57
59
|
PROPERTY_NAME_LAST_ACCESS_DATE, PROPERTY_NAME_CREATION_DATE, PROPERTY_NAME_OFFSET, PROPERTY_NAME_DISK_NUMBER_START,
|
|
58
|
-
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,
|
|
60
|
+
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"];
|
|
59
61
|
|
|
60
62
|
class Entry {
|
|
61
63
|
|
|
@@ -90,5 +92,7 @@ export {
|
|
|
90
92
|
PROPERTY_NAME_VERSION,
|
|
91
93
|
PROPERTY_NAME_VERSION_MADE_BY,
|
|
92
94
|
PROPERTY_NAME_ZIPCRYPTO,
|
|
95
|
+
PROPERTY_NAME_DIRECTORY,
|
|
96
|
+
PROPERTY_NAME_EXECUTABLE,
|
|
93
97
|
Entry
|
|
94
98
|
};
|
package/lib/core/zip-writer.js
CHANGED
|
@@ -56,6 +56,9 @@ import {
|
|
|
56
56
|
BITFLAG_DATA_DESCRIPTOR,
|
|
57
57
|
BITFLAG_LANG_ENCODING_FLAG,
|
|
58
58
|
FILE_ATTR_MSDOS_DIR_MASK,
|
|
59
|
+
FILE_ATTR_UNIX_DIR_MASK,
|
|
60
|
+
FILE_ATTR_UNIX_EXECUTABLE_MASK,
|
|
61
|
+
FILE_ATTR_UNIX_DEFAULT_MASK,
|
|
59
62
|
VERSION_DEFLATE,
|
|
60
63
|
VERSION_ZIP64,
|
|
61
64
|
VERSION_AES,
|
|
@@ -92,6 +95,8 @@ import {
|
|
|
92
95
|
PROPERTY_NAME_VERSION,
|
|
93
96
|
PROPERTY_NAME_VERSION_MADE_BY,
|
|
94
97
|
PROPERTY_NAME_ZIPCRYPTO,
|
|
98
|
+
PROPERTY_NAME_DIRECTORY,
|
|
99
|
+
PROPERTY_NAME_EXECUTABLE,
|
|
95
100
|
Entry
|
|
96
101
|
} from "./zip-entry.js";
|
|
97
102
|
|
|
@@ -227,10 +232,37 @@ export {
|
|
|
227
232
|
|
|
228
233
|
async function addFile(zipWriter, name, reader, options) {
|
|
229
234
|
name = name.trim();
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
235
|
+
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
236
|
+
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
237
|
+
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
238
|
+
if (versionMadeBy > MAX_16_BITS) {
|
|
239
|
+
throw new Error(ERR_INVALID_VERSION);
|
|
240
|
+
}
|
|
241
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
242
|
+
if (externalFileAttributes === 0) {
|
|
243
|
+
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
244
|
+
}
|
|
245
|
+
if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
246
|
+
options.directory = true;
|
|
247
|
+
}
|
|
248
|
+
const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
|
|
249
|
+
if (directory) {
|
|
250
|
+
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
251
|
+
name += DIRECTORY_SIGNATURE;
|
|
252
|
+
}
|
|
253
|
+
if (externalFileAttributes === 0) {
|
|
254
|
+
if (msDosCompatible) {
|
|
255
|
+
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
256
|
+
} else {
|
|
257
|
+
externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
} else if (!msDosCompatible && externalFileAttributes === 0) {
|
|
261
|
+
if (executable) {
|
|
262
|
+
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
263
|
+
} else {
|
|
264
|
+
externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
|
|
265
|
+
}
|
|
234
266
|
}
|
|
235
267
|
const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
|
|
236
268
|
let rawFilename = encode(name);
|
|
@@ -252,22 +284,13 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
252
284
|
if (version > MAX_16_BITS) {
|
|
253
285
|
throw new Error(ERR_INVALID_VERSION);
|
|
254
286
|
}
|
|
255
|
-
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20);
|
|
256
|
-
if (versionMadeBy > MAX_16_BITS) {
|
|
257
|
-
throw new Error(ERR_INVALID_VERSION);
|
|
258
|
-
}
|
|
259
287
|
const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
|
|
260
288
|
const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
261
289
|
const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
262
|
-
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
|
|
263
290
|
let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
264
291
|
if (internalFileAttributes === 0) {
|
|
265
292
|
internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
|
|
266
293
|
}
|
|
267
|
-
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
268
|
-
if (externalFileAttributes === 0) {
|
|
269
|
-
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
270
|
-
}
|
|
271
294
|
const passThrough = getOptionValue(zipWriter, options, "passThrough");
|
|
272
295
|
let password, rawPassword;
|
|
273
296
|
if (!passThrough) {
|
|
@@ -590,6 +613,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
|
|
|
590
613
|
zipCrypto,
|
|
591
614
|
dataDescriptor,
|
|
592
615
|
directory,
|
|
616
|
+
executable,
|
|
593
617
|
versionMadeBy,
|
|
594
618
|
rawComment,
|
|
595
619
|
rawExtraField,
|
|
@@ -611,6 +635,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryI
|
|
|
611
635
|
versionMadeBy,
|
|
612
636
|
zip64,
|
|
613
637
|
directory: Boolean(directory),
|
|
638
|
+
executable: Boolean(executable),
|
|
614
639
|
filenameUTF8: true,
|
|
615
640
|
rawFilename,
|
|
616
641
|
commentUTF8: true,
|
|
@@ -1071,13 +1096,11 @@ async function closeFile(zipWriter, comment, options) {
|
|
|
1071
1096
|
rawComment,
|
|
1072
1097
|
versionMadeBy,
|
|
1073
1098
|
headerArray,
|
|
1074
|
-
directory,
|
|
1075
1099
|
zip64,
|
|
1076
1100
|
zip64UncompressedSize,
|
|
1077
1101
|
zip64CompressedSize,
|
|
1078
1102
|
zip64DiskNumberStart,
|
|
1079
1103
|
zip64Offset,
|
|
1080
|
-
msDosCompatible,
|
|
1081
1104
|
internalFileAttributes,
|
|
1082
1105
|
externalFileAttributes,
|
|
1083
1106
|
diskNumberStart,
|
|
@@ -1101,8 +1124,6 @@ async function closeFile(zipWriter, comment, options) {
|
|
|
1101
1124
|
setUint16(directoryView, offset + 36, internalFileAttributes);
|
|
1102
1125
|
if (externalFileAttributes) {
|
|
1103
1126
|
setUint32(directoryView, offset + 38, externalFileAttributes);
|
|
1104
|
-
} else if (directory && msDosCompatible) {
|
|
1105
|
-
setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
|
|
1106
1127
|
}
|
|
1107
1128
|
setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
1108
1129
|
arraySet(directoryArray, rawFilename, offset + 46);
|
package/package.json
CHANGED