shorter
v0.3.1
Published
Node.js module to very quickly (de)compress short strings. Uses the SIMD-powered entropy encoding features of shoco.
Downloads
69
Maintainers
Readme
shorter
Node.js module to very quickly (de)compress short strings.
Uses the SIMD-powered entropy encoding features of Christian Schramm's shoco.
Encodes ASCII-compatible characters (0x00
to 0x7F
)
whilst maintaining full UTF-8 support.
For ASCII-only strings, the byte length of the compressed output will never exceed the byte length of the input.
Works well with strings up to around 100 characters and is particularly well-suited to e-mail addresses and URLs.
Compression and decompression is typically 10x faster than zlib deflate.
Installation
npm install shorter
Usage
const shorter = require('shorter');
const encoded = shorter.compress('test');
console.log(Buffer.isBuffer(encoded)); // true
console.log(encoded.length); // 2
console.log(encoded.toString('hex')); // 'c899'
const encoded = shorter.compress(Buffer.from('test'));
console.log(Buffer.isBuffer(encoded)); // true
console.log(encoded.length); // 2
console.log(encoded.toString('hex')); // 'c899'
const decoded = shorter.decompress(Buffer.from('c899', 'hex'));
console.log(typeof decoded); // 'string'
console.log(decoded.length); // 4
console.log(decoded); // 'test'
API
compress(input)
input
is theBuffer
orString
to compress.
Returns the compressed/encoded Buffer
.
decompress(input)
input
is theBuffer
to decompress.
Returns the decompressed/decoded String
.
Testing
npm test
Licence
Copyright 2016, 2017 Lovell Fuller
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.