@zip.js/zip.js 2.6.34 → 2.6.36
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/dist/zip-fs-full.js +30 -24
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +30 -24
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +30 -24
- 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 +30 -24
- package/dist/zip.min.js +1 -1
- package/index.cjs +30 -24
- package/index.d.ts +21 -7
- package/lib/core/io.js +30 -24
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -272,7 +272,7 @@ export function getMimeType(fileExtension: string): string
|
|
|
272
272
|
* zip.js can handle multiple types of data thanks to a generic API. This feature is based on 2 abstract constructors: `Reader` and `Writer`.
|
|
273
273
|
* The classes inheriting from `Reader` help to read data from a source of data. The classes inheriting from `Writer` help to write data into a destination.
|
|
274
274
|
*/
|
|
275
|
-
interface
|
|
275
|
+
interface Initializable {
|
|
276
276
|
/**
|
|
277
277
|
* Initializes the instance asynchronously
|
|
278
278
|
*/
|
|
@@ -317,7 +317,7 @@ interface ReadableReader {
|
|
|
317
317
|
* }
|
|
318
318
|
* ```
|
|
319
319
|
*/
|
|
320
|
-
export class Reader<Type> implements
|
|
320
|
+
export class Reader<Type> implements Initializable, ReadableReader {
|
|
321
321
|
/**
|
|
322
322
|
* Creates the `Reader` instance
|
|
323
323
|
*
|
|
@@ -479,7 +479,7 @@ interface WritableWriter {
|
|
|
479
479
|
* }
|
|
480
480
|
* ```
|
|
481
481
|
*/
|
|
482
|
-
export class Writer<Type> implements
|
|
482
|
+
export class Writer<Type> implements Initializable, WritableWriter {
|
|
483
483
|
/**
|
|
484
484
|
* The `WritableStream` instance.
|
|
485
485
|
*/
|
|
@@ -521,13 +521,27 @@ export class TextWriter extends Writer<string> {
|
|
|
521
521
|
/**
|
|
522
522
|
* Represents a `Writer` instance used to retrieve the written data as a `Blob` instance.
|
|
523
523
|
*/
|
|
524
|
-
export class BlobWriter
|
|
524
|
+
export class BlobWriter implements Initializable, WritableWriter {
|
|
525
|
+
/**
|
|
526
|
+
* The `WritableStream` instance.
|
|
527
|
+
*/
|
|
528
|
+
writable: WritableStream
|
|
529
|
+
/**
|
|
530
|
+
* Initializes the instance asynchronously
|
|
531
|
+
*/
|
|
532
|
+
init(): Promise<void>
|
|
525
533
|
/**
|
|
526
534
|
* Creates the `BlobWriter` instance
|
|
527
535
|
*
|
|
528
536
|
* @param mimeString The MIME type of the content.
|
|
529
537
|
*/
|
|
530
538
|
constructor(mimeString?: string)
|
|
539
|
+
/**
|
|
540
|
+
* Retrieves all the written data
|
|
541
|
+
*
|
|
542
|
+
* @returns A promise resolving to the written data.
|
|
543
|
+
*/
|
|
544
|
+
getData(): Promise<Blob>
|
|
531
545
|
}
|
|
532
546
|
|
|
533
547
|
/**
|
|
@@ -545,7 +559,7 @@ export class Data64URIWriter extends Writer<string> {
|
|
|
545
559
|
/**
|
|
546
560
|
* Represents a `Writer` instance used to retrieve the written data from a generator of `Writer` instances (i.e. split zip files).
|
|
547
561
|
*/
|
|
548
|
-
export class SplitZipWriter implements
|
|
562
|
+
export class SplitZipWriter implements Initializable, WritableWriter {
|
|
549
563
|
/**
|
|
550
564
|
* The `WritableStream` instance.
|
|
551
565
|
*/
|
|
@@ -558,9 +572,9 @@ export class SplitZipWriter implements DataProcessor, WritableWriter {
|
|
|
558
572
|
* Creates the `SplitZipWriter` instance
|
|
559
573
|
*
|
|
560
574
|
* @param writerGenerator The MIME type of the content.
|
|
561
|
-
* @param maxSize The maximum size of the data written into `Writer` instances.
|
|
575
|
+
* @param maxSize The maximum size of the data written into `Writer` instances (default: 4GB).
|
|
562
576
|
*/
|
|
563
|
-
constructor(writerGenerator: AsyncGenerator<Writer<any> | WritableWriter | WritableStream, boolean>, maxSize
|
|
577
|
+
constructor(writerGenerator: AsyncGenerator<Writer<any> | WritableWriter | WritableStream, boolean>, maxSize?: number)
|
|
564
578
|
}
|
|
565
579
|
|
|
566
580
|
/**
|
package/lib/core/io.js
CHANGED
|
@@ -571,14 +571,14 @@ class SplitZipWriter extends Stream {
|
|
|
571
571
|
|
|
572
572
|
constructor(writerGenerator, maxSize = 4294967296) {
|
|
573
573
|
super();
|
|
574
|
-
const
|
|
575
|
-
Object.assign(
|
|
574
|
+
const zipWriter = this;
|
|
575
|
+
Object.assign(zipWriter, {
|
|
576
576
|
diskNumber: 0,
|
|
577
577
|
diskOffset: 0,
|
|
578
578
|
size: 0,
|
|
579
579
|
availableSize: maxSize
|
|
580
580
|
});
|
|
581
|
-
let
|
|
581
|
+
let diskSourceWriter, diskWritable, diskWriter;
|
|
582
582
|
const writable = new WritableStream({
|
|
583
583
|
async write(chunk) {
|
|
584
584
|
if (!diskWriter) {
|
|
@@ -586,43 +586,49 @@ class SplitZipWriter extends Stream {
|
|
|
586
586
|
if (done && !value) {
|
|
587
587
|
throw new Error(ERR_ITERATOR_COMPLETED_TOO_SOON);
|
|
588
588
|
} else {
|
|
589
|
-
|
|
590
|
-
|
|
589
|
+
diskSourceWriter = value;
|
|
590
|
+
diskSourceWriter.size = 0;
|
|
591
591
|
diskWritable = value.writable;
|
|
592
592
|
diskWriter = diskWritable.getWriter();
|
|
593
593
|
}
|
|
594
594
|
await this.write(chunk);
|
|
595
|
-
} else if (
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
await
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
writer.size += chunkLength;
|
|
602
|
-
writer.diskOffset += diskWritable.size = currentWriter.size;
|
|
603
|
-
writer.diskNumber++;
|
|
604
|
-
await diskWriter.close();
|
|
595
|
+
} else if (diskSourceWriter.size + chunk.length >= maxSize) {
|
|
596
|
+
const chunkLength = maxSize - diskSourceWriter.size;
|
|
597
|
+
await writeChunk(chunk.slice(0, chunkLength));
|
|
598
|
+
await closeDisk();
|
|
599
|
+
zipWriter.diskOffset += diskSourceWriter.size;
|
|
600
|
+
zipWriter.diskNumber++;
|
|
605
601
|
diskWriter = null;
|
|
606
|
-
await this.write(chunk);
|
|
602
|
+
await this.write(chunk.slice(chunkLength));
|
|
607
603
|
} else {
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
604
|
+
if (chunk.length) {
|
|
605
|
+
await writeChunk(chunk);
|
|
606
|
+
}
|
|
607
|
+
zipWriter.availableSize = maxSize - diskSourceWriter.size;
|
|
612
608
|
}
|
|
613
|
-
writer.availableSize = maxSize - currentWriter.size;
|
|
614
609
|
},
|
|
615
610
|
async close() {
|
|
616
611
|
await diskWriter.ready;
|
|
617
|
-
|
|
618
|
-
await diskWriter.close();
|
|
612
|
+
await closeDisk();
|
|
619
613
|
}
|
|
620
614
|
});
|
|
621
|
-
Object.defineProperty(
|
|
615
|
+
Object.defineProperty(zipWriter, PROPERTY_NAME_WRITABLE, {
|
|
622
616
|
get() {
|
|
623
617
|
return writable;
|
|
624
618
|
}
|
|
625
619
|
});
|
|
620
|
+
|
|
621
|
+
async function writeChunk(chunk) {
|
|
622
|
+
await diskWriter.ready;
|
|
623
|
+
await diskWriter.write(chunk);
|
|
624
|
+
diskSourceWriter.size += chunk.length;
|
|
625
|
+
zipWriter.size += chunk.length;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
async function closeDisk() {
|
|
629
|
+
diskWritable.size = diskSourceWriter.size;
|
|
630
|
+
await diskWriter.close();
|
|
631
|
+
}
|
|
626
632
|
}
|
|
627
633
|
}
|
|
628
634
|
|
package/package.json
CHANGED