{"id":22400385,"url":"https://github.com/7c/node-minilzo","last_synced_at":"2025-06-25T22:05:56.006Z","repository":{"id":264469027,"uuid":"893449527","full_name":"7c/node-minilzo","owner":"7c","description":"NodeJS \u0026 Typescript minilzo compatible with origin minilzo c without FFI","archived":false,"fork":false,"pushed_at":"2024-11-24T14:48:07.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T00:18:05.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/7c.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-24T13:34:23.000Z","updated_at":"2024-11-24T14:48:06.000Z","dependencies_parsed_at":"2024-11-24T15:38:04.117Z","dependency_job_id":null,"html_url":"https://github.com/7c/node-minilzo","commit_stats":null,"previous_names":["7c/node-minilzo"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/7c/node-minilzo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fnode-minilzo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fnode-minilzo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fnode-minilzo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fnode-minilzo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/7c","download_url":"https://codeload.github.com/7c/node-minilzo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fnode-minilzo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261960503,"owners_count":23236572,"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":[],"created_at":"2024-12-05T08:12:49.119Z","updated_at":"2025-06-25T22:05:55.974Z","avatar_url":"https://github.com/7c.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @7c/minilzo\ni have had hard time finding a minilzo library for nodeJS, so i decided to make my own but i have seen a non-ffi dependent version from [@abraidwood/minilzo-js](https://github.com/abraidwood/minilzo-js), so i decided to port it to typescript and make it work with node.js. I also have a deno version available at [@7c/minilzo](https://github.com/7c/minilzo). For my requirements it was very important that the library is compatible with the C version of minilzo.\n\n## Installation\n```\nnpm install https://github.com/7c/node-minilzo --save\n```\n\n## Usage\n```\nimport { LZO1X, checksumArray } from '@7c/minilzo';\nimport assert from 'assert';\n\nconst lzo = new LZO1X();\n\nconst original = new Uint8Array(Buffer.from('Hello, world!'));\nconsole.log(`original: ${original} - checksum: ${checksumArray(original)}`);\nconst compressed = lzo.compress(original);\nconsole.log(`compressed: ${compressed} - checksum: ${checksumArray(compressed)}`);\nconst decompressed = lzo.decompress(compressed);\nconsole.log(`decompressed: ${decompressed} - checksum: ${checksumArray(decompressed)}`);\nassert(Buffer.from(decompressed).toString() === 'Hello, world!');\nassert(checksumArray(original) === checksumArray(decompressed));\n```\n\n## Demos\nSee `demo.ts`, `demo2.ts` for a complete example, also `test/checksum.ts` for testing.\n\n\n## Tests\nCreated a tests.c which shall use same constants as the tests.ts file, this way we can compare the results of the C version with the TS version for compatibility testing. It is essential that both versions are compatible.\n### Typescript\n```bash\n$ node test/checksum.js\n\n## output\nSentence 1: bufferChecksum = 2476, compressedChecksum = 2636, decompressedChecksum = 2476, compressedLength = 28, decompressedLength = 24, compressionRate = -16.67%\nSentence 2: bufferChecksum = 5528, compressedChecksum = 4518, decompressedChecksum = 5528, compressedLength = 45, decompressedLength = 48, compressionRate = 6.25%\nSentence 3: bufferChecksum = 9156, compressedChecksum = 5598, decompressedChecksum = 9156, compressedLength = 54, decompressedLength = 72, compressionRate = 25.00%\nSentence 4: bufferChecksum = 13360, compressedChecksum = 5645, decompressedChecksum = 13360, compressedLength = 55, decompressedLength = 96, compressionRate = 42.71%\nSentence 5: bufferChecksum = 18140, compressedChecksum = 5669, decompressedChecksum = 18140, compressedLength = 55, decompressedLength = 120, compressionRate = 54.17%\nSentence 6: bufferChecksum = 23496, compressedChecksum = 5693, decompressedChecksum = 23496, compressedLength = 55, decompressedLength = 144, compressionRate = 61.81%\nSentence 7: bufferChecksum = 29428, compressedChecksum = 5717, decompressedChecksum = 29428, compressedLength = 55, decompressedLength = 168, compressionRate = 67.26%\nSentence 8: bufferChecksum = 35936, compressedChecksum = 5741, decompressedChecksum = 35936, compressedLength = 55, decompressedLength = 192, compressionRate = 71.35%\nSentence 9: bufferChecksum = 43020, compressedChecksum = 5765, decompressedChecksum = 43020, compressedLength = 55, decompressedLength = 216, compressionRate = 74.54%\nSentence 10: bufferChecksum = 50680, compressedChecksum = 5789, decompressedChecksum = 50680, compressedLength = 55, decompressedLength = 240, compressionRate = 77.08%\n```\n\n### C\n```bash\n## Mac\n$ brew install lzo\n## brew info lzo and find out where it is installed\n$ gcc -o bin/cchecksum test/checksum.c -I/opt/homebrew/Cellar/lzo/2.10/include -L/opt/homebrew/Cellar/lzo/2.10/lib -llzo2 \u0026\u0026 chmod +x bin/cchecksum \u0026\u0026 bin/cchecksum\n\n\n## output\nTesting C LZO1X compression\nSentence 1: bufferChecksum = 2476, compressedChecksum = 2636, decompressedChecksum = 2476, compressedLength = 28, decompressedLength = 24, compressionRate = -16.67%\nSentence 2: bufferChecksum = 5528, compressedChecksum = 4518, decompressedChecksum = 5528, compressedLength = 45, decompressedLength = 48, compressionRate = 6.25%\nSentence 3: bufferChecksum = 9156, compressedChecksum = 5598, decompressedChecksum = 9156, compressedLength = 54, decompressedLength = 72, compressionRate = 25.00%\nSentence 4: bufferChecksum = 13360, compressedChecksum = 5645, decompressedChecksum = 13360, compressedLength = 55, decompressedLength = 96, compressionRate = 42.71%\nSentence 5: bufferChecksum = 18140, compressedChecksum = 5669, decompressedChecksum = 18140, compressedLength = 55, decompressedLength = 120, compressionRate = 54.17%\nSentence 6: bufferChecksum = 23496, compressedChecksum = 5693, decompressedChecksum = 23496, compressedLength = 55, decompressedLength = 144, compressionRate = 61.81%\nSentence 7: bufferChecksum = 29428, compressedChecksum = 5717, decompressedChecksum = 29428, compressedLength = 55, decompressedLength = 168, compressionRate = 67.26%\nSentence 8: bufferChecksum = 35936, compressedChecksum = 5741, decompressedChecksum = 35936, compressedLength = 55, decompressedLength = 192, compressionRate = 71.35%\nSentence 9: bufferChecksum = 43020, compressedChecksum = 5765, decompressedChecksum = 43020, compressedLength = 55, decompressedLength = 216, compressionRate = 74.54%\nSentence 10: bufferChecksum = 50680, compressedChecksum = 5789, decompressedChecksum = 50680, compressedLength = 55, decompressedLength = 240, compressionRate = 77.08%\n```\n\n### Fork\nThis is a fork of @abraidwood/minilzo-js with the goal of making it work with Node.js. Thanks for his work!\n\n\n## Copyright\n```\n ============================================================================\n miniLZO -- mini subset of the LZO real-time data compression library\n ============================================================================\n\n Author  : Markus Franz Xaver Johannes Oberhumer\n           \u003cmarkus@oberhumer.com\u003e\n           http://www.oberhumer.com/opensource/lzo/\n Version : 2.10\n Date    : 01 Mar 2017\n\n \n LZO and miniLZO are Copyright (C) 1996-2017 Markus Franz Xaver Oberhumer\n All Rights Reserved.\n\n LZO and miniLZO are distributed under the terms of the GNU General\n Public License (GPL).  See the file COPYING.\n\n Special licenses for commercial and other applications which\n are not willing to accept the GNU General Public License\n are available by contacting the author.\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7c%2Fnode-minilzo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F7c%2Fnode-minilzo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7c%2Fnode-minilzo/lists"}