{"id":13525167,"url":"https://github.com/antoniomuso/lz4-napi","last_synced_at":"2025-04-04T15:06:19.988Z","repository":{"id":37090377,"uuid":"431933068","full_name":"antoniomuso/lz4-napi","owner":"antoniomuso","description":"Fastest lz4 compression library in Node.js, powered by napi-rs and lz4-flex.","archived":false,"fork":false,"pushed_at":"2024-10-24T07:51:26.000Z","size":3214,"stargazers_count":59,"open_issues_count":19,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T14:05:26.425Z","etag":null,"topics":["bindings","compression","compression-library","fast","javascript","lz4","napi","napi-rs","node-api","nodejs","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antoniomuso.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-25T17:51:34.000Z","updated_at":"2025-02-27T12:31:11.000Z","dependencies_parsed_at":"2024-03-19T10:37:48.846Z","dependency_job_id":"a0bf6cf8-7c9f-446c-af13-2e1d99c839fc","html_url":"https://github.com/antoniomuso/lz4-napi","commit_stats":{"total_commits":175,"total_committers":3,"mean_commits":"58.333333333333336","dds":"0.26857142857142857","last_synced_commit":"1d6f149d4055345fe989039449cadf959daf8448"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":"napi-rs/package-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniomuso%2Flz4-napi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniomuso%2Flz4-napi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniomuso%2Flz4-napi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniomuso%2Flz4-napi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antoniomuso","download_url":"https://codeload.github.com/antoniomuso/lz4-napi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246880366,"owners_count":20848849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bindings","compression","compression-library","fast","javascript","lz4","napi","napi-rs","node-api","nodejs","rust","rust-lang"],"created_at":"2024-08-01T06:01:16.527Z","updated_at":"2025-04-04T15:06:19.962Z","avatar_url":"https://github.com/antoniomuso.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# lz4-napi  \n\n\u003e Node.js NAPI Binding for LZ4 compression algorithm, powered by Rust [napi-rs](https://napi.rs) and [lz4-flex](https://github.com/PSeitz/lz4_flex).\n\n**Pros:**\n\n- Fast! ⚡️\n- Memory Safe! 🔒\n- Uses libuv's threadpool! 🧵\n\n## Table of content\n\n\u003c!-- toc --\u003e\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Compress](#compress)\n  - [Uncompress](#uncompress)\n- [APIs](#apis)\n  - [Promises](#promises)\n    - [`compress`](#compress)\n    - [`uncompress`](#uncompress)\n  - [Sync](#sync)\n    - [`compressSync`](#compresssync)\n    - [`uncompressSync`](#uncompresssync)\n- [Benchmarks](#benchmarks)\n- [Performance](#performance)\n  - [Hardware](#hardware)\n  - [Results](#results)\n- [Contributing](#contributing)\n- [License](#license)\n\n\u003c!-- tocstop --\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Installation\n\n```sh\nnpm i lz4-napi\n# OR\nyarn add lz4-napi\n```\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\n### Compress\n\n```js\nconst { readFile } = require('fs/promises');\nconst { compress } = require('lz4-napi');\n\n// if you support top-level await\nconst buffer = await readFile(\"./bigFile.dat\");\nconst compressedBuffer = await compress(buffer)\n// Store compressed buffer somewhere\n```\n\n### Uncompress\n\n```js\nconst { uncompress } = require('lz4-napi');\n\n// if you support top-level await\nconst compressedBuffer = await getFromSomeStorage();\nconst uncompressedBuffer = await uncompress(compressedBuffer)\n// Do something with compressedBuffer!\n```\n\n## APIs\n\n### Promise\n\n#### `compress`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) =\u003e Promise\u003cBuffer\u003e\n```\n\n#### `uncompress`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) =\u003e Promise\u003cBuffer\u003e\n```\n\n#### `compressFrame`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array) =\u003e Promise\u003cBuffer\u003e\n```\n\n#### `decompressFrame`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array) =\u003e Promise\u003cBuffer\u003e\n```\n\n### Sync\n\n#### `compressSync`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) =\u003e Buffer\n```\n\n#### `uncompressSync`\n\n```ts\n(data: Buffer | string | ArrayBuffer | Uint8Array, dict?: string | Buffer) =\u003e Buffer\n```\n\n## Performance\n\n### Hardware\n\nBenchmarks runs on the following hardware:\n\n- Processor Name: i9 9900K\n- Total Number of Cores: 8\n- Hyper-Threading Technology: Enabled\n- Memory: 32 GB\n\n### Benchmark\n\n```sh\nRunning \"Compress\" suite...\nProgress: 100%\n\n  lz4:\n    911 ops/s, ±18.64%     | 54.68% slower\n\n  snappy:\n    2 010 ops/s, ±19.23%   | fastest\n\n  gzip:\n    78 ops/s, ±18.76%      | 96.12% slower\n\n  deflate:\n    118 ops/s, ±20.42%     | 94.13% slower\n\n  brotli:\n    6 ops/s, ±0.21%       | slowest, 99.7% slower\n\nFinished 5 cases!\n  Fastest: snappy\n  Slowest: brotli\nRunning \"Decompress\" suite...\nProgress: 100%\n\n  lz4:\n    9 425 ops/s, ±12.50%   | fastest\n\n  snappy:\n    3 900 ops/s, ±13.39%   | 58.62% slower\n\n  gzip:\n    823 ops/s, ±20.48%     | slowest, 91.27% slower\n\n  deflate:\n    1 350 ops/s, ±12.52%   | 85.68% slower\n\n  brotli:\n    979 ops/s, ±11.55%     | 89.61% slower\n\nFinished 5 cases!\n  Fastest: lz4\n  Slowest: gzip\nDone in 61.20s.\n```\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nProject is pretty simple and straight forward for what is my needs, but if you have any idea you're welcome.\n\n\u003e This projects uses [conventional commit](https://commitlint.js.org/#/) so be sure to use standard commit format or PR won't be accepted\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'feat(scope): some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n## Acknowledgments\n\n- [Brooooooklyn/snappy](https://github.com/Brooooooklyn/snappy) - Inspiration and project structure\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniomuso%2Flz4-napi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantoniomuso%2Flz4-napi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniomuso%2Flz4-napi/lists"}