Gathering detailed insights and metrics for lzutf8-light
Gathering detailed insights and metrics for lzutf8-light
Gathering detailed insights and metrics for lzutf8-light
Gathering detailed insights and metrics for lzutf8-light
A high-performance Javascript string compression library
npm install lzutf8-light
Typescript
Module System
Node Version
NPM Version
74.1
Supply Chain
99
Quality
78
Maintenance
100
Vulnerability
100
License
TypeScript (80.14%)
JavaScript (18.09%)
CSS (1.42%)
HTML (0.36%)
Total Downloads
30,034
Last Day
10
Last Week
86
Last Month
385
Last Year
6,096
128 Commits
1 Watching
3 Branches
1 Contributors
Latest Version
0.6.5
Package Id
lzutf8-light@0.6.5
Unpacked Size
119.72 kB
Size
25.85 kB
File Count
6
NPM Version
10.1.0
Node Version
20.9.0
Publised On
10 Apr 2024
Cumulative downloads
Total Downloads
Last day
-50%
10
Compared to previous day
Last week
-18.1%
86
Compared to previous week
Last month
-10%
385
Compared to previous month
Last year
-55.2%
6,096
Compared to previous year
LZ-UTF8-LIGHT, lightweight version forded from LZ-UTF8 is a string compression library and format. Is an extension to the UTF-8 character encoding, augmenting the UTF-8 bytestream with optional compression based the LZ77 algorithm. Some of its properties:
Javascript implementation:
"BinaryString"
encoding described later in this document) when binary storage is not available or desired (e.g. when using LocalStorage or older IndexedDB).Node.js:
npm install lzutf8-light
1var LZUTF8_LIGHT = require('lzutf8-light');
"ByteArray"
- An array of bytes. As of 0.3.2
, always a Uint8Array
. In versions up to 0.2.3
the type was determined by the platform (Array
for browsers that don't support typed arrays, Uint8Array
for supporting browsers and Buffer
for Node.js).
IE8/9 and support was dropped at 0.3.0
though these browsers can still be used with a typed array polyfill.
"Buffer"
- A Node.js Buffer
object.
"StorageBinaryString"
- A string
containing compacted binary data encoded to fit in valid UTF-16 strings. Please note the older, deprecated, "BinaryString"
encoding, is still internally supported in the library but has been removed from this document. More details are included further in this document.
"Base64"
- A base 64 string.
1var output = LZUTF8_LIGHT.compress(input, [options]);
Compresses the given input data.
input
can be either a String
or UTF-8 bytes stored in a Uint8Array
or Buffer
options
(optional): an object that may have any of the properties:
outputEncoding
: "ByteArray"
(default), "Buffer"
, "StorageBinaryString"
or "Base64"
returns: compressed data encoded by encoding
, or ByteArray
if not specified.
1var output = LZUTF8_LIGHT.decompress(input, [options]);
Decompresses the given compressed data.
input
: can be either a Uint8Array
, Buffer
or String
(where encoding scheme is then specified in inputEncoding
)
options
(optional): an object that may have the properties:
inputEncoding
: "ByteArray"
(default), "StorageBinaryString"
or "Base64"
outputEncoding
: "String"
(default), "ByteArray"
or "Buffer"
to return UTF-8 bytesreturns: decompressed bytes encoded as encoding
, or as String
if not specified.
1var compressor = new LZUTF8_LIGHT.Compressor();
Creates a compressor object. Can be used to incrementally compress a multi-part stream of data.
returns: a new LZUTF8_LIGHT.Compressor
object
1var compressor = new LZUTF8_LIGHT.Compressor(); 2var compressedBlock = compressor.compressBlock(input);
Compresses the given input UTF-8 block.
input
can be either a String
, or UTF-8 bytes stored in a Uint8Array
or Buffer
returns: compressed bytes as ByteArray
This can be used to incrementally create a single compressed stream. For example:
1var compressor = new LZUTF8_LIGHT.Compressor(); 2var compressedBlock1 = compressor.compressBlock(block1); 3var compressedBlock2 = compressor.compressBlock(block2); 4var compressedBlock3 = compressor.compressBlock(block3); 5..
1var decompressor = new LZUTF8_LIGHT.Decompressor();
Creates a decompressor object. Can be used to incrementally decompress a multi-part stream of data.
returns: a new LZUTF8_LIGHT.Decompressor
object
1var decompressor = new LZUTF8_LIGHT.Decompressor(); 2var decompressedBlock = decompressor.decompressBlock(input);
Decompresses the given block of compressed bytes.
input
can be either a Uint8Array
or Buffer
returns: decompressed UTF-8 bytes as ByteArray
Remarks: will always return the longest valid UTF-8 stream of bytes possible from the given input block. Incomplete input or output byte sequences will be prepended to the next block.
Note: This can be used to incrementally decompress a single compressed stream. For example:
1var decompressor = new LZUTF8_LIGHT.Decompressor(); 2var decompressedBlock1 = decompressor.decompressBlock(block1); 3var decompressedBlock2 = decompressor.decompressBlock(block2); 4var decompressedBlock3 = decompressor.decompressBlock(block3); 5..
1var decompressor = new LZUTF8_LIGHT.Decompressor(); 2var decompressedBlockAsString = decompressor.decompressBlockToString(input);
Decompresses the given block of compressed bytes and converts the result to a String
.
input
can be either a Uint8Array
or Buffer
returns: decompressed String
Remarks: will always return the longest valid string possible from the given input block. Incomplete input or output byte sequences will be prepended to the next block.
1var compressionStream = LZUTF8_LIGHT.createCompressionStream();
Creates a compression stream. The stream will accept both Buffers and Strings in any encoding supported by Node.js (e.g. utf8
, utf16
, ucs2
, base64
, hex
, binary
etc.) and return Buffers.
example:
1var sourceReadStream = fs.createReadStream(“content.txt”); 2var destWriteStream = fs.createWriteStream(“content.txt.lzutf8”); 3var compressionStream = LZUTF8_LIGHT.createCompressionStream(); 4 5sourceReadStrem.pipe(compressionStream).pipe(destWriteStream);
On error: emits an error
event with the Error
object as parameter.
1var decompressionStream = LZUTF8_LIGHT.createDecompressionStream();
Creates a decompression stream. The stream will accept and return Buffers.
On error: emits an error
event with the Error
object as parameter.
1var output = LZUTF8_LIGHT.encodeUTF8(input);
Encodes a string to UTF-8.
input
as String
returns: encoded bytes as ByteArray
1var outputString = LZUTF8_LIGHT.decodeUTF8(input);
Decodes UTF-8 bytes to a String.
input
as either a Uint8Array
or Buffer
returns: decoded bytes as String
1var outputString = LZUTF8_LIGHT.encodeBase64(bytes);
Encodes bytes to a Base64 string.
input
as either a Uint8Array
or Buffer
returns: resulting Base64 string.
remarks: Maps every 3 consecutive input bytes to 4 output characters of the set A-Z
,a-z
,0-9
,+
,/
(a total of 64 characters). Increases stored byte size to 133.33% of original (when stored as ASCII or UTF-8) or 266% (stored as UTF-16).
1var output = LZUTF8_LIGHT.decodeBase64(input);
Decodes UTF-8 bytes to a String.
input
as String
returns: decoded bytes as ByteArray
remarks: the decoder cannot decode concatenated base64 strings. Although it is possible to add this capability to the JS version, compatibility with other decoders (such as the Node.js decoder) prevents this feature to be added.
Note: the older BinaryString
encoding has been deprecated due to a compatibility issue with the IE browser's LocalStorage/SessionStorage implementation. This newer version works around that issue by avoiding the 0
codepoint.
1var outputString = LZUTF8_LIGHT.encodeStorageBinaryString(input);
Encodes binary bytes to a valid UTF-16 string.
input
as either a Uint8Array
or Buffer
returns: String
remarks: To comply with the UTF-16 standard, it only uses the bottom 15 bits of each character, effectively mapping every 15 input bits to a single 16 bit output character. This Increases the stored byte size to 106.66% of original.
Note: the older BinaryString
encoding has been deprecated due to a compatibility issue with the IE browser's LocalStorage/SessionStorage implementation. This newer version works around that issue by avoiding the 0
codepoint.
1var output = LZUTF8_LIGHT.decodeStorageBinaryString(input);
Decodes a binary string.
input
as String
returns: decoded bytes as ByteArray
remarks: Multiple binary strings may be freely concatenated and decoded as a single string. This is made possible by ending every sequence with special marker (char code 32768 for an even-length sequence and 32769 for a an odd-length sequence).
0.1.x
: Initial release.0.2.x
: Added async error handling. Added support for TextEncoder
and TextDecoder
when available.0.3.x
: Removed support to IE8/9. Removed support for plain Array
inputs. All "ByteArray"
outputs are now Uint8Array
objects. A separate "Buffer"
encoding setting can be used to return Buffer
objects.0.4.x
: Major code restructuring. Removed support for versions of Node.js prior to 4.0
.0.5.x
: Added the "StorageBinaryString"
encoding.Copyright (c) 2014-2018, Rotem Dan <rotemdan@gmail.com>.
Source code and documentation are available under the MIT license.
No vulnerabilities found.
No security vulnerabilities found.