@zip.js/zip.js 2.8.46 → 2.8.47
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 +85 -9
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +95 -8
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +85 -9
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +86 -8
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +85 -9
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +99 -10
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +98 -9
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +97 -10
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +97 -10
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +96 -9
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +99 -10
- package/index-native.min.js +1 -1
- package/index.cjs +98 -9
- package/index.d.cts +141 -0
- package/index.d.ts +141 -0
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +6 -3
- package/lib/core/codec-worker.js +2 -1
- package/lib/core/constants.js +2 -0
- package/lib/core/options.js +4 -0
- package/lib/core/streams/codec-stream.js +2 -0
- package/lib/core/streams/common-crypto.js +2 -1
- package/lib/core/streams/zip-entry-stream.js +4 -2
- package/lib/core/util/sync-access-handle-temp-stream.js +2 -1
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +1 -1
- package/lib/core/zip-reader.js +58 -5
- package/lib/core/zip-writer.js +43 -8
- package/lib/zip-core-base.js +2 -1
- package/lib/zip-core-reader.js +2 -1
- package/lib/zip-core-writer.js +10 -1
- package/package.json +1 -1
package/lib/core/zip-writer.js
CHANGED
|
@@ -88,6 +88,7 @@ import {
|
|
|
88
88
|
SPLIT_ZIP_FILE_SIGNATURE,
|
|
89
89
|
LOCAL_FILE_HEADER_SIGNATURE,
|
|
90
90
|
DATA_DESCRIPTOR_RECORD_SIGNATURE,
|
|
91
|
+
DIGITAL_SIGNATURE_RECORD_SIGNATURE,
|
|
91
92
|
CENTRAL_FILE_HEADER_SIGNATURE,
|
|
92
93
|
CENTRAL_FILE_HEADER_LENGTH,
|
|
93
94
|
END_OF_CENTRAL_DIR_SIGNATURE,
|
|
@@ -146,7 +147,8 @@ import { getRegisteredCodec } from "./codec-registry.js";
|
|
|
146
147
|
import { supportsDeflate } from "./codec-worker.js";
|
|
147
148
|
import {
|
|
148
149
|
CODEC_DEFLATE,
|
|
149
|
-
runWorker
|
|
150
|
+
runWorker,
|
|
151
|
+
ERR_UNSUPPORTED_CRYPTO_API
|
|
150
152
|
} from "./codec-pool.js";
|
|
151
153
|
import {
|
|
152
154
|
initStream,
|
|
@@ -209,7 +211,8 @@ import {
|
|
|
209
211
|
OPTION_OFFSET,
|
|
210
212
|
OPTION_USDZ,
|
|
211
213
|
OPTION_UNIX_EXTRA_FIELD_TYPE,
|
|
212
|
-
OPTION_LOCAL_EXTRA_FIELD
|
|
214
|
+
OPTION_LOCAL_EXTRA_FIELD,
|
|
215
|
+
OPTION_SIGN_CENTRAL_DIRECTORY
|
|
213
216
|
} from "./options.js";
|
|
214
217
|
|
|
215
218
|
const ERR_DUPLICATED_NAME = "File already exists";
|
|
@@ -237,6 +240,7 @@ const ERR_INVALID_UNIX_EXTRA_FIELD_TYPE = "Invalid unixExtraFieldType (must be '
|
|
|
237
240
|
const ERR_INVALID_UNIX_ID_SIZE = "uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)";
|
|
238
241
|
const ERR_INVALID_MSDOS_ATTRIBUTES = "Invalid msdosAttributesRaw (must be integer 0..255)";
|
|
239
242
|
const ERR_INVALID_MSDOS_DATA = "Invalid msdosAttributes (must be an object with boolean flags)";
|
|
243
|
+
const ERR_INVALID_SIGNATURE_DATA = "Signature data exceeds 64KB";
|
|
240
244
|
|
|
241
245
|
const EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);
|
|
242
246
|
const EXTRAFIELD_OFFSET_AES_VENDOR_VERSION = 4;
|
|
@@ -515,7 +519,16 @@ export {
|
|
|
515
519
|
ERR_UNSUPPORTED_FORMAT,
|
|
516
520
|
ERR_UNDEFINED_UNCOMPRESSED_SIZE,
|
|
517
521
|
ERR_UNDEFINED_READER,
|
|
518
|
-
ERR_ZIP_NOT_EMPTY
|
|
522
|
+
ERR_ZIP_NOT_EMPTY,
|
|
523
|
+
ERR_INVALID_SIGNATURE_DATA,
|
|
524
|
+
ERR_INVALID_UID,
|
|
525
|
+
ERR_INVALID_GID,
|
|
526
|
+
ERR_INVALID_UNIX_MODE,
|
|
527
|
+
ERR_INVALID_UNIX_EXTRA_FIELD_TYPE,
|
|
528
|
+
ERR_INVALID_UNIX_ID_SIZE,
|
|
529
|
+
ERR_INVALID_MSDOS_ATTRIBUTES,
|
|
530
|
+
ERR_INVALID_MSDOS_DATA,
|
|
531
|
+
ERR_UNSUPPORTED_CRYPTO_API
|
|
519
532
|
};
|
|
520
533
|
|
|
521
534
|
async function addFile(zipWriter, name, reader, options) {
|
|
@@ -1614,8 +1627,9 @@ function updateLocalHeader({
|
|
|
1614
1627
|
|
|
1615
1628
|
async function closeFile(zipWriter, comment, options) {
|
|
1616
1629
|
const directoryDataLength = createDirectoryRecords(zipWriter.files);
|
|
1617
|
-
const directoryStart = await writeDirectoryRecords(zipWriter, directoryDataLength, options);
|
|
1618
|
-
await
|
|
1630
|
+
const { directoryStart, directoryArray } = await writeDirectoryRecords(zipWriter, directoryDataLength, options);
|
|
1631
|
+
const signatureLength = await writeDigitalSignatureRecord(zipWriter, directoryArray, options);
|
|
1632
|
+
await writeEndOfDirectoryRecord(zipWriter, comment, options, { directoryStart, directoryDataLength, signatureLength });
|
|
1619
1633
|
}
|
|
1620
1634
|
|
|
1621
1635
|
function createDirectoryRecords(files) {
|
|
@@ -1772,12 +1786,33 @@ async function writeDirectoryRecords(zipWriter, directoryDataLength, options) {
|
|
|
1772
1786
|
}
|
|
1773
1787
|
}
|
|
1774
1788
|
await writeData(writer, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);
|
|
1775
|
-
return {
|
|
1789
|
+
return {
|
|
1790
|
+
directoryStart: { diskNumber: directoryStartDiskNumber, diskOffset: directoryStartDiskOffset },
|
|
1791
|
+
directoryArray
|
|
1792
|
+
};
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
async function writeDigitalSignatureRecord(zipWriter, directoryArray, options) {
|
|
1796
|
+
const signCentralDirectory = getOptionValue(zipWriter, options, OPTION_SIGN_CENTRAL_DIRECTORY);
|
|
1797
|
+
if (signCentralDirectory) {
|
|
1798
|
+
const signatureData = await signCentralDirectory(directoryArray);
|
|
1799
|
+
const signatureDataLength = getLength(signatureData);
|
|
1800
|
+
if (signatureDataLength > MAX_16_BITS) {
|
|
1801
|
+
throw new Error(ERR_INVALID_SIGNATURE_DATA);
|
|
1802
|
+
}
|
|
1803
|
+
const signatureRecord = createRecordWriter(6 + signatureDataLength);
|
|
1804
|
+
signatureRecord.uint32(DIGITAL_SIGNATURE_RECORD_SIGNATURE);
|
|
1805
|
+
signatureRecord.uint16(signatureDataLength);
|
|
1806
|
+
signatureRecord.bytes(signatureData);
|
|
1807
|
+
await writeData(zipWriter.writer, signatureRecord.array);
|
|
1808
|
+
return 6 + signatureDataLength;
|
|
1809
|
+
}
|
|
1810
|
+
return 0;
|
|
1776
1811
|
}
|
|
1777
1812
|
|
|
1778
1813
|
async function writeEndOfDirectoryRecord(zipWriter, comment, options, cdInfo) {
|
|
1779
1814
|
const { writer } = zipWriter;
|
|
1780
|
-
const { directoryStart } = cdInfo;
|
|
1815
|
+
const { directoryStart, signatureLength } = cdInfo;
|
|
1781
1816
|
let { directoryDataLength } = cdInfo;
|
|
1782
1817
|
let filesLength = zipWriter.files.size;
|
|
1783
1818
|
let diskNumber = directoryStart.diskNumber;
|
|
@@ -1816,7 +1851,7 @@ async function writeEndOfDirectoryRecord(zipWriter, comment, options, cdInfo) {
|
|
|
1816
1851
|
endOfdirectoryRecord.uint64(directoryOffset);
|
|
1817
1852
|
endOfdirectoryRecord.uint32(ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE);
|
|
1818
1853
|
endOfdirectoryRecord.uint32(lastDiskNumber);
|
|
1819
|
-
endOfdirectoryRecord.uint64(BigInt(getSegmentOffset(zipWriter, writer)) + BigInt(directoryDataLength));
|
|
1854
|
+
endOfdirectoryRecord.uint64(BigInt(getSegmentOffset(zipWriter, writer)) + BigInt(directoryDataLength) + BigInt(signatureLength));
|
|
1820
1855
|
endOfdirectoryRecord.uint32(lastDiskNumber + 1);
|
|
1821
1856
|
const supportZip64SplitFile = getOptionValue(zipWriter, options, OPTION_SUPPORT_ZIP64_SPLIT_FILE, true);
|
|
1822
1857
|
if (supportZip64SplitFile) {
|
package/lib/zip-core-base.js
CHANGED
package/lib/zip-core-reader.js
CHANGED
package/lib/zip-core-writer.js
CHANGED
|
@@ -41,5 +41,14 @@ export {
|
|
|
41
41
|
ERR_UNSUPPORTED_FORMAT,
|
|
42
42
|
ERR_UNDEFINED_UNCOMPRESSED_SIZE,
|
|
43
43
|
ERR_UNDEFINED_READER,
|
|
44
|
-
ERR_ZIP_NOT_EMPTY
|
|
44
|
+
ERR_ZIP_NOT_EMPTY,
|
|
45
|
+
ERR_INVALID_SIGNATURE_DATA,
|
|
46
|
+
ERR_INVALID_UID,
|
|
47
|
+
ERR_INVALID_GID,
|
|
48
|
+
ERR_INVALID_UNIX_MODE,
|
|
49
|
+
ERR_INVALID_UNIX_EXTRA_FIELD_TYPE,
|
|
50
|
+
ERR_INVALID_UNIX_ID_SIZE,
|
|
51
|
+
ERR_INVALID_MSDOS_ATTRIBUTES,
|
|
52
|
+
ERR_INVALID_MSDOS_DATA,
|
|
53
|
+
ERR_UNSUPPORTED_CRYPTO_API
|
|
45
54
|
} from "./core/zip-writer.js";
|
package/package.json
CHANGED