🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

lz4-napi

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lz4-napi

Fastest lz4 compression library in Node.js, powered by napi-rs and lz4-flex.

2.8.0
latest
Source
npm
Version published
Weekly downloads
12K
12.71%
Maintainers
1
Weekly downloads
 
Created
Source

lz4-napi

Node.js NAPI Binding for LZ4 compression algorithm, powered by Rust napi-rs and lz4-flex.

Pros:

  • Fast! ⚡️
  • Memory Safe! 🔒
  • Uses libuv's threadpool! 🧵

Table of content

Installation

npm i lz4-napi
# OR
yarn add lz4-napi

Usage

Compress

const { readFile } = require('fs/promises');
const { compress } = require('lz4-napi');

// if you support top-level await
const buffer = await readFile("./bigFile.dat");
const compressedBuffer = await compress(buffer)
// Store compressed buffer somewhere

Uncompress

const { uncompress } = require('lz4-napi');

// if you support top-level await
const compressedBuffer = await getFromSomeStorage();
const uncompressedBuffer = await uncompress(compressedBuffer)
// Do something with compressedBuffer!

APIs

Promise

compress

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Promise<Buffer>

uncompress

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Promise<Buffer>

Sync

compressSync

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Buffer

uncompressSync

(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) => Buffer

Performance

Hardware

Benchmarks runs on the following hardware:

  • Processor Name: i9 9900K
  • Total Number of Cores: 8
  • Hyper-Threading Technology: Enabled
  • Memory: 32 GB

Benchmark

Running "Compress" suite...
Progress: 100%

  lz4:
    911 ops/s, ±18.64%     | 54.68% slower

  snappy:
    2 010 ops/s, ±19.23%   | fastest

  gzip:
    78 ops/s, ±18.76%      | 96.12% slower

  deflate:
    118 ops/s, ±20.42%     | 94.13% slower

  brotli:
    6 ops/s, ±0.21%       | slowest, 99.7% slower

Finished 5 cases!
  Fastest: snappy
  Slowest: brotli
Running "Decompress" suite...
Progress: 100%

  lz4:
    9 425 ops/s, ±12.50%   | fastest

  snappy:
    3 900 ops/s, ±13.39%   | 58.62% slower

  gzip:
    823 ops/s, ±20.48%     | slowest, 91.27% slower

  deflate:
    1 350 ops/s, ±12.52%   | 85.68% slower

  brotli:
    979 ops/s, ±11.55%     | 89.61% slower

Finished 5 cases!
  Fastest: lz4
  Slowest: gzip
Done in 61.20s.

Contributing

Project is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome.

This projects uses conventional commit so be sure to use standard commit format or PR won't be accepted

  • Fork the Project
  • Create your Feature Branch (git checkout -b feature/AmazingFeature)
  • Commit your Changes (git commit -m 'feat(scope): some AmazingFeature')
  • Push to the Branch (git push origin feature/AmazingFeature)
  • Open a Pull Request

Acknowledgments

License

Distributed under the MIT License. See LICENSE for more information.

Keywords

napi-rs

FAQs

Package last updated on 12 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts