@zip.js/zip.js 2.8.58 → 2.8.59
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-core-external.js +157 -39
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +171 -38
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +157 -40
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +156 -39
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +157 -40
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +171 -39
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +171 -39
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +171 -38
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +171 -38
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +171 -38
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +171 -39
- package/index-native.min.js +1 -1
- package/index.cjs +171 -39
- package/index.d.cts +184 -1
- package/index.d.ts +184 -1
- package/index.min.js +1 -1
- package/lib/core/constants.js +2 -0
- package/lib/core/options.js +2 -0
- package/lib/core/zip-reader.js +143 -33
- package/lib/core/zip-writer.js +13 -6
- package/lib/zip-core-reader.js +16 -1
- package/package.json +1 -1
|
@@ -74,6 +74,7 @@ const BITFLAG_LEVEL_MAX_MASK = 0b010;
|
|
|
74
74
|
const BITFLAG_LEVEL_FAST_MASK = 0b100;
|
|
75
75
|
const BITFLAG_LEVEL_SUPER_FAST_MASK = 0b110;
|
|
76
76
|
const BITFLAG_DATA_DESCRIPTOR = 0b1000;
|
|
77
|
+
const BITFLAG_COMPRESSED_PATCHED_DATA = 0b100000;
|
|
77
78
|
const BITFLAG_STRONG_ENCRYPTION = 0b1000000;
|
|
78
79
|
const BITFLAG_LANG_ENCODING_FLAG = 0b100000000000;
|
|
79
80
|
const BITFLAG_MASKED_LOCAL_HEADERS = 0b10000000000000;
|
|
@@ -191,6 +192,7 @@ const OPTION_OFFSET = "offset";
|
|
|
191
192
|
const OPTION_USDZ = "usdz";
|
|
192
193
|
const OPTION_UNIX_EXTRA_FIELD_TYPE = "unixExtraFieldType";
|
|
193
194
|
const OPTION_LOCAL_EXTRA_FIELD = "localExtraField";
|
|
195
|
+
const OPTION_CENTRAL_EXTRA_FIELD = "centralExtraField";
|
|
194
196
|
const OPTION_STRICTNESS = "strictness";
|
|
195
197
|
const OPTION_FILENAME_VALIDATION = "filenameValidation";
|
|
196
198
|
const OPTION_NORMALIZE_FILENAME = "normalizeFilename";
|
|
@@ -4760,6 +4762,21 @@ const ERR_INVALID_STRICTNESS = "Invalid strictness (must be 'strict', 'balanced'
|
|
|
4760
4762
|
const ERR_INVALID_FILENAME_VALIDATION = "Invalid filenameValidation (must be 'strict', 'balanced' or 'tolerant')";
|
|
4761
4763
|
const ERR_INVALID_MAX_APPENDED_DATA_SIZE = "Invalid maxAppendedDataSize (must be a number greater than or equal to 0)";
|
|
4762
4764
|
const ERR_UNSUPPORTED_UINT64 = "64-bit value exceeds Number.MAX_SAFE_INTEGER";
|
|
4765
|
+
const WARNING_UNSORTED_CENTRAL_DIRECTORY = "unsorted central directory";
|
|
4766
|
+
const WARNING_UNKNOWN_VERSION = "unknown version needed to extract";
|
|
4767
|
+
const WARNING_COMPRESSED_PATCHED_DATA = "compressed patched data";
|
|
4768
|
+
const WARNING_MALFORMED_EXTRA_FIELD = "malformed extra field";
|
|
4769
|
+
const WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA = "unknown zip64 extensible data";
|
|
4770
|
+
const WARNING_WRAPPED_ENTRIES_COUNT = "wrapped entries count";
|
|
4771
|
+
const WARNING_APPENDED_DATA = "appended data";
|
|
4772
|
+
const WARNING_PREPENDED_DATA = "prepended data";
|
|
4773
|
+
const WARNING_TRAILING_CENTRAL_DIRECTORY_DATA = "trailing central directory data";
|
|
4774
|
+
const WARNING_DUPLICATE_FILENAME = "duplicate filename";
|
|
4775
|
+
const WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY = "mismatched zip64 end of central directory record";
|
|
4776
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG = "mismatched local file header (general purpose bit flag)";
|
|
4777
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD = "mismatched local file header (compression method)";
|
|
4778
|
+
const WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES = "mismatched local file header (crc32 or sizes)";
|
|
4779
|
+
const MAX_KNOWN_VERSION = 63;
|
|
4763
4780
|
const DRIVE_LETTER_REGEXP = /^[a-zA-Z]:/;
|
|
4764
4781
|
const CHARSET_UTF8 = "utf-8";
|
|
4765
4782
|
const PROPERTY_NAME_UTF8_SUFFIX = "UTF8";
|
|
@@ -4810,6 +4827,7 @@ class ZipReader {
|
|
|
4810
4827
|
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
4811
4828
|
throw new Error(ERR_BAD_FORMAT);
|
|
4812
4829
|
}
|
|
4830
|
+
const warnings = zipReader.warnings = [];
|
|
4813
4831
|
const strictness = getStrictness(options, zipReader.options);
|
|
4814
4832
|
const checkAmbiguity = strictness == STRICTNESS_STRICT;
|
|
4815
4833
|
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
@@ -4833,8 +4851,12 @@ class ZipReader {
|
|
|
4833
4851
|
const commentOffset = endOfDirectoryInfo.offset;
|
|
4834
4852
|
const commentLength = getUint16$1(endOfDirectoryView, 20);
|
|
4835
4853
|
const appendedDataOffset = commentOffset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
4836
|
-
|
|
4837
|
-
|
|
4854
|
+
const appendedDataLength = reader.size - appendedDataOffset;
|
|
4855
|
+
if (appendedDataLength > maxAppendedDataSize) {
|
|
4856
|
+
throwAmbiguousArchive(WARNING_APPENDED_DATA);
|
|
4857
|
+
}
|
|
4858
|
+
if (appendedDataLength > 0) {
|
|
4859
|
+
addWarning(warnings, WARNING_APPENDED_DATA);
|
|
4838
4860
|
}
|
|
4839
4861
|
let lastDiskNumber = getUint16$1(endOfDirectoryView, 4);
|
|
4840
4862
|
const expectedLastDiskNumber = reader.lastDiskNumber || 0;
|
|
@@ -4888,23 +4910,23 @@ class ZipReader {
|
|
|
4888
4910
|
}
|
|
4889
4911
|
if (lastDiskNumber == MAX_16_BITS) {
|
|
4890
4912
|
lastDiskNumber = getUint32$1(endOfDirectoryView, 16);
|
|
4891
|
-
} else if (
|
|
4892
|
-
|
|
4913
|
+
} else if (lastDiskNumber != getUint32$1(endOfDirectoryView, 16)) {
|
|
4914
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4893
4915
|
}
|
|
4894
4916
|
if (diskNumber == MAX_16_BITS) {
|
|
4895
4917
|
diskNumber = getUint32$1(endOfDirectoryView, 20);
|
|
4896
|
-
} else if (
|
|
4897
|
-
|
|
4918
|
+
} else if (diskNumber != getUint32$1(endOfDirectoryView, 20)) {
|
|
4919
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4898
4920
|
}
|
|
4899
4921
|
if (filesLength == MAX_16_BITS) {
|
|
4900
4922
|
filesLength = getBigUint64(endOfDirectoryView, 32);
|
|
4901
|
-
} else if (
|
|
4902
|
-
|
|
4923
|
+
} else if (filesLength != getBigUint64(endOfDirectoryView, 32)) {
|
|
4924
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4903
4925
|
}
|
|
4904
4926
|
if (directoryDataLength == MAX_32_BITS) {
|
|
4905
4927
|
directoryDataLength = getBigUint64(endOfDirectoryView, 40);
|
|
4906
|
-
} else if (
|
|
4907
|
-
|
|
4928
|
+
} else if (directoryDataLength != getBigUint64(endOfDirectoryView, 40)) {
|
|
4929
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY);
|
|
4908
4930
|
}
|
|
4909
4931
|
directoryDataOffset = getDiskOffset$1(reader, diskNumber) + getBigUint64(endOfDirectoryView, 48) + prependedDataLength;
|
|
4910
4932
|
}
|
|
@@ -4973,14 +4995,22 @@ class ZipReader {
|
|
|
4973
4995
|
declaredDirectoryDataLength = directoryArray.length;
|
|
4974
4996
|
decryptedDirectory = true;
|
|
4975
4997
|
}
|
|
4998
|
+
if (directoryEncryptionInfo && !decryptedDirectory &&
|
|
4999
|
+
(directoryArray.length < 4 || getUint32$1(directoryView, 0) == CENTRAL_FILE_HEADER_SIGNATURE)) {
|
|
5000
|
+
addWarning(warnings, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA);
|
|
5001
|
+
}
|
|
4976
5002
|
startOffset = directoryDataOffset;
|
|
4977
5003
|
const filenameEncoding = getOptionValue$1(zipReader, options, OPTION_FILENAME_ENCODING);
|
|
4978
5004
|
const commentEncoding = getOptionValue$1(zipReader, options, OPTION_COMMENT_ENCODING);
|
|
4979
|
-
const filenames =
|
|
5005
|
+
const filenames = new Set();
|
|
4980
5006
|
let duplicateFilename;
|
|
5007
|
+
let previousEntryPosition = -1;
|
|
4981
5008
|
const recoverWrappedFilesLength = !checkAmbiguity && !zip64EndOfDirectory;
|
|
4982
5009
|
if (!filesLength && recoverWrappedFilesLength) {
|
|
4983
5010
|
filesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
5011
|
+
if (filesLength) {
|
|
5012
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
5013
|
+
}
|
|
4984
5014
|
}
|
|
4985
5015
|
for (let indexFile = 0; indexFile < filesLength; indexFile++) {
|
|
4986
5016
|
const fileEntry = new ZipEntry$1(reader, zipReader.options);
|
|
@@ -5059,15 +5089,26 @@ class ZipReader {
|
|
|
5059
5089
|
filename,
|
|
5060
5090
|
comment
|
|
5061
5091
|
});
|
|
5062
|
-
readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)
|
|
5092
|
+
if (readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6)) {
|
|
5093
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD, filename);
|
|
5094
|
+
}
|
|
5063
5095
|
fileEntry.offset += prependedDataLength;
|
|
5064
|
-
|
|
5065
|
-
|
|
5066
|
-
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
|
|
5096
|
+
const entryPosition = getDiskOffset$1(reader, fileEntry.diskNumberStart) + fileEntry.offset;
|
|
5097
|
+
startOffset = Math.min(entryPosition, startOffset);
|
|
5098
|
+
if (entryPosition < previousEntryPosition) {
|
|
5099
|
+
addWarning(warnings, WARNING_UNSORTED_CENTRAL_DIRECTORY, filename);
|
|
5100
|
+
}
|
|
5101
|
+
previousEntryPosition = entryPosition;
|
|
5102
|
+
if ((fileEntry.version & MAX_8_BITS) > MAX_KNOWN_VERSION) {
|
|
5103
|
+
addWarning(warnings, WARNING_UNKNOWN_VERSION, filename);
|
|
5104
|
+
}
|
|
5105
|
+
if ((fileEntry.rawBitFlag & BITFLAG_COMPRESSED_PATCHED_DATA) == BITFLAG_COMPRESSED_PATCHED_DATA) {
|
|
5106
|
+
addWarning(warnings, WARNING_COMPRESSED_PATCHED_DATA, filename);
|
|
5107
|
+
}
|
|
5108
|
+
if (filenames.has(fileEntry.filename)) {
|
|
5109
|
+
duplicateFilename = true;
|
|
5070
5110
|
}
|
|
5111
|
+
filenames.add(fileEntry.filename);
|
|
5071
5112
|
const unixExternalUpper = (fileEntry.externalFileAttributes >> 16) & MAX_16_BITS;
|
|
5072
5113
|
if (fileEntry.unixMode === UNDEFINED_VALUE && (unixExternalUpper & (FILE_ATTR_UNIX_DEFAULT_MASK | FILE_ATTR_UNIX_EXECUTABLE_MASK | FILE_ATTR_UNIX_TYPE_DIR)) != 0) {
|
|
5073
5114
|
fileEntry.unixMode = unixExternalUpper;
|
|
@@ -5105,7 +5146,11 @@ class ZipReader {
|
|
|
5105
5146
|
};
|
|
5106
5147
|
offset = endOffset;
|
|
5107
5148
|
if (indexFile == filesLength - 1 && recoverWrappedFilesLength) {
|
|
5108
|
-
|
|
5149
|
+
const wrappedFilesLength = getWrappedFilesLength(directoryView, directoryArray, offset);
|
|
5150
|
+
if (wrappedFilesLength) {
|
|
5151
|
+
filesLength += wrappedFilesLength;
|
|
5152
|
+
addWarning(warnings, WARNING_WRAPPED_ENTRIES_COUNT);
|
|
5153
|
+
}
|
|
5109
5154
|
}
|
|
5110
5155
|
const { onprogress } = options;
|
|
5111
5156
|
if (onprogress) {
|
|
@@ -5131,18 +5176,22 @@ class ZipReader {
|
|
|
5131
5176
|
zipReader.digitalSignature = digitalSignature;
|
|
5132
5177
|
offsetAfterSignature = offset + 6 + digitalSignature.length;
|
|
5133
5178
|
}
|
|
5134
|
-
if (
|
|
5135
|
-
|
|
5179
|
+
if ((offset != declaredDirectoryDataLength && offsetAfterSignature != declaredDirectoryDataLength) ||
|
|
5180
|
+
(!decryptedDirectory && offset != directoryDataLength && offsetAfterSignature != directoryDataLength)) {
|
|
5181
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA);
|
|
5136
5182
|
}
|
|
5137
5183
|
if (duplicateFilename) {
|
|
5138
|
-
|
|
5184
|
+
reportAmbiguity(checkAmbiguity, warnings, WARNING_DUPLICATE_FILENAME);
|
|
5139
5185
|
}
|
|
5140
5186
|
const extractPrependedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_PREPENDED_DATA);
|
|
5141
5187
|
const extractAppendedData = getOptionValue$1(zipReader, options, OPTION_EXTRACT_APPENDED_DATA);
|
|
5142
5188
|
const splitZipSignatureLength = (checkAmbiguity || extractPrependedData) && filesLength &&
|
|
5143
5189
|
startOffset == SPLIT_ZIP_FILE_SIGNATURE_LENGTH && await startsWithSplitZipMarker(reader) ? SPLIT_ZIP_FILE_SIGNATURE_LENGTH : 0;
|
|
5144
5190
|
if (checkAmbiguity && (prependedDataLength || (filesLength && startOffset > splitZipSignatureLength))) {
|
|
5145
|
-
throwAmbiguousArchive(
|
|
5191
|
+
throwAmbiguousArchive(WARNING_PREPENDED_DATA);
|
|
5192
|
+
}
|
|
5193
|
+
if (prependedDataLength || (filesLength && startOffset > SPLIT_ZIP_FILE_SIGNATURE_LENGTH)) {
|
|
5194
|
+
addWarning(warnings, WARNING_PREPENDED_DATA);
|
|
5146
5195
|
}
|
|
5147
5196
|
if (extractPrependedData) {
|
|
5148
5197
|
zipReader.prependedData = startOffset > splitZipSignatureLength ?
|
|
@@ -5212,6 +5261,28 @@ class ZipReaderStream {
|
|
|
5212
5261
|
}
|
|
5213
5262
|
}
|
|
5214
5263
|
|
|
5264
|
+
async function isZipFile(reader, options = {}) {
|
|
5265
|
+
reader = new GenericReader(reader);
|
|
5266
|
+
await initStream(reader);
|
|
5267
|
+
if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {
|
|
5268
|
+
reader = new BlobReader(await streamToBlob(reader.readable));
|
|
5269
|
+
await initStream(reader);
|
|
5270
|
+
}
|
|
5271
|
+
if (reader.size < END_OF_CENTRAL_DIR_LENGTH) {
|
|
5272
|
+
return false;
|
|
5273
|
+
}
|
|
5274
|
+
const strictness = getStrictness(options, {});
|
|
5275
|
+
const rejectAmbiguousEndOfDirectory = strictness != STRICTNESS_TOLERANT;
|
|
5276
|
+
const maxAppendedDataSize = getMaxAppendedDataSize(options[OPTION_MAX_APPENDED_DATA_SIZE], strictness);
|
|
5277
|
+
const { endOfDirectoryInfo, endOfDirectoryReachingEndCount } = await findEndOfCentralDirectory(reader, rejectAmbiguousEndOfDirectory, maxAppendedDataSize);
|
|
5278
|
+
if (!endOfDirectoryInfo || (strictness == STRICTNESS_STRICT && endOfDirectoryReachingEndCount > 1)) {
|
|
5279
|
+
return false;
|
|
5280
|
+
}
|
|
5281
|
+
const commentLength = getUint16$1(getDataView(endOfDirectoryInfo), 20);
|
|
5282
|
+
const appendedDataOffset = endOfDirectoryInfo.offset + END_OF_CENTRAL_DIR_LENGTH + commentLength;
|
|
5283
|
+
return reader.size - appendedDataOffset <= maxAppendedDataSize;
|
|
5284
|
+
}
|
|
5285
|
+
|
|
5215
5286
|
let ZipEntry$1 = class ZipEntry {
|
|
5216
5287
|
|
|
5217
5288
|
constructor(reader, options) {
|
|
@@ -5243,6 +5314,7 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5243
5314
|
dataDescriptor
|
|
5244
5315
|
} = bitFlag;
|
|
5245
5316
|
const localDirectory = fileEntry.localDirectory = {};
|
|
5317
|
+
const warnings = fileEntry.warnings = [];
|
|
5246
5318
|
const localHeaderOffset = getDiskOffset$1(reader, diskNumberStart) + offset;
|
|
5247
5319
|
const dataArray = await readUint8Array(reader, localHeaderOffset, HEADER_SIZE);
|
|
5248
5320
|
const dataView = getDataView(dataArray);
|
|
@@ -5283,10 +5355,10 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5283
5355
|
if (checkLocalFilename) {
|
|
5284
5356
|
localDirectory.rawFilename = rawLocalFilename;
|
|
5285
5357
|
}
|
|
5286
|
-
readCommonFooter(zipEntry, localDirectory, dataView, 4, true)
|
|
5287
|
-
|
|
5288
|
-
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename);
|
|
5358
|
+
if (readCommonFooter(zipEntry, localDirectory, dataView, 4, true)) {
|
|
5359
|
+
addWarning(warnings, WARNING_MALFORMED_EXTRA_FIELD);
|
|
5289
5360
|
}
|
|
5361
|
+
validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, checkLocalDirectory ? UNDEFINED_VALUE : warnings);
|
|
5290
5362
|
const { lastAccessDate, creationDate, uid, gid } = localDirectory;
|
|
5291
5363
|
if (lastAccessDate) {
|
|
5292
5364
|
fileEntry.lastAccessDate = lastAccessDate;
|
|
@@ -5512,6 +5584,7 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5512
5584
|
const extraField = directory.extraField = new Map();
|
|
5513
5585
|
const rawExtraFieldView = getDataView(rawExtraField);
|
|
5514
5586
|
let offsetExtraField = 0;
|
|
5587
|
+
let malformedExtraField = false;
|
|
5515
5588
|
try {
|
|
5516
5589
|
while (offsetExtraField < rawExtraField.length) {
|
|
5517
5590
|
const type = getUint16$1(rawExtraFieldView, offsetExtraField);
|
|
@@ -5523,7 +5596,10 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5523
5596
|
offsetExtraField += 4 + size;
|
|
5524
5597
|
}
|
|
5525
5598
|
} catch {
|
|
5526
|
-
|
|
5599
|
+
malformedExtraField = true;
|
|
5600
|
+
}
|
|
5601
|
+
if (offsetExtraField > rawExtraField.length) {
|
|
5602
|
+
malformedExtraField = true;
|
|
5527
5603
|
}
|
|
5528
5604
|
const compressionMethod = getUint16$1(dataView, offset + 4);
|
|
5529
5605
|
Object.assign(directory, {
|
|
@@ -5591,6 +5667,7 @@ function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory
|
|
|
5591
5667
|
if (extraFieldUSDZ) {
|
|
5592
5668
|
directory.extraFieldUSDZ = extraFieldUSDZ;
|
|
5593
5669
|
}
|
|
5670
|
+
return malformedExtraField;
|
|
5594
5671
|
}
|
|
5595
5672
|
|
|
5596
5673
|
function readExtraFieldZip64(extraFieldZip64, directory) {
|
|
@@ -6052,27 +6129,46 @@ async function readSignature(reader, view, anchoredOffset, signatureOffset, size
|
|
|
6052
6129
|
return UNDEFINED_VALUE;
|
|
6053
6130
|
}
|
|
6054
6131
|
|
|
6055
|
-
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename) {
|
|
6132
|
+
function validateLocalDirectory(zipEntry, localDirectory, rawLocalFilename, checkLocalFilename, warnings) {
|
|
6056
6133
|
const { rawFilename } = zipEntry;
|
|
6134
|
+
const reject = !warnings;
|
|
6057
6135
|
const maskedLocalDirectory = zipEntry.decryptedDirectory &&
|
|
6058
6136
|
(localDirectory.rawBitFlag & BITFLAG_MASKED_LOCAL_HEADERS) == BITFLAG_MASKED_LOCAL_HEADERS;
|
|
6059
6137
|
if (checkLocalFilename && !maskedLocalDirectory &&
|
|
6060
6138
|
(rawLocalFilename.length != rawFilename.length ||
|
|
6061
6139
|
rawLocalFilename.some((byteValue, indexByte) => byteValue != rawFilename[indexByte]))) {
|
|
6062
|
-
|
|
6140
|
+
reportAmbiguity(reject, warnings, "mismatched local file header (filename)");
|
|
6063
6141
|
}
|
|
6064
6142
|
if ((localDirectory.rawBitFlag & BITFLAG_AMBIGUITY_MASK) != (zipEntry.rawBitFlag & BITFLAG_AMBIGUITY_MASK)) {
|
|
6065
|
-
|
|
6143
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG);
|
|
6066
6144
|
}
|
|
6067
6145
|
if (localDirectory.compressionMethod != zipEntry.compressionMethod) {
|
|
6068
|
-
|
|
6146
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD);
|
|
6069
6147
|
}
|
|
6070
6148
|
if (!localDirectory.bitFlag.dataDescriptor && !maskedLocalDirectory &&
|
|
6071
6149
|
(localDirectory.crc32 || localDirectory.compressedSize || localDirectory.uncompressedSize) &&
|
|
6072
6150
|
(localDirectory.crc32 != zipEntry.crc32 ||
|
|
6073
6151
|
localDirectory.compressedSize != zipEntry.compressedSize ||
|
|
6074
6152
|
localDirectory.uncompressedSize != zipEntry.uncompressedSize)) {
|
|
6075
|
-
|
|
6153
|
+
reportAmbiguity(reject, warnings, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES);
|
|
6154
|
+
}
|
|
6155
|
+
}
|
|
6156
|
+
|
|
6157
|
+
function reportAmbiguity(reject, warnings, reason) {
|
|
6158
|
+
if (reject) {
|
|
6159
|
+
throwAmbiguousArchive(reason);
|
|
6160
|
+
} else {
|
|
6161
|
+
addWarning(warnings, reason);
|
|
6162
|
+
}
|
|
6163
|
+
}
|
|
6164
|
+
|
|
6165
|
+
function addWarning(warnings, reason, filename) {
|
|
6166
|
+
if (!warnings.some(warning => warning.reason == reason)) {
|
|
6167
|
+
const warning = { reason };
|
|
6168
|
+
if (filename !== UNDEFINED_VALUE) {
|
|
6169
|
+
warning.filename = filename;
|
|
6170
|
+
}
|
|
6171
|
+
warnings.push(warning);
|
|
6076
6172
|
}
|
|
6077
6173
|
}
|
|
6078
6174
|
|
|
@@ -6149,8 +6245,23 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
6149
6245
|
ERR_UNSUPPORTED_ENCRYPTION: ERR_UNSUPPORTED_ENCRYPTION,
|
|
6150
6246
|
ERR_UNSUPPORTED_UINT64: ERR_UNSUPPORTED_UINT64,
|
|
6151
6247
|
ERR_WORKER_STARTUP_TIMEOUT: ERR_WORKER_STARTUP_TIMEOUT,
|
|
6248
|
+
WARNING_APPENDED_DATA: WARNING_APPENDED_DATA,
|
|
6249
|
+
WARNING_COMPRESSED_PATCHED_DATA: WARNING_COMPRESSED_PATCHED_DATA,
|
|
6250
|
+
WARNING_DUPLICATE_FILENAME: WARNING_DUPLICATE_FILENAME,
|
|
6251
|
+
WARNING_MALFORMED_EXTRA_FIELD: WARNING_MALFORMED_EXTRA_FIELD,
|
|
6252
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG: WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG,
|
|
6253
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD: WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD,
|
|
6254
|
+
WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES: WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES,
|
|
6255
|
+
WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY: WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY,
|
|
6256
|
+
WARNING_PREPENDED_DATA: WARNING_PREPENDED_DATA,
|
|
6257
|
+
WARNING_TRAILING_CENTRAL_DIRECTORY_DATA: WARNING_TRAILING_CENTRAL_DIRECTORY_DATA,
|
|
6258
|
+
WARNING_UNKNOWN_VERSION: WARNING_UNKNOWN_VERSION,
|
|
6259
|
+
WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA: WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA,
|
|
6260
|
+
WARNING_UNSORTED_CENTRAL_DIRECTORY: WARNING_UNSORTED_CENTRAL_DIRECTORY,
|
|
6261
|
+
WARNING_WRAPPED_ENTRIES_COUNT: WARNING_WRAPPED_ENTRIES_COUNT,
|
|
6152
6262
|
ZipReader: ZipReader,
|
|
6153
|
-
ZipReaderStream: ZipReaderStream
|
|
6263
|
+
ZipReaderStream: ZipReaderStream,
|
|
6264
|
+
isZipFile: isZipFile
|
|
6154
6265
|
});
|
|
6155
6266
|
|
|
6156
6267
|
/*
|
|
@@ -6363,6 +6474,7 @@ class ZipWriter {
|
|
|
6363
6474
|
rawExtraFieldNTFS: EMPTY_UINT8_ARRAY,
|
|
6364
6475
|
rawExtraFieldUnix: EMPTY_UINT8_ARRAY,
|
|
6365
6476
|
rawExtraField,
|
|
6477
|
+
rawCentralExtraField: EMPTY_UINT8_ARRAY,
|
|
6366
6478
|
extendedTimestamp: false,
|
|
6367
6479
|
headerArray,
|
|
6368
6480
|
headerView
|
|
@@ -6536,7 +6648,6 @@ async function prependZipEntries(zipWriter, reader) {
|
|
|
6536
6648
|
|
|
6537
6649
|
async function addFileEntry(zipWriter, name, reader, options) {
|
|
6538
6650
|
options = Object.assign({}, options);
|
|
6539
|
-
name = name.trim();
|
|
6540
6651
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
6541
6652
|
name += DIRECTORY_SIGNATURE;
|
|
6542
6653
|
}
|
|
@@ -6627,7 +6738,6 @@ async function addFile(zipWriter, name, reader, options) {
|
|
|
6627
6738
|
}
|
|
6628
6739
|
|
|
6629
6740
|
function resolveAttributes(zipWriter, name, options) {
|
|
6630
|
-
name = name.trim();
|
|
6631
6741
|
let msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE);
|
|
6632
6742
|
let versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, msDosCompatible ? VERSION_MADE_BY_MSDOS : VERSION_MADE_BY_UNIX);
|
|
6633
6743
|
const executable = getOptionValue(zipWriter, options, PROPERTY_NAME_EXECUTABLE);
|
|
@@ -6832,6 +6942,7 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6832
6942
|
}
|
|
6833
6943
|
const rawExtraField = serializeExtraField(options[PROPERTY_NAME_EXTRA_FIELD]);
|
|
6834
6944
|
const rawLocalExtraField = serializeExtraField(options[OPTION_LOCAL_EXTRA_FIELD]);
|
|
6945
|
+
const rawCentralExtraField = serializeExtraField(options[OPTION_CENTRAL_EXTRA_FIELD]);
|
|
6835
6946
|
return {
|
|
6836
6947
|
comment,
|
|
6837
6948
|
resolvedOptions: {
|
|
@@ -6867,7 +6978,8 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
6867
6978
|
dataDescriptor,
|
|
6868
6979
|
zip64,
|
|
6869
6980
|
rawExtraField,
|
|
6870
|
-
rawLocalExtraField
|
|
6981
|
+
rawLocalExtraField,
|
|
6982
|
+
rawCentralExtraField
|
|
6871
6983
|
}
|
|
6872
6984
|
};
|
|
6873
6985
|
}
|
|
@@ -7009,7 +7121,6 @@ async function getEntriesSize(writerOptions, entries, writeOrderGuaranteed, comm
|
|
|
7009
7121
|
let { name } = entry;
|
|
7010
7122
|
const { size } = entry;
|
|
7011
7123
|
const options = Object.assign({}, entry.options);
|
|
7012
|
-
name = name.trim();
|
|
7013
7124
|
if (getOptionValue(zipWriter, options, PROPERTY_NAME_DIRECTORY) && !name.endsWith(DIRECTORY_SIGNATURE)) {
|
|
7014
7125
|
name += DIRECTORY_SIGNATURE;
|
|
7015
7126
|
}
|
|
@@ -7265,6 +7376,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7265
7376
|
versionMadeBy,
|
|
7266
7377
|
rawComment,
|
|
7267
7378
|
rawExtraField,
|
|
7379
|
+
rawCentralExtraField,
|
|
7268
7380
|
useWebWorkers,
|
|
7269
7381
|
transferStreams,
|
|
7270
7382
|
onstart,
|
|
@@ -7308,6 +7420,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7308
7420
|
rawExtraFieldUnix,
|
|
7309
7421
|
rawExtraFieldAES,
|
|
7310
7422
|
rawExtraField,
|
|
7423
|
+
rawCentralExtraField,
|
|
7311
7424
|
extendedTimestamp,
|
|
7312
7425
|
msDosCompatible,
|
|
7313
7426
|
internalFileAttributes,
|
|
@@ -7808,6 +7921,7 @@ function createDirectoryRecords(files) {
|
|
|
7808
7921
|
rawExtraFieldNTFS,
|
|
7809
7922
|
rawExtraFieldUnix,
|
|
7810
7923
|
rawExtraField,
|
|
7924
|
+
rawCentralExtraField,
|
|
7811
7925
|
extendedTimestamp,
|
|
7812
7926
|
extraFieldExtendedTimestampFlag,
|
|
7813
7927
|
lastModDate,
|
|
@@ -7862,7 +7976,8 @@ function createDirectoryRecords(files) {
|
|
|
7862
7976
|
rawExtraFieldNTFS,
|
|
7863
7977
|
rawExtraFieldUnix,
|
|
7864
7978
|
rawExtraFieldTimestamp,
|
|
7865
|
-
rawExtraField
|
|
7979
|
+
rawExtraField,
|
|
7980
|
+
rawCentralExtraField);
|
|
7866
7981
|
if (extraFieldLength > MAX_16_BITS) {
|
|
7867
7982
|
throw new Error(ERR_INVALID_EXTRAFIELD_DATA);
|
|
7868
7983
|
}
|
|
@@ -7890,6 +8005,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7890
8005
|
rawExtraFieldNTFS,
|
|
7891
8006
|
rawExtraFieldUnix,
|
|
7892
8007
|
rawExtraField,
|
|
8008
|
+
rawCentralExtraField,
|
|
7893
8009
|
rawComment,
|
|
7894
8010
|
versionMadeBy,
|
|
7895
8011
|
headerArray,
|
|
@@ -7904,7 +8020,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7904
8020
|
uncompressedSize,
|
|
7905
8021
|
compressedSize
|
|
7906
8022
|
} = fileEntry;
|
|
7907
|
-
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField);
|
|
8023
|
+
const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField, rawCentralExtraField);
|
|
7908
8024
|
const directoryRecordLength = CENTRAL_FILE_HEADER_LENGTH + getLength(rawFilename, rawComment) + extraFieldLength;
|
|
7909
8025
|
if (exceedsAvailableSize(writer, offset + directoryRecordLength - directoryDiskOffset)) {
|
|
7910
8026
|
await writeData(writer, directoryArray.slice(directoryDiskOffset, offset));
|
|
@@ -7942,6 +8058,7 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
7942
8058
|
directoryRecord.writeBytes(rawExtraFieldNTFS);
|
|
7943
8059
|
directoryRecord.writeBytes(rawExtraFieldUnix);
|
|
7944
8060
|
directoryRecord.writeBytes(rawExtraField);
|
|
8061
|
+
directoryRecord.writeBytes(rawCentralExtraField);
|
|
7945
8062
|
directoryRecord.writeBytes(rawComment);
|
|
7946
8063
|
arraySet(directoryArray, directoryRecord.array, offset);
|
|
7947
8064
|
offset += directoryRecordLength;
|
|
@@ -10555,4 +10672,4 @@ function addChild(parent, name, params, directory) {
|
|
|
10555
10672
|
}
|
|
10556
10673
|
}
|
|
10557
10674
|
|
|
10558
|
-
export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_ENTRY_EXISTS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMMENT_TYPE, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_DATE, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_COMMENT_TYPE, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_DATA_TYPE, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_FILENAME_VALIDATION, ERR_INVALID_FUNCTION_OPTION, ERR_INVALID_GID, ERR_INVALID_LEVEL, ERR_INVALID_MAX_APPENDED_DATA_SIZE, ERR_INVALID_MAX_WORKERS, ERR_INVALID_MSDOS_ATTRIBUTES, ERR_INVALID_MSDOS_DATA, ERR_INVALID_PASSWORD, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_READER_OPTIONS, ERR_INVALID_SIGNAL, ERR_INVALID_SIGNATURE, ERR_INVALID_SIGNATURE_DATA, ERR_INVALID_STRICTNESS, ERR_INVALID_UID, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_UNIX_EXTRA_FIELD_TYPE, ERR_INVALID_UNIX_ID_SIZE, ERR_INVALID_UNIX_MODE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_CONTEXT, ERR_UNSUPPORTED_CRYPTO_API, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_PASS_THROUGH, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, Writer, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
|
|
10675
|
+
export { BlobReader, BlobWriter, Data64URIReader, Data64URIWriter, ERR_ABORTED, ERR_AMBIGUOUS_ARCHIVE, ERR_BAD_FORMAT, ERR_CENTRAL_DIRECTORY_NOT_FOUND, ERR_DUPLICATED_NAME, ERR_ENCRYPTED, ERR_ENCRYPTED_CENTRAL_DIRECTORY, ERR_ENTRY_DATA_OUT_OF_BOUNDS, ERR_ENTRY_EXISTS, ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, ERR_EOCDR_NOT_FOUND, ERR_EXTRAFIELD_ZIP64_NOT_FOUND, ERR_HTTP_RANGE, ERR_HTTP_RESOURCE_CHANGED, ERR_INVALID_AUTHENTICATION_CODE, ERR_INVALID_CODEC_DEFINITION, ERR_INVALID_CODEC_MODULE, ERR_INVALID_COMMENT, ERR_INVALID_COMMENT_TYPE, ERR_INVALID_COMPRESSED_DATA, ERR_INVALID_CRC32, ERR_INVALID_DATE, ERR_INVALID_ENCRYPTION_STRENGTH, ERR_INVALID_ENTRY_COMMENT, ERR_INVALID_ENTRY_COMMENT_TYPE, ERR_INVALID_ENTRY_NAME, ERR_INVALID_EXTRAFIELD, ERR_INVALID_EXTRAFIELD_DATA, ERR_INVALID_EXTRAFIELD_DATA_TYPE, ERR_INVALID_EXTRAFIELD_TYPE, ERR_INVALID_FILENAME_VALIDATION, ERR_INVALID_FUNCTION_OPTION, ERR_INVALID_GID, ERR_INVALID_LEVEL, ERR_INVALID_MAX_APPENDED_DATA_SIZE, ERR_INVALID_MAX_WORKERS, ERR_INVALID_MSDOS_ATTRIBUTES, ERR_INVALID_MSDOS_DATA, ERR_INVALID_PASSWORD, ERR_INVALID_PASSWORD_TYPE, ERR_INVALID_PASS_THROUGH, ERR_INVALID_READER_OPTIONS, ERR_INVALID_SIGNAL, ERR_INVALID_SIGNATURE, ERR_INVALID_SIGNATURE_DATA, ERR_INVALID_STRICTNESS, ERR_INVALID_UID, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_UNIX_EXTRA_FIELD_TYPE, ERR_INVALID_UNIX_ID_SIZE, ERR_INVALID_UNIX_MODE, ERR_INVALID_VERSION, ERR_ITERATOR_COMPLETED_TOO_SOON, ERR_LOCAL_FILE_HEADER_NOT_FOUND, ERR_OVERLAPPING_ENTRY, ERR_READABLE_CONSUMED, ERR_RESERVED_COMPRESSION_METHOD, ERR_SPLIT_ZIP_FILE, ERR_UNDEFINED_COMPRESSION_METHOD, ERR_UNDEFINED_READER, ERR_UNDEFINED_UNCOMPRESSED_SIZE, ERR_UNDETERMINED_SIZE, ERR_UNSAFE_FILENAME, ERR_UNSUPPORTED_COMPRESSION$1 as ERR_UNSUPPORTED_COMPRESSION, ERR_UNSUPPORTED_CONTEXT, ERR_UNSUPPORTED_CRYPTO_API, ERR_UNSUPPORTED_ENCRYPTION, ERR_UNSUPPORTED_ENCRYPTION_PASS_THROUGH, ERR_UNSUPPORTED_ENCRYPTION_USDZ, ERR_UNSUPPORTED_FORMAT, ERR_UNSUPPORTED_UINT64, ERR_WORKER_STARTUP_TIMEOUT, ERR_WRITER_NOT_INITIALIZED, ERR_ZIP_CRYPTO_LAST_MOD_DATE, ERR_ZIP_NOT_EMPTY, HttpRangeReader, HttpReader, Reader, SplitDataReader, SplitDataWriter, TextReader, TextWriter, Uint8ArrayReader, Uint8ArrayWriter, WARNING_APPENDED_DATA, WARNING_COMPRESSED_PATCHED_DATA, WARNING_DUPLICATE_FILENAME, WARNING_MALFORMED_EXTRA_FIELD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG, WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD, WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES, WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY, WARNING_PREPENDED_DATA, WARNING_TRAILING_CENTRAL_DIRECTORY_DATA, WARNING_UNKNOWN_VERSION, WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA, WARNING_UNSORTED_CENTRAL_DIRECTORY, WARNING_WRAPPED_ENTRIES_COUNT, Writer, ZipDirectoryEntry, ZipEntry, ZipFS, ZipFileEntry, ZipReader, ZipReaderStream, ZipWriter, ZipWriterStream, configure, createBlobTempStream, createOPFSTempStream, createSyncAccessHandleTempStream, fs, getMimeType, isZipFile, registerCodec, resetConfiguration, terminateWorkersAndModule as terminateWorkers, unregisterCodec };
|