0.0.10 • Published 1 year ago

esm-archive v0.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

esm-archive

A tiny library for bundling multiple files into a single binary blob.

import { Archive, bundle } from "esm-archive";

// bundle some files
const data = bundle([
  new File(["bar"], "foo.txt", { type: "text/plain" }),
  new File(["foo"], "bar.txt", { type: "text/plain" }),
]);

// read the archive
const archive = new Archive(data);
archive.checksum; // a 32-bit checksum of the archive
archive.entries.length; // => 2
archive.entries[0].name; // => "foo.txt"
archive.entries[0].type; // => "text/plain"
archive.entries[1].name; // => "bar.txt"
archive.entries[1].type; // => "text/plain"
archive.openFile("foo.txt"); // => File(["bar"], "foo.txt", { type: "text/plain" })
archive.openFile("bar.txt"); // => File(["foo"], "bar.txt", { type: "text/plain" })

Compression

This library does not compress the archived files. Below is an example of how to use CompressionStream to compress data with gzip algorithm, and use DecompressionStream to decompress the data again.

import { Archive, bundle } from "esm-archive";

const data = bundle([/* add some files */]);

// compress and decompress the data
const compressed = await readAll(new Blob([data]).stream().pipeThrough(new CompressionStream("gzip")));
const decompressed = await readAll(new Blob([compressed]).stream().pipeThrough(new DecompressionStream("gzip")));

Note that CompressionStream and DecompressionStream are not supported in all browsers, and you may need to use a polyfill or a different compression algorithm depending on your requirements.

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.5

1 year ago

0.0.6

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago