conflux64
v3.3.9
Published
Build zip files out of readable streams in the browser
Downloads
3
Maintainers
Readme
Blazing Fast
- ~100 kB import
- Uses streams, minimizing memory overhead
Compatibility
| | | | ------- | -------: | | Chrome | ✅ | | Safari | ✅ | | Edge | ✅ | | Firefox | ✅ |
Issues
Some archivers, i.e. File-roller and Ark on Linux have problems reading archives created in conflux64. Yet, the majority of tested archivers have no problems reading the archives and report no issues. Since use case scenarios for this fork were pretty limited as well as time. Therefore, I left these issues unaddressed at the moment.
Examples
Usage
Importing Conflux
Package Manager
# With Yarn
yarn add conflux64
# With NPM
npm install --save conflux64
import { Reader, Writer } from 'conflux64';
CDN
<script src="https://cdn.jsdelivr.net/npm/@transcend-io/conflux@3"></script>
const { Reader, Writer } = window.conflux;
Writing a ZIP
import { Writer } from 'conflux64';
import streamSaver from "streamsaver";
// Set up conflux
const { readable, writable } = new Writer();
const writer = writable.getWriter();
// Set up streamsaver
const fileStream = streamSaver.createWriteStream("conflux.zip");
// Add a file
writer.write({
name: "/cat.txt",
lastModified: new Date(0),
stream: () => new Response("mjau").body
});
readable.pipeTo(fileStream);
writer.close();
Incorporating other streams
import { Writer } from 'conflux64';
const { readable, writable } = new Writer();
const writer = writable.getWriter();
const reader = readable.getReader();
(async () => {
writer.write({
name: "/cat.txt",
lastModified: new Date(0),
stream: () => new Response("mjau").body
});
const imgStream = await fetch(
"https://s3-us-west-2.amazonaws.com/bencmbrook/Earth.jpg"
).then(r => r.body);
writer.write({
name: "/Earth.jpg",
lastModified: new Date(0),
stream: () => imgStream
});
readable.pipeTo(fileStream);
writer.close();
})();
Reading ZIP files
import { Reader } from 'conflux64';
fetch("https://cdn.jsdelivr.net/gh/Stuk/jszip/test/ref/deflate.zip").then(
async res => {
const zip = await res.blob();
for await (const entry of Reader(zip)) {
console.log(entry);
}
}
);