{"_id":"compress-utils","_rev":"27-fca1656a884c1241a1963b5613f31da8","name":"compress-utils","dist-tags":{"latest":"0.11.2"},"versions":{"0.7.0-rc.1":{"name":"compress-utils","version":"0.7.0-rc.1","license":"MIT","_id":"compress-utils@0.7.0-rc.1","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"dist":{"shasum":"31cca1bbf91698ce401285b229639b69996549cb","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.7.0-rc.1.tgz","fileCount":61,"integrity":"sha512-dKfvWtJLz3p3L2wodnMUNGcLOl4PvhDzvUuf9mr+FauokttZ8SVjCVAaoh33naLndRgEslPiYjw2uV5+xRTNbg==","signatures":[{"sig":"MEUCIQCLDpi/TujK/twSA/Hz6qOah8uThfXtSv3q2t6HeB91agIgWRr3iJ39uSJLbSQ+lUjZp0N/FaVkBHJ3OZtpyDGiYHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1818793},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js"},"gitHead":"58284c373dc5d1ca9beda89e5b793b85c6507c3d","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"test":"vitest run","build":"npm run build:wasm && npm run build:ts","build:ts":"tsc -p tsconfig.json","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"dupontcyborg","email":"nico@dupont.live"},"_npmVersion":"11.6.2","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz — tree-shakeable per-algorithm imports.","directories":{},"sideEffects":false,"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","esbuild":"^0.28.0","typescript":"^5.5.0","@types/node":"^22.0.0","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.7.0-rc.1_1778890504826_0.802756866357798","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"compress-utils","version":"0.7.0","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.7.0","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"1a58c774278180db1be817794f1574a0ff218c9b","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.7.0.tgz","fileCount":61,"integrity":"sha512-Ozt+M2l4zGd4BqgseSotUw/9AHb+TC4wuMWRb9LSAESQW7xhxBSth1OQFYMfFSt6zQ26byN3HB/EL2RDMMJ2jQ==","signatures":[{"sig":"MEUCIQD7Ug3jBa/ppXTFnDUFFlGlNcVTt7pSWvgVkrOsgqcuMQIgP2y6Iqm5ZwY/lG52zvcZ0cMILhgxXXZj6KlE+u5AgZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1821554},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js"},"gitHead":"b1022a0928da44297217874ffeacdcfcf48e4b04","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"dupontcyborg","email":"nico@dupont.live"},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz — tree-shakeable per-algorithm imports.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^5.5.0","@types/node":"^25.8.0","@biomejs/biome":"2.4.15","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.7.0_1778946777466_0.07524895522441466","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"compress-utils","version":"0.7.1","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.7.1","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"dfbc28165e6d1732ece78d7a0f5072cccd8e8b91","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.7.1.tgz","fileCount":61,"integrity":"sha512-TMmTeUh0pQwnG8HoBDHe9q6uCcWQxPxaifQ820inQ0933NJH8uer4KmLCCpKYP3ytd1KZpWRwf/+jBOJVaETJA==","signatures":[{"sig":"MEUCIQDDQpQ1X6IXZjQSj+XFQa0EvGRgQD6DOZWBxJa7Ewmi1wIgZtiGF9iDKrygh0WZj64sY3MlHN3VJYK/XWA6ka7i3EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1821283},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js"},"gitHead":"27a59b4ea4cf0e205ec92bd5e8f73c478ca46e57","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"dupontcyborg","email":"nico@dupont.live"},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"10.9.7","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^5.5.0","@types/node":"^25.8.0","@biomejs/biome":"2.4.15","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.7.1_1779051530370_0.7032908315058137","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"compress-utils","version":"0.8.0","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.8.0","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"b331bb0bc5543e8075c59d11b31f51d711071f21","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.8.0.tgz","fileCount":151,"integrity":"sha512-aUk794YEft2+9mzgITcjXIgWTyWPpZj0EjSWWnbk9G2JhJjfsUCh7v6Aal/4VXmpN/0M1wKv39vWiUEtF156Zw==","signatures":[{"sig":"MEYCIQDXB68o22WV2aqordQTFTsk8aOEi4cM5QtzJ1SQQ5ZoHAIhAOGJVa9jZGWKPb/SzA0A9ifnNSqxJ4D8nHxOMpjKJdMk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3395911},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js"},"gitHead":"83238227ebf2aa97f8352e377afeb2ad5ffede7e","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.0.1","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^5.5.0","@types/node":"^25.8.0","@biomejs/biome":"2.4.15","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.8.0_1784250837163_0.8393181869558877","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"compress-utils","version":"0.9.0","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.9.0","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"8dc1b49cce1cf86b08fe657ff0094cbeaa3c495a","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.9.0.tgz","fileCount":185,"integrity":"sha512-5ItLJ3yjgPvtO9rlRbk918lQdOff6C2bcirEkl8wOGUY2S21FQwfQkCTJEAlYdYZuZbqefb6UzCYdv/Uf5r/+Q==","signatures":[{"sig":"MEUCIQDm6pMB78RXJVCHl7PH3cDnpxjDhfhLO8XqgkFOrLa3cQIgVUjKCfjsHHtUWw4q5WFDcrdIlltZQCEP1rmFZ8hH7eA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCgBsM4scNbXRNhdfiWJoF81Mcec6BiPepgVyWTGhbvrAIhAKax01fmhXKxwzx4DEW5kh90IDpsZRCTAZMPYdl7Zfwu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3512115},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./deflate":"./dist/algorithms/deflate/index.js","./lz4_raw":"./dist/algorithms/lz4_raw/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./lzo/decompress":"./dist/algorithms/lzo/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./deflate/compress":"./dist/algorithms/deflate/compress/index.js","./lz4_raw/compress":"./dist/algorithms/lz4_raw/compress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js","./deflate/decompress":"./dist/algorithms/deflate/decompress/index.js","./lz4_raw/decompress":"./dist/algorithms/lz4_raw/decompress/index.js"},"gitHead":"1ce4ce20719ccb1d2f9598eeac2899dba0989c6b","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","prepack":"node -e \"require('node:fs').copyFileSync('../../THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md')\"","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.2.0","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.9","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.9.0_1791822980078_0.352903696928605","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"compress-utils","version":"0.10.1","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.10.1","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"6a63458d6b6b4547ab31da63430b260fa1c46916","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.10.1.tgz","fileCount":185,"integrity":"sha512-d4d6WSty1+PXe7/QvjgzR4kB5Kx3AdQTFMwJjI01zMOtWpHZCmlcrvPznCfnovLwDREWDVIYl4MFuVd0NZEGWQ==","signatures":[{"sig":"MEUCIBlxSO0Rj6gWpmJ6VKS9T390Vw6kHl/pCmIwbhNOf9XDAiEAqAK9SgFf3wVzXvZxktvQML7c8tyYKf9mbk5JpSpzgaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIASEYnAhCLIVC1jxXD9viYpw4TUvh/VP2cR7vkHQ9m67AiEA80xB9WWEn0Yo+N1yEX6rsKvrn1jNs1D08DkV6dWdiic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3562652},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./deflate":"./dist/algorithms/deflate/index.js","./lz4_raw":"./dist/algorithms/lz4_raw/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./lzo/decompress":"./dist/algorithms/lzo/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./deflate/compress":"./dist/algorithms/deflate/compress/index.js","./lz4_raw/compress":"./dist/algorithms/lz4_raw/compress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js","./deflate/decompress":"./dist/algorithms/deflate/decompress/index.js","./lz4_raw/decompress":"./dist/algorithms/lz4_raw/decompress/index.js"},"gitHead":"e70d4e319c707636467e1cb7c29a7283f6738609","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","prepack":"node -e \"require('node:fs').copyFileSync('../../THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md')\"","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.2.0","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.9","@playwright/test":"^1.60.0"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.10.1_1792190617612_0.13194497945421912","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"compress-utils","version":"0.11.0","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.11.0","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"0a2386ad28409b21fdb510217e348d32ef118e77","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.11.0.tgz","fileCount":185,"integrity":"sha512-khwGim+gYEqzm4hJki0hXnN4pp6iNzIxln1Lv6NpYG/WvUXyrOlGChcaA7mWpKKtD8X5rFoO1CZYhNUXL0cXAw==","signatures":[{"sig":"MEUCIEPwu/E6Qmj2NnGdtvYcuewdw3HJMZ94dPYhnRPvq6YQAiEAl9W3DWrHsHsDX/Hk962zZuRTyx8VUqohJrvRiI5Lxe8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5c7TIMvDth8Ucko/RxLssOCJwqtQrF2nl/EKOXT90DQIhAJXV1DT9h7kSE052kRemZvXCCdG2e3iTHPTBdpbe8mJG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3632736},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./deflate":"./dist/algorithms/deflate/index.js","./lz4_raw":"./dist/algorithms/lz4_raw/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./lzo/decompress":"./dist/algorithms/lzo/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./deflate/compress":"./dist/algorithms/deflate/compress/index.js","./lz4_raw/compress":"./dist/algorithms/lz4_raw/compress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js","./deflate/decompress":"./dist/algorithms/deflate/decompress/index.js","./lz4_raw/decompress":"./dist/algorithms/lz4_raw/decompress/index.js"},"gitHead":"85170f148e80ca78f11b5a789a71c8b27b6cdd5a","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","prepack":"node -e \"require('node:fs').copyFileSync('../../THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md')\"","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.2.0","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.9","@playwright/test":"^1.60.0","@vitest/coverage-v8":"^4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.11.0_1792612939491_0.7268816264813833","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"compress-utils","version":"0.11.1","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","_id":"compress-utils@0.11.1","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"homepage":"https://github.com/dupontcyborg/compress-utils#readme","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"96ba43af7e7ae2977f4966e6cb3b3d4f55ecfe7c","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.11.1.tgz","fileCount":185,"integrity":"sha512-Jh9pVl087uHi9qPXn3/D5Xwde7qAJP2TQaqS+osgtiPLi7IPvVNZoUWtnA8ZjiilNZJZCRC8w6RV1PIfHnE7kQ==","signatures":[{"sig":"MEQCIBDjgrnCjseUDnRdXfxJE7dRTjhRz0Bcdw1V+sUs84dPAiBE4FC2wJR4H4F9wggCatKaFYiuaMLGar3RxydnV+vd8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCAC2wuNgynnkb4TO/mfOVV8gM6glJ6BHd+LKMzRqzR1QIhAPnjZ8zNttlQh1t9tmDOLy2wNIC8t69j5MkaNVRxNT00","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3632736},"type":"module","engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./deflate":"./dist/algorithms/deflate/index.js","./lz4_raw":"./dist/algorithms/lz4_raw/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./lzo/decompress":"./dist/algorithms/lzo/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./deflate/compress":"./dist/algorithms/deflate/compress/index.js","./lz4_raw/compress":"./dist/algorithms/lz4_raw/compress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js","./deflate/decompress":"./dist/algorithms/deflate/decompress/index.js","./lz4_raw/decompress":"./dist/algorithms/lz4_raw/decompress/index.js"},"gitHead":"1c78ff5da3a430c62244132eeb10deb1e97291ef","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","prepack":"node -e \"require('node:fs').copyFileSync('../../THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md')\"","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.2.0","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.9","@playwright/test":"^1.60.0","@vitest/coverage-v8":"^4.1.11"},"_npmOperationalInternal":{"tmp":"tmp/compress-utils_0.11.1_1792615223608_0.9660146039884394","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"_id":"compress-utils@0.11.2","bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"dist":{"shasum":"2a53195783f3b3372a7ee4c5c9e8c9dd5bb20643","tarball":"https://registry.npmjs.org/compress-utils/-/compress-utils-0.11.2.tgz","fileCount":185,"integrity":"sha512-UhBsPNnUJC2RYGnAZr8Zg0yPuFS8qf+EdJrcNsK42xp0ceFZk0yJ/NOmbV19iP1tAFWCWuKOGuyAaoRqz4rpAQ==","signatures":[{"sig":"MEQCIDaRWmqNosiUcrT3vQBxpzeb/+jOLoCLVJmYEE27UtCiAiBYviUqoY4XV40QJYdM7sSZfothtnb/3I6TBJ8mPlyauQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC68WczmZTRxCNblcH3qYw39kwwPAqo5zZr8ADQ2yipbAIhAKh1GAVB9IkBxlqsZclAX+nGXzqeEY14/gFJZqDgJ0HC"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/compress-utils@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3646757},"name":"compress-utils","type":"module","author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"engines":{"node":">=18"},"exports":{"./xz":"./dist/algorithms/xz/index.js","./bz2":"./dist/algorithms/bz2/index.js","./lz4":"./dist/algorithms/lz4/index.js","./gzip":"./dist/algorithms/gzip/index.js","./zlib":"./dist/algorithms/zlib/index.js","./zstd":"./dist/algorithms/zstd/index.js","./brotli":"./dist/algorithms/brotli/index.js","./snappy":"./dist/algorithms/snappy/index.js","./deflate":"./dist/algorithms/deflate/index.js","./lz4_raw":"./dist/algorithms/lz4_raw/index.js","./xz/compress":"./dist/algorithms/xz/compress/index.js","./bz2/compress":"./dist/algorithms/bz2/compress/index.js","./lz4/compress":"./dist/algorithms/lz4/compress/index.js","./gzip/compress":"./dist/algorithms/gzip/compress/index.js","./xz/decompress":"./dist/algorithms/xz/decompress/index.js","./zlib/compress":"./dist/algorithms/zlib/compress/index.js","./zstd/compress":"./dist/algorithms/zstd/compress/index.js","./bz2/decompress":"./dist/algorithms/bz2/decompress/index.js","./lz4/decompress":"./dist/algorithms/lz4/decompress/index.js","./lzo/decompress":"./dist/algorithms/lzo/decompress/index.js","./brotli/compress":"./dist/algorithms/brotli/compress/index.js","./gzip/decompress":"./dist/algorithms/gzip/decompress/index.js","./snappy/compress":"./dist/algorithms/snappy/compress/index.js","./zlib/decompress":"./dist/algorithms/zlib/decompress/index.js","./zstd/decompress":"./dist/algorithms/zstd/decompress/index.js","./deflate/compress":"./dist/algorithms/deflate/compress/index.js","./lz4_raw/compress":"./dist/algorithms/lz4_raw/compress/index.js","./brotli/decompress":"./dist/algorithms/brotli/decompress/index.js","./snappy/decompress":"./dist/algorithms/snappy/decompress/index.js","./deflate/decompress":"./dist/algorithms/deflate/decompress/index.js","./lz4_raw/decompress":"./dist/algorithms/lz4_raw/decompress/index.js"},"gitHead":"fa6e8728151428cde6701c805ac7c63c919b96d0","imports":{"#resolver":{"bun":"./dist/core/resolve-browser.js","deno":"./dist/core/resolve-browser.js","node":"./dist/core/resolve-node.js","types":"./src/core/resolve-default.ts","browser":"./dist/core/resolve-browser.js","default":"./dist/core/resolve-default.js"}},"license":"MIT","scripts":{"lint":"biome lint .","test":"vitest run","build":"npm run build:wasm && npm run build:ts","check":"biome check .","format":"biome format --write .","prepack":"node -e \"require('node:fs').copyFileSync('../../THIRD_PARTY_NOTICES.md', 'THIRD_PARTY_NOTICES.md')\"","build:ts":"tsc -p tsconfig.json","lint:fix":"biome lint --write .","test:bun":"bun test --bun tests/","test:deno":"deno run --allow-read --allow-env tests-runtime/deno-smoke.ts","test:size":"vitest run tests/bundle.test.ts","build:wasm":"cmake -S ../.. -B ../../build-wasm -DBUILD_WASM_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_CPP_BINDINGS=OFF -DENABLE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release && cmake --build ../../build-wasm --target compress_utils_wasm -j","test:watch":"vitest","test:browser":"playwright test"},"version":"0.11.2","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"3b7b4a94-b1c8-42c6-9a74-5315ba17c0b1"}},"homepage":"https://github.com/dupontcyborg/compress-utils#readme","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"_npmVersion":"12.2.1","description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","directories":{},"maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"sideEffects":false,"_nodeVersion":"22.23.3","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.5","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.6.3","@playwright/test":"^1.60.0","@vitest/coverage-v8":"^5.0.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/compress-utils_0.11.2_1792970738941_0.8895351081664449"}}},"time":{"created":"2026-05-16T15:52:57.408Z","modified":"2026-10-25T23:25:39.364Z","1.0.0":"2022-05-25T07:10:16.512Z","1.0.1":"2022-05-25T07:45:33.841Z","1.0.2":"2022-05-27T00:50:22.298Z","1.0.3":"2022-05-27T00:53:23.402Z","1.0.4":"2022-05-27T01:00:02.448Z","1.0.5":"2022-05-27T01:47:24.298Z","1.0.51":"2022-05-27T03:36:37.794Z","1.0.52":"2022-05-27T04:00:42.278Z","1.0.53":"2022-05-27T06:00:16.208Z","0.7.0-rc.1":"2026-05-16T00:15:05.083Z","0.7.0":"2026-05-16T15:52:57.673Z","0.7.1":"2026-05-17T20:58:50.572Z","0.8.0":"2026-07-17T01:13:57.317Z","0.9.0":"2026-10-12T16:36:20.199Z","0.10.1":"2026-10-16T22:43:37.713Z","0.11.0":"2026-10-21T20:02:19.607Z","0.11.1":"2026-10-21T20:40:23.857Z","0.11.2":"2026-10-25T23:25:39.056Z"},"bugs":{"url":"https://github.com/dupontcyborg/compress-utils/issues"},"author":{"url":"https://nico.codes","name":"Nicolas Dupont","email":"nico@dupont.live"},"license":"MIT","homepage":"https://github.com/dupontcyborg/compress-utils#readme","keywords":["compression","decompression","wasm","webassembly","zstd","brotli","zlib","gzip","bzip2","lz4","xz","lzma","snappy"],"repository":{"url":"git+https://github.com/dupontcyborg/compress-utils.git","type":"git","directory":"bindings/wasm"},"description":"WASM compression bindings for zstd, brotli, zlib, bz2, lz4, xz, snappy, gzip - all tree-shakeable.","maintainers":[{"name":"dupontcyborg","email":"nico@dupont.live"}],"readme":"# compress-utils\n\n[![npm version](https://img.shields.io/npm/v/compress-utils.svg)](https://www.npmjs.com/package/compress-utils)\n[![npm downloads](https://img.shields.io/npm/dm/compress-utils.svg)](https://www.npmjs.com/package/compress-utils)\n[![WASM build](https://img.shields.io/github/actions/workflow/status/dupontcyborg/compress-utils/build_and_test_wasm.yml?label=wasm)](https://github.com/dupontcyborg/compress-utils/actions/workflows/build_and_test_wasm.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nUnified WebAssembly bindings for eight compression algorithms — Zstandard, Brotli, zlib, gzip, bzip2, LZ4, XZ/LZMA, and Snappy — over a single high-performance C core. Same API for every algorithm, in every JavaScript runtime, with tree-shakeable imports so bundlers ship only what you use.\n\n## Installation\n\n```bash\nnpm install compress-utils\n# or: pnpm add / yarn add / bun add / deno add npm:compress-utils\n```\n\n### CDN (no bundler)\n\nThe package is published as ESM. You can pull it straight from a CDN, with no install step and no build step.\n\n```html\n<script type=\"module\">\n  import { compress, decompress } from \"https://esm.sh/compress-utils/zstd\";\n\n  const out = await compress(new TextEncoder().encode(\"hello\"));\n</script>\n```\n\n| CDN      | Per-algo URL                                                                  |\n|----------|-------------------------------------------------------------------------------|\n| esm.sh   | `https://esm.sh/compress-utils/<algo>`                                        |\n| jsDelivr | `https://cdn.jsdelivr.net/npm/compress-utils/dist/algorithms/<algo>/index.js` |\n| unpkg    | `https://unpkg.com/compress-utils/dist/algorithms/<algo>/index.js`            |\n\n## Quick start\n\nEach algorithm is its own subpath import. Pick the one you need, and the rest stay out of your bundle.\n\n```ts\nimport { compress, decompress } from \"compress-utils/zstd\";\n\nconst input = new TextEncoder().encode(\"the quick brown fox \".repeat(50));\n\nconst compressed = await compress(input, { level: 9 });\nconst restored   = await decompress(compressed);\n```\n\nAvailable subpaths: `compress-utils/zstd`, `/brotli`, `/zlib`, `/bz2`, `/lz4`, `/xz`, `/snappy`, `/gzip`, plus the raw block formats `/deflate`, `/lz4_raw` and `/lzo/decompress`. The surface is identical across all of them. Each also has `/<algo>/decompress` and `/<algo>/compress` variants that ship only one direction for a much smaller `.wasm`; see [Bundle size](#bundle-size).\n\n## Supported algorithms\n\n<!-- BEGIN:algorithms -->\n<!-- Generated by tools/check-readmes.py from docs/readme/manifest.json. Edit the manifest and run `tools/check-readmes.py --fix`, not this block. -->\n\n| Algorithm | Subpath                         | Wire format                                                                              |\n|-----------|---------------------------------|------------------------------------------------------------------------------------------|\n| Zstandard | `compress-utils/zstd`           | ZSTD frame with content size                                                             |\n| Brotli    | `compress-utils/brotli`         | Raw Brotli stream                                                                        |\n| zlib      | `compress-utils/zlib`           | zlib wrapper (RFC 1950)                                                                  |\n| gzip      | `compress-utils/gzip`           | gzip stream (RFC 1952)                                                                   |\n| bzip2     | `compress-utils/bz2`            | bzip2 stream                                                                             |\n| LZ4       | `compress-utils/lz4`            | LZ4 frame (interoperable with the `lz4` CLI and `.lz4` files)                            |\n| XZ / LZMA | `compress-utils/xz`             | XZ stream with CRC64                                                                     |\n| Snappy    | `compress-utils/snappy`         | Raw Snappy block (interoperable with reference snappy and python-snappy)                 |\n| DEFLATE   | `compress-utils/deflate`        | Raw DEFLATE (RFC 1951), no wrapper                                                       |\n| LZ4 block | `compress-utils/lz4_raw`        | Raw LZ4 block, no frame or size prefix (one-shot compression, incremental decompression) |\n| LZO1X     | `compress-utils/lzo/decompress` | Raw LZO1X block (decompression only)                                                     |\n<!-- END:algorithms -->\n\nImports are independent: `import \"compress-utils/zstd\"` and `import \"compress-utils/brotli\"` pull in two separate `.wasm` modules, not a combined bundle. Files are marked `\"sideEffects\": false` so unused exports are tree-shaken aggressively. For per-module `.wasm` sizes, and the smaller decode-only and encode-only builds, see [Bundle size](#bundle-size).\n\n### Raw blocks and output capacity\n\nRaw block formats such as those inside Parquet and ORC pages don't record their decompressed size. Pass `expectedSize`, an upper bound on the output, and the result holds only the bytes actually decoded:\n\n```ts\nimport { decompress } from \"compress-utils/lz4_raw\";\n\nconst page = await decompress(block, { expectedSize: uncompressedPageSize });\n```\n\nWithout `expectedSize`, `lz4_raw` blocks are decoded with the incremental stream decoder, which is much slower, so pass it when you know the size. Every other algorithm accepts it too, which skips a sizing pass and decodes straight into a buffer of that size.\n\n## Streaming\n\n### Web Streams\n\n```ts\nimport { compressionStream, decompressionStream } from \"compress-utils/zstd\";\n\nawait fetch(\"/big-file.json\")\n    .then(r => r.body!.pipeThrough(compressionStream({ level: 3 })))\n    .then(s => s.pipeTo(uploadDestination));\n```\n\n### Manual streaming (with `using` for auto-cleanup)\n\n```ts\nimport { createCompressStream } from \"compress-utils/brotli\";\n\nusing cs = await createCompressStream({ level: 5 });\nconst chunks: Uint8Array[] = [];\nfor (const chunk of input) chunks.push(cs.write(chunk));\nchunks.push(cs.finish());\n// cs is destroyed automatically on scope exit (TS 5.2+ / Node 22+).\n```\n\nIf `using` isn't available in your toolchain, call `cs.destroy()` explicitly, or rely on the GC backstop: a `FinalizationRegistry` frees the C-side handle eventually.\n\n### Stopping at the end of a stream\n\nBy default a decoder decodes concatenated frames (zstd, LZ4, gzip, xz) as one stream. To read one compressed stream followed by other data, such as the next message on a socket or a container's own bytes, create the decoder with `{ singleStream: true }`. It stops at the end of the first frame, sets `eof`, and returns the input bytes written after the end in `unusedData`:\n\n```ts\nimport { createDecompressStream } from \"compress-utils/zstd\";\n\nusing ds = await createDecompressStream({ singleStream: true });\nconst message = ds.write(received);  // decodes up to the end of the frame\nif (ds.eof) {\n    const rest = ds.unusedData;      // bytes after the frame, e.g. the next message\n}\n```\n\nOnce `eof` is true, writing more data throws `CompressError` with code `10` (stream finished) and leaves `unusedData` unchanged; empty writes and `finish()` return empty output. Leading zstd/LZ4 skippable frames are skipped. Snappy emits nothing until its block is complete. Raw LZ4 (which has no end marker) and LZO don't support it and throw `CompressError` with code `5`. `decompressionStream()` doesn't take the option: a `TransformStream` has no way to hand back the bytes after the end, so use `createDecompressStream` for this.\n\n## Compression levels\n\nEvery algorithm accepts a `level` from **1 (fastest) to 10 (smallest)**. The binding maps that to each algorithm's native range internally, so you don't need to know that Zstandard goes 1–22 and zlib goes 1–9. The default is `5`.\n\n```ts\nawait compress(input, { level: 1 });   // fastest\nawait compress(input, { level: 10 });  // smallest\n```\n\n## Errors and limits\n\nDecompressing data you don't control? See [Untrusted input](https://github.com/dupontcyborg/compress-utils#untrusted-input) for what the library guards against and which limits to set.\n\nEvery failure throws a `CompressError`, which carries the underlying C status code and the algorithm name:\n\n```ts\nimport { compress, decompress, CompressError } from \"compress-utils/zstd\";\n\ntry {\n    await decompress(garbage);\n} catch (e) {\n    if (e instanceof CompressError) console.error(e.algorithm, e.code, e.message);\n}\n```\n\n`await version()` returns the library version (for example `\"0.11.2\"`), and `await setMaxDecompressedSize(bytes)` caps `decompress` for every algorithm (default 1 GiB; `0` = unbounded). Both are exported from every subpath that includes decompression. Streams have no limit unless you pass one: `createDecompressStream({ maxOutput })` and `decompressionStream({ maxOutput })` throw a `CompressError` with code `SizeLimit` once the output passes it.\n\n## Preloading and synchronous calls\n\nEach algorithm and direction-specific subpath exports `preload()`. It loads and initializes that subpath's WASM module once, and concurrent calls share initialization. A failed initialization can be retried. No codec work is performed by preload.\n\n```ts\nimport { preload, compressSync, decompressSync } from \"compress-utils/zlib\";\nawait preload();\nconst compressed = compressSync(new TextEncoder().encode(\"hello\"));\nconst restored = decompressSync(compressed);\n```\n\n`compressSync`, `decompressSync`, `createCompressStreamSync`, and `createDecompressStreamSync` are available for the directions exposed by the subpath. They throw with a `preload()` instruction before initialization completes. Existing asynchronous APIs initialize automatically and also enable subsequent synchronous calls. Initializing one subpath does not initialize another, because encoder and decoder subpaths use different WASM modules.\n\n## Concurrency\n\nEach WASM module instance runs on the thread that loaded it, so nothing is shared between workers: every Worker initializes its own instance and keeps its own streams. Synchronous calls block the calling thread, so run expensive ones in a Worker. A stream handle holds state inside its module instance, so feed each stream from one logical flow rather than from interleaved callers.\n\n## Bundle size\n\nImporting `compress-utils/<algo>` gives you the **full** codec, compress *and* decompress. If you only need one direction (a browser that just *decompresses* fetched assets is the common case), import a directional subpath and the other half is dead-stripped from the `.wasm` entirely:\n\n```ts\n// decoder only, 36 KB gzipped for zstd\nimport { decompress } from \"compress-utils/zstd/decompress\";\n\n// or, encoder only:\nimport { compress } from \"compress-utils/zstd/compress\";\n```\n\n- **`/decompress`** exposes `decompress`, `createDecompressStream`, `decompressionStream`, `setMaxDecompressedSize` and `version`.\n- **`/compress`** exposes `compress`, `createCompressStream`, `compressionStream` and `version`.\n- The default subpath keeps **both**.\n\nGzipped `.wasm` sizes:\n\n| algo   | full | decompress-only | compress-only |\n|--------|-----:|----------------:|--------------:|\n| zstd   | 128K | 36K             | 106K          |\n| brotli | 169K | 84K             | 154K          |\n| lz4    | 39K  | 15K             | 35K           |\n| bz2    | 33K  | 22K             | 25K           |\n| xz     | 62K  | 43K             | 51K           |\n| zlib   | 33K  | 25K             | 26K           |\n| snappy | 36K  | 32K             | 28K           |\n| gzip   | 80K  | 52K             | 60K           |\n\nThe `.wasm` is the bulk of what ships. The JS glue is a few KB, shared, and tree-shaken to the methods you import.\n\n## Runtime support\n\nTested in CI on every release:\n\n| Runtime                                  | Status |\n|------------------------------------------|--------|\n| Node 20, 22, 24                          | ✅     |\n| Bun                                      | ✅     |\n| Deno 2.x                                 | ✅     |\n| Chromium / Firefox / WebKit (Playwright) | ✅     |\n\n## TypeScript\n\nThe package is TypeScript-first. `.d.ts` files ship alongside the JS for every subpath, so no `@types/` package is needed.\n\n```ts\nimport { compress, type CompressOptions, type CompressError } from \"compress-utils/zstd\";\n\nconst opts: CompressOptions = { level: 7 };\nconst compressed: Uint8Array = await compress(input, opts);\n```\n\n## Performance\n\nOverhead versus native C is **0.60–0.84× on compress and 0.50–1.00× on decompress**. WASM is the slowest binding across the board: zstd and brotli decode are the worst cases because they lean on native SIMD, while lz4 decode is memory-bound and costs nothing extra in the sandbox. The reasons to choose this binding are portability, one API in every runtime, and the small per-codec bundles above, rather than beating native `node:zlib`. Compression ratio is byte-identical to every other binding. See the [language comparison](https://github.com/dupontcyborg/compress-utils/blob/main/benchmarks/README.md#language-comparison) for methodology and the full chart.\n\n## License\n\nMIT. See [LICENSE](https://github.com/dupontcyborg/compress-utils/blob/main/LICENSE).\n\n---\n\nPart of [compress-utils](https://github.com/dupontcyborg/compress-utils). Built by [Nico Dupont](https://nico.codes).\n","readmeFilename":"README.md"}