lzbase62

LZ77(LZSS) based compression algorithm in base62 for JavaScript

Usage no npm install needed!

<script type="module">
  import lzbase62 from 'https://cdn.skypack.dev/lzbase62';
</script>

README

lzbase62

LZ77(LZSS) based compression algorithm in base62 for JavaScript.

NPM Version Build Status Bundle Size (minified) GitHub License

The compressed result will be a string in base 62 (0-9A-Za-z) characters.
This is useful when storing large amounts of data in size-limited storage such as localStorage or cookies.

Demo

Installation

npm

$ npm install --save lzbase62

Usage

var data = 'hello hello hello';
console.log(data.length); // 17

var compressed = lzbase62.compress(data);
console.log(compressed); // 'tYVccfrgxGL'
console.log(compressed.length); // 11
console.log(compressed.length < data.length); // true

var decompressed = lzbase62.decompress(compressed);
console.log(decompressed); // 'hello hello hello'
console.log(decompressed === data); // true

node

const lzbase62 = require('lzbase62');
const compressed = lzbase62.compress('hello hello hello');

webpack etc.

import lzbase62 from 'lzbase62';
const compressed = lzbase62.compress('hello hello hello');

browser (standalone)

<script src="lzbase62.min.js"></script>
<script>
var compressed = lzbase62.compress('hello hello hello');
</script>

Object lzbase62 is defined in the global scope if running in the browser window. ( window.lzbase62 )

API


lzbase62.compress(data, [options])

Compress data to a base62 [0-9a-zA-Z] encoded string.

Arguments

  • data (string) : Input data
  • [options] (object) : Compress options
    • onData (function (data) {}) : Called when a data is chunked
    • onEnd (function () {}) : Called when process is finished

Returns

(string) : Compressed data

Example

Compress string

var compressed = lzbase62.compress('abcabcabcabcabc');
console.log(compressed); // 'tRSTxDM'

Compress data using onData events

var string = 'hello hello hello';
var compressed = [];

lzbase62.compress(string, {
  onData: function(data) {
    compressed.push(data);
  },
  onEnd: function() {
    console.log(compressed.join('')); // 'tYVccfrgxGL'
  }
});

lzbase62.decompress(data, [options])

Decompress data from a base62 [0-9a-zA-Z] encoded string.

Arguments

  • data (string) : Input data
  • [options] (object) : Decompress options
    • onData (function (data) {}) : Called when a data is chunked
    • onEnd (function () {}) : Called when process is finished

Returns

(string) : Decompressed data

Example

Decompress string

var decompressed = lzbase62.decompress('tRSTxDM');
console.log(decompressed); // 'abcabcabcabcabc'

Decompress data using onData events

var compressed = 'tYVccfrgxGL';
var decompressed = [];

lzbase62.decompress(compressed, {
  onData: function(data) {
    decompressed.push(data);
  },
  onEnd: function() {
    console.log(decompressed.join('')); // 'hello hello hello'
  }
});

License

MIT