@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.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;
|
|
@@ -2558,6 +2559,7 @@
|
|
|
2558
2559
|
const ERR_HTTP_STATUS = "HTTP error ";
|
|
2559
2560
|
const ERR_HTTP_RANGE = "HTTP Range not supported";
|
|
2560
2561
|
const ERR_ITERATOR_COMPLETED_TOO_SOON = "Writer iterator completed too soon";
|
|
2562
|
+
const ERR_WRITER_NOT_INITIALIZED = "Writer not initialized";
|
|
2561
2563
|
|
|
2562
2564
|
const CONTENT_TYPE_TEXT_PLAIN = "text/plain";
|
|
2563
2565
|
const HTTP_HEADER_CONTENT_LENGTH = "Content-Length";
|
|
@@ -2595,8 +2597,10 @@
|
|
|
2595
2597
|
async pull(controller) {
|
|
2596
2598
|
const { offset = 0, size, diskNumberStart } = readable;
|
|
2597
2599
|
const { chunkOffset } = this;
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
+
const dataSize = size === UNDEFINED_VALUE ? chunkSize : Math.min(chunkSize, size - chunkOffset);
|
|
2601
|
+
const data = await readUint8Array(reader, offset + chunkOffset, dataSize, diskNumberStart);
|
|
2602
|
+
controller.enqueue(data);
|
|
2603
|
+
if ((chunkOffset + chunkSize > size) || (size === UNDEFINED_VALUE && !data.length && dataSize)) {
|
|
2600
2604
|
controller.close();
|
|
2601
2605
|
} else {
|
|
2602
2606
|
this.chunkOffset += chunkSize;
|
|
@@ -2614,6 +2618,9 @@
|
|
|
2614
2618
|
const writer = this;
|
|
2615
2619
|
const writable = new WritableStream({
|
|
2616
2620
|
write(chunk) {
|
|
2621
|
+
if (!writer.initialized) {
|
|
2622
|
+
throw new Error(ERR_WRITER_NOT_INITIALIZED);
|
|
2623
|
+
}
|
|
2617
2624
|
return writer.writeUint8Array(chunk);
|
|
2618
2625
|
}
|
|
2619
2626
|
});
|
|
@@ -3376,12 +3383,14 @@
|
|
|
3376
3383
|
const PROPERTY_NAME_VERSION = "version";
|
|
3377
3384
|
const PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy";
|
|
3378
3385
|
const PROPERTY_NAME_ZIPCRYPTO = "zipCrypto";
|
|
3386
|
+
const PROPERTY_NAME_DIRECTORY = "directory";
|
|
3387
|
+
const PROPERTY_NAME_EXECUTABLE = "executable";
|
|
3379
3388
|
|
|
3380
3389
|
const PROPERTY_NAMES = [
|
|
3381
3390
|
PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,
|
|
3382
3391
|
PROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,
|
|
3383
3392
|
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,
|
|
3393
|
+
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
3394
|
|
|
3386
3395
|
class Entry {
|
|
3387
3396
|
|
|
@@ -4226,10 +4235,37 @@
|
|
|
4226
4235
|
|
|
4227
4236
|
async function addFile(zipWriter, name, reader, options) {
|
|
4228
4237
|
name = name.trim();
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4238
|
+
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
4239
|
+
const versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? 20 : 768);
|
|
4240
|
+
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
4241
|
+
if (versionMadeBy > MAX_16_BITS) {
|
|
4242
|
+
throw new Error(ERR_INVALID_VERSION);
|
|
4243
|
+
}
|
|
4244
|
+
let externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTES, 0);
|
|
4245
|
+
if (externalFileAttributes === 0) {
|
|
4246
|
+
externalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);
|
|
4247
|
+
}
|
|
4248
|
+
if (!options.directory && name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
4249
|
+
options.directory = true;
|
|
4250
|
+
}
|
|
4251
|
+
const directory = getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY);
|
|
4252
|
+
if (directory) {
|
|
4253
|
+
if (!name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
4254
|
+
name += DIRECTORY_SIGNATURE;
|
|
4255
|
+
}
|
|
4256
|
+
if (externalFileAttributes === 0) {
|
|
4257
|
+
if (msDosCompatible) {
|
|
4258
|
+
externalFileAttributes = FILE_ATTR_MSDOS_DIR_MASK;
|
|
4259
|
+
} else {
|
|
4260
|
+
externalFileAttributes = FILE_ATTR_UNIX_DIR_MASK << 16;
|
|
4261
|
+
}
|
|
4262
|
+
}
|
|
4263
|
+
} else if (!msDosCompatible && externalFileAttributes === 0) {
|
|
4264
|
+
if (executable) {
|
|
4265
|
+
externalFileAttributes = (FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_DEFAULT_MASK) << 16;
|
|
4266
|
+
} else {
|
|
4267
|
+
externalFileAttributes = FILE_ATTR_UNIX_DEFAULT_MASK << 16;
|
|
4268
|
+
}
|
|
4233
4269
|
}
|
|
4234
4270
|
const encode = getOptionValue(zipWriter, options, "encodeText", encodeText);
|
|
4235
4271
|
let rawFilename = encode(name);
|
|
@@ -4251,22 +4287,13 @@
|
|
|
4251
4287
|
if (version > MAX_16_BITS) {
|
|
4252
4288
|
throw new Error(ERR_INVALID_VERSION);
|
|
4253
4289
|
}
|
|
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
4290
|
const lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());
|
|
4259
4291
|
const lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);
|
|
4260
4292
|
const creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);
|
|
4261
|
-
const msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);
|
|
4262
4293
|
let internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTES, 0);
|
|
4263
4294
|
if (internalFileAttributes === 0) {
|
|
4264
4295
|
internalFileAttributes = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);
|
|
4265
4296
|
}
|
|
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
4297
|
const passThrough = getOptionValue(zipWriter, options, "passThrough");
|
|
4271
4298
|
let password, rawPassword;
|
|
4272
4299
|
if (!passThrough) {
|
|
@@ -4589,6 +4616,7 @@
|
|
|
4589
4616
|
zipCrypto,
|
|
4590
4617
|
dataDescriptor,
|
|
4591
4618
|
directory,
|
|
4619
|
+
executable,
|
|
4592
4620
|
versionMadeBy,
|
|
4593
4621
|
rawComment,
|
|
4594
4622
|
rawExtraField,
|
|
@@ -4610,6 +4638,7 @@
|
|
|
4610
4638
|
versionMadeBy,
|
|
4611
4639
|
zip64,
|
|
4612
4640
|
directory: Boolean(directory),
|
|
4641
|
+
executable: Boolean(executable),
|
|
4613
4642
|
filenameUTF8: true,
|
|
4614
4643
|
rawFilename,
|
|
4615
4644
|
commentUTF8: true,
|
|
@@ -5070,13 +5099,11 @@
|
|
|
5070
5099
|
rawComment,
|
|
5071
5100
|
versionMadeBy,
|
|
5072
5101
|
headerArray,
|
|
5073
|
-
directory,
|
|
5074
5102
|
zip64,
|
|
5075
5103
|
zip64UncompressedSize,
|
|
5076
5104
|
zip64CompressedSize,
|
|
5077
5105
|
zip64DiskNumberStart,
|
|
5078
5106
|
zip64Offset,
|
|
5079
|
-
msDosCompatible,
|
|
5080
5107
|
internalFileAttributes,
|
|
5081
5108
|
externalFileAttributes,
|
|
5082
5109
|
diskNumberStart,
|
|
@@ -5100,8 +5127,6 @@
|
|
|
5100
5127
|
setUint16(directoryView, offset + 36, internalFileAttributes);
|
|
5101
5128
|
if (externalFileAttributes) {
|
|
5102
5129
|
setUint32(directoryView, offset + 38, externalFileAttributes);
|
|
5103
|
-
} else if (directory && msDosCompatible) {
|
|
5104
|
-
setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);
|
|
5105
5130
|
}
|
|
5106
5131
|
setUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);
|
|
5107
5132
|
arraySet(directoryArray, rawFilename, offset + 46);
|
|
@@ -5312,6 +5337,7 @@
|
|
|
5312
5337
|
exports.ERR_UNSUPPORTED_COMPRESSION = ERR_UNSUPPORTED_COMPRESSION;
|
|
5313
5338
|
exports.ERR_UNSUPPORTED_ENCRYPTION = ERR_UNSUPPORTED_ENCRYPTION;
|
|
5314
5339
|
exports.ERR_UNSUPPORTED_FORMAT = ERR_UNSUPPORTED_FORMAT;
|
|
5340
|
+
exports.ERR_WRITER_NOT_INITIALIZED = ERR_WRITER_NOT_INITIALIZED;
|
|
5315
5341
|
exports.HttpRangeReader = HttpRangeReader;
|
|
5316
5342
|
exports.HttpReader = HttpReader;
|
|
5317
5343
|
exports.Reader = Reader;
|