npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@eugene_jao/simplezip.js

v1.1.1

Published

Lightweight uncompressed browser-compatible ZIP generation, supported file name encoded by utf-8

Downloads

2

Readme

SimpleZIP.js

A light-weight library for building uncompressed ZIP files, in NodeJS or in the Browser. Supported file name encoded by utf-8.

Getting Started

With NPM / NodeJS

npm install --save simplezip.js

And then

const SimpleZip = require("simplezip.js");
const fs = require("fs");

let files = [{
    name: "FirstFile.txt",
    data: "The contents"
}, {
    name: "SecondFile.txt",
    data: Buffer.from("Also, the contents",'utf8')
}];

// This returns an ArrayBuffer
let data = SimpleZip.GenerateZipFrom(files);

fs.writeFileSync("output.zip", new Buffer(data), {encoding: 'binary'});

With HTML / Javascript

It's easy! Add simplezip.min.js to your project, then add

<script type="text/javascript" src="?...../simplezip.min.js"></script>

to your headers, and then:

var files = [{
    name: "FirstFile.txt",
    data: "The contents"
}, {
    name: "SecondFile.txt",
    data: new Uint8Array([65, 66, 67, 68])
}];

var data = SimpleZip.GenerateZipFrom(files);
// Can then convert to a blob and download the file
var blob = new Blob([data], {type: "octet/stream"});
var url = window.URL.createObjectURL(blob);

// Append to document, or whatever you want to do
var el = document.createElement("a");
el.href = url;
el.target = '_blank';
el.download = "output.zip";
el.innerHTML = "Download!"
document.getElementsByTagName("body")[0].appendChild(el);

API

Note that all 'files' passed to the SimpleZip API should be of the form

{
    name:string,
    data:ArrayBuffer|Uint8Array|string
}

SimpleZip.GenerateZipFrom([files])

A static method to create the entire ZIP file all at once. This allocates the exact amount of space required, and fills it with the files specified.


new SimpleZip(expectedSize)

Creates a new SimpleZip object, and allocates expectedSize bytes for the entire ZIP file. If this isn't enough, it will re-allocate later when adding new files.


SimpleZip#appendFiles([files])

Appends the specified files to the ZIP file. Will re-allocate space to fit them all if required.


SimpleZip#appendFile(file)

Just a helper function. Calls appendFiles with the file wrapped in an array.


SimpleZip#generate()

Appends the final ZIP records, and returns the ZIP file in an ArrayBuffer. Will re-allocate space to fit the extra records if required.


SimpleZip#ensureRemainingSpace(remaining)

Expands the capacity of the underlying ArrayBuffer to ensure at least remaining bytes are free to be filled. This also includes ZIP entry records and headers etc. So if you're resizing it to fit a file with a certain size, then add about 100 bytes more per file for the file names and ZIP entries etc.