Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/imaya/zlib.js
compact zlib, deflate, inflate, zip library in JavaScript
https://github.com/imaya/zlib.js
Last synced: 24 days ago
JSON representation
compact zlib, deflate, inflate, zip library in JavaScript
- Host: GitHub
- URL: https://github.com/imaya/zlib.js
- Owner: imaya
- License: other
- Created: 2012-04-15T19:32:40.000Z (about 12 years ago)
- Default Branch: develop
- Last Pushed: 2022-07-13T11:17:44.000Z (almost 2 years ago)
- Last Synced: 2024-05-21T23:03:56.322Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 17.8 MB
- Stars: 1,121
- Watchers: 45
- Forks: 351
- Open Issues: 38
-
Metadata Files:
- Readme: README.en.md
- Changelog: ChangeLog.md
- License: LICENSE
Lists
- awesome - imaya/zlib.js - compact zlib, deflate, inflate, zip library in JavaScript (JavaScript)
- awesome-stenudd - zlib.js - compact zlib, deflate, inflate, zip library in JavaScript (JavaScript)
README
zlib.js
=======[![Build Status](https://travis-ci.org/imaya/zlib.js.png?branch=master)](https://travis-ci.org/imaya/zlib.js)
[Japanese version](./README.md)
zlib.js is ZLIB(RFC1950), DEFLATE(RFC1951), GZIP(RFC1952) and PKZIP implementation in JavaScript.
Usage
------Use one in "bin" directory.
- zlib_and_gzip.min.js: ZLIB + GZIP
+ (Raw)
* rawdeflate.js: Raw Deflate
* rawinflate.js: Raw Inflate
+ zlib.min.js: ZLIB Inflate + Deflate
* inflate.min.js: ZLIB Inflate
* deflate.min.js: ZLIB Deflate
* inflate_stream.min.js: ZLIB Inflate (stream mode)
+ (GZIP)
* gzip.min.js: GZIP
* gunzip.min.js: GUNZIP
+ (PKZIP)
* zip.min.js ZIP
* unzip.min.js UNZIP
- node-zlib.js: (ZLIB + GZIP for node.js)### Compression
#### Raw Deflate
```js
// plain = Array. or Uint8Array
var deflate = new Zlib.RawDeflate(plain);
var compressed = deflate.compress();
```#### Raw Deflate Option
See ZLIB Option.
#### ZLIB
```js
// plain = Array. or Uint8Array
var deflate = new Zlib.Deflate(plain);
var compressed = deflate.compress();
```##### ZLIB Option
Second argument of Zlib.Deflate constructor
```js
{
compressionType: Zlib.Deflate.CompressionType, // compression type
lazy: number // lazy matching parameter
}
```
Zlib.Deflate.CompressionType
is enumerable,
Choose one inNONE
(Store),FIXED
(Fixed Huffman Coding),DYNAMIC
(Dynamic Huffman Coding).
Default value isDYNAMIC
.
lazy
is Lazy Matching length.
This parameter is deprecated.#### GZIP
GZIP implementation is incomplete.
However, there is no problem in usual use.```js
// plain = Array. or Uint8Array
var gzip = new Zlib.Gzip(plain);
var compressed = gzip.compress();
```##### GZIP Option
```js
{
deflateOptions: Object, // see: deflate option (ZLIB Option)
flags: {
fname: boolean, // use filename?
comment: boolean, // use comment?
fhcrc: boolean // use file checksum?
},
filename: string, // filename
comment: string // comment
}
```#### PKZIP
```js
var zip = new Zlib.Zip();
// plainData1
zip.addFile(plainData1, {
filename: stringToByteArray('foo.txt')
});
zip.addFile(plainData2, {
filename: stringToByteArray('bar.txt')
});
zip.addFile(plainData3, {
filename: stringToByteArray('baz.txt')
});
var compressed = zip.compress();function stringToByteArray(str) {
var array = new (window.Uint8Array !== void 0 ? Uint8Array : Array)(str.length);
var i;
var il;for (i = 0, il = str.length; i < il; ++i) {
array[i] = str.charCodeAt(i) & 0xff;
}return array;
}
```##### PKZIP Option
filename, comment, extraField are must use Uint8Array if enabled Typed Array.
```js
{
filename: (Array.|Uint8Array), // filename
comment: (Array.|Uint8Array), //comment
extraField: (Array.|Uint8Array), // extra field
compress: boolean, // compress when called "addFile" method.
compressionMethod: Zlib.Zip.CompressionMethod, // STORE or DEFLATE
os: Zlib.Zip.OperatingSystem, // MSDOS or UNIX or MACINTOSH
deflateOption: Object // see: ZLIB Option
}
```### Decompression
#### Raw Deflate
```js
// compressed = Array. or Uint8Array
var inflate = new Zlib.RawInflate(compressed);
var plain = inflate.decompress();
```#### Raw Deflate Option
See ZLIB Option.
#### ZLIB
```js
// compressed = Array. or Uint8Array
var inflate = new Zlib.Inflate(compressed);
var plain = inflate.decompress();
```##### ZLIB Option
Second argument of Zlib.Inflate constructor
```js
{
'index': number, // start position in input buffer
'bufferSize': number, // initial output buffer size
'bufferType': Zlib.Inflate.BufferType, // buffer expantion type
'resize': boolean, // resize buffer(ArrayBuffer) when end of decompression (default: false)
'verify': boolean // verify decompression result (default: false)
}
```
Zlib.Inflate.BufferType
is enumerable.
Choose oneADAPTIVE
(default) andBLOCK
.-
ADAPTIVE
: buffer expansion based on compression ratio in filled buffer.
-BLOCK
: buffer expansion based onBufferSize
.#### GZIP
```js
// compressed = Array. or Uint8Array
var gunzip = new Zlib.Gunzip(compressed);
var plain = gunzip.decompress();
```#### PKZIP
```js
// compressed = Array. or Uint8Array
var unzip = new Zlib.Unzip(compressed);
var filenames = unzip.getFilenames();
var plain = unzip.decompress(filenames[0]);
```### Node.js
see unit tests.
## Debug
If you want to know the code before compile, SourceMaps and PrettyPrint can be used.
### Source Map
If you want to use the Source Map, use `dev` version.
For example, you want to use Inflate with Source Map.
- inflate.min.js // release version
- inflate.dev.min.js // development version <- use this### Pretty Print
`zlib.pretty.js` is not renamed symbol.
How to build
------------Build using Grunt and Closure Compiler.
### Requirement
- Grunt
- Python### Build
Use "grunt" command.
```
$ grunt [target]
```#### Build target
target | generate file | implementation
---------------|-----------------------|-------------
deps | deps.js | (dependency: deps.js)
deflate | deflate.min.js | ZLIB Deflate
inflate | inflate.min.js | ZLIB Inflate
inflate_stream | inflate_stream.min.js | ZLIB Inflate (stream)
zlib | zlib.min.js | ZLIB Deflate + Inflate
gzip | gzip.min.js | GZIP Compression
gunzip | gunzip.min.js | GZIP Decompression
zlib_and_gzip | zlib_and_gzip.min.js | ZLIB + GZIP
node | node-zlib.js | ZLIB + GZIP for node.js
zip | zip.min.js | PKZIP Compression
unzip | unzip.min.js | PKZIP Decompression
all | * | default targetTest
------Unit tests are using Karma and mocha.
```
$ npm test
```### Browser only
```
$ npm run test-karma
```### Node.js only
```
$ npm run test-mocha
```Issue
-----Preset dictionary is not implemented.
License
--------Copyright © 2012 imaya.
Licensed under the MIT License.