@zip.js/zip.js 2.6.12 → 2.6.15
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/README.md +66 -13
- package/cli-deno/mc-zip.js +1 -1
- package/dist/zip-fs-full.js +40 -26
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +40 -26
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +39 -25
- 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 +39 -25
- package/dist/zip.min.js +1 -1
- package/index.d.ts +15 -9
- package/lib/core/io.js +11 -10
- package/lib/core/util/cp437-decode.js +12 -5
- package/lib/core/zip-fs-core.js +1 -1
- package/lib/core/zip-reader.js +2 -1
- package/lib/core/zip-writer.js +14 -9
- package/package.json +2 -2
- package/tests/all/test-sw-worker.js +0 -1
package/dist/zip-full.js
CHANGED
|
@@ -6950,18 +6950,19 @@
|
|
|
6950
6950
|
|
|
6951
6951
|
class Uint8ArrayWriter extends Writer {
|
|
6952
6952
|
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
this.array = new Uint8Array();
|
|
6953
|
+
init(initSize = 0) {
|
|
6954
|
+
this.array = new Uint8Array(initSize);
|
|
6956
6955
|
}
|
|
6957
6956
|
|
|
6958
6957
|
writeUint8Array(array) {
|
|
6959
|
-
super.writeUint8Array(array);
|
|
6960
6958
|
const writer = this;
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6959
|
+
if (writer.size + array.length > writer.array.length) {
|
|
6960
|
+
const previousArray = writer.array;
|
|
6961
|
+
writer.array = new Uint8Array(previousArray.length + array.length);
|
|
6962
|
+
writer.array.set(previousArray);
|
|
6963
|
+
}
|
|
6964
|
+
writer.array.set(array, writer.size);
|
|
6965
|
+
super.writeUint8Array(array);
|
|
6965
6966
|
}
|
|
6966
6967
|
|
|
6967
6968
|
getData() {
|
|
@@ -6975,9 +6976,9 @@
|
|
|
6975
6976
|
return protocol == "http:" || protocol == "https:";
|
|
6976
6977
|
}
|
|
6977
6978
|
|
|
6978
|
-
async function initStream(stream) {
|
|
6979
|
+
async function initStream(stream, initSize) {
|
|
6979
6980
|
if (stream.init && !stream.initialized) {
|
|
6980
|
-
await stream.init();
|
|
6981
|
+
await stream.init(initSize);
|
|
6981
6982
|
}
|
|
6982
6983
|
}
|
|
6983
6984
|
|
|
@@ -7079,14 +7080,21 @@
|
|
|
7079
7080
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
7080
7081
|
*/
|
|
7081
7082
|
|
|
7083
|
+
/* global TextDecoder */
|
|
7084
|
+
|
|
7082
7085
|
const CP437 = "\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");
|
|
7086
|
+
const VALID_CP437 = CP437.length == 256;
|
|
7083
7087
|
|
|
7084
|
-
var decodeCP437 = stringValue => {
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
+
var decodeCP437 = (stringValue) => {
|
|
7089
|
+
if (VALID_CP437) {
|
|
7090
|
+
let result = "";
|
|
7091
|
+
for (let indexCharacter = 0; indexCharacter < stringValue.length; indexCharacter++) {
|
|
7092
|
+
result += CP437[stringValue[indexCharacter]];
|
|
7093
|
+
}
|
|
7094
|
+
return result;
|
|
7095
|
+
} else {
|
|
7096
|
+
return new TextDecoder().decode(stringValue);
|
|
7088
7097
|
}
|
|
7089
|
-
return result;
|
|
7090
7098
|
};
|
|
7091
7099
|
|
|
7092
7100
|
/*
|
|
@@ -7389,6 +7397,7 @@
|
|
|
7389
7397
|
bitFlag,
|
|
7390
7398
|
signature,
|
|
7391
7399
|
rawLastModDate,
|
|
7400
|
+
uncompressedSize,
|
|
7392
7401
|
compressedSize
|
|
7393
7402
|
} = zipEntry;
|
|
7394
7403
|
const localDirectory = zipEntry.localDirectory = {};
|
|
@@ -7429,7 +7438,7 @@
|
|
|
7429
7438
|
readable.size = size;
|
|
7430
7439
|
const { writable } = writer;
|
|
7431
7440
|
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
7432
|
-
await initStream(writer);
|
|
7441
|
+
await initStream(writer, uncompressedSize);
|
|
7433
7442
|
const { onstart, onprogress, onend } = options;
|
|
7434
7443
|
const workerOptions = {
|
|
7435
7444
|
options: {
|
|
@@ -7977,8 +7986,9 @@
|
|
|
7977
7986
|
let bufferedWrite;
|
|
7978
7987
|
let releaseLockWriter;
|
|
7979
7988
|
let releaseLockCurrentFileEntry;
|
|
7980
|
-
let
|
|
7989
|
+
let writingBufferedData;
|
|
7981
7990
|
let fileWriter;
|
|
7991
|
+
let fileWriterSize;
|
|
7982
7992
|
files.set(name, fileEntry);
|
|
7983
7993
|
try {
|
|
7984
7994
|
let lockPreviousFileEntry;
|
|
@@ -7995,6 +8005,7 @@
|
|
|
7995
8005
|
await initStream(writer);
|
|
7996
8006
|
fileWriter = writer;
|
|
7997
8007
|
}
|
|
8008
|
+
fileWriterSize = fileWriter.size;
|
|
7998
8009
|
fileEntry = await createFileEntry(reader, fileEntry, fileWriter.writable, zipWriter.config, options);
|
|
7999
8010
|
files.set(name, fileEntry);
|
|
8000
8011
|
fileEntry.filename = name;
|
|
@@ -8002,7 +8013,7 @@
|
|
|
8002
8013
|
let blob = fileWriter.getData();
|
|
8003
8014
|
await lockPreviousFileEntry;
|
|
8004
8015
|
await requestLockWriter();
|
|
8005
|
-
|
|
8016
|
+
writingBufferedData = true;
|
|
8006
8017
|
const { writable } = writer;
|
|
8007
8018
|
if (!dataDescriptor) {
|
|
8008
8019
|
const headerLength = 26;
|
|
@@ -8022,7 +8033,7 @@
|
|
|
8022
8033
|
blob = blob.slice(headerLength);
|
|
8023
8034
|
}
|
|
8024
8035
|
await blob.stream().pipeTo(writable, { preventClose: true, signal });
|
|
8025
|
-
|
|
8036
|
+
writingBufferedData = false;
|
|
8026
8037
|
}
|
|
8027
8038
|
fileEntry.offset = zipWriter.offset;
|
|
8028
8039
|
if (fileEntry.zip64) {
|
|
@@ -8034,9 +8045,12 @@
|
|
|
8034
8045
|
zipWriter.offset += fileEntry.length;
|
|
8035
8046
|
return fileEntry;
|
|
8036
8047
|
} catch (error) {
|
|
8037
|
-
if ((bufferedWrite &&
|
|
8038
|
-
|
|
8039
|
-
|
|
8048
|
+
if ((bufferedWrite && writingBufferedData) || (!bufferedWrite && fileEntry.writingData)) {
|
|
8049
|
+
zipWriter.hasCorruptedEntries = true;
|
|
8050
|
+
if (error) {
|
|
8051
|
+
error.corruptedEntry = true;
|
|
8052
|
+
}
|
|
8053
|
+
zipWriter.offset += fileWriter.size - fileWriterSize;
|
|
8040
8054
|
}
|
|
8041
8055
|
files.delete(name);
|
|
8042
8056
|
throw error;
|
|
@@ -8213,10 +8227,10 @@
|
|
|
8213
8227
|
arraySet(localHeaderArray, rawExtraField, 30 + rawFilename.length + rawExtraFieldAES.length + rawExtraFieldExtendedTimestamp.length + rawExtraFieldNTFS.length);
|
|
8214
8228
|
let result;
|
|
8215
8229
|
let compressedSize = 0;
|
|
8230
|
+
fileEntry.writingData = pendingFileEntry.writingData = true;
|
|
8216
8231
|
if (reader) {
|
|
8217
8232
|
reader.chunkSize = getChunkSize(config);
|
|
8218
8233
|
await writeData(writable, localHeaderArray);
|
|
8219
|
-
fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
|
|
8220
8234
|
const size = () => reader.size;
|
|
8221
8235
|
const readable = reader.readable;
|
|
8222
8236
|
readable.size = size;
|
|
@@ -8243,7 +8257,6 @@
|
|
|
8243
8257
|
compressedSize = result.size;
|
|
8244
8258
|
} else {
|
|
8245
8259
|
await writeData(writable, localHeaderArray);
|
|
8246
|
-
fileEntry.dataWritten = pendingFileEntry.dataWritten = true;
|
|
8247
8260
|
}
|
|
8248
8261
|
let dataDescriptorArray = new Uint8Array();
|
|
8249
8262
|
let dataDescriptorView, dataDescriptorOffset = 0;
|
|
@@ -8296,7 +8309,8 @@
|
|
|
8296
8309
|
creationDate,
|
|
8297
8310
|
lastAccessDate,
|
|
8298
8311
|
encrypted,
|
|
8299
|
-
length
|
|
8312
|
+
length,
|
|
8313
|
+
writingData: false
|
|
8300
8314
|
});
|
|
8301
8315
|
return fileEntry;
|
|
8302
8316
|
}
|