npm install @bokuweb/zstd-wasm
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init('./zstd.wasm'); // Please deploy `node_modules/@bokuweb/zstd-wasm/lib/wasm/zstd.wasm` to your hosting server.
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
We need to use file-loader
with webpack4.
This is because, webpack doesn’t work well with wasm modules created with Emscripten.
See, webpack/webpack#7352
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init();
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
- webpack.config.js
module: {
rules: [
{
test: /zstd\.wasm$/,
type: 'javascript/auto',
loader: 'file-loader', // Please use file loader
},
],
},
We need to use Asset Modules
with webpack5.
This is because, webpack doesn’t work well with wasm modules created with Emscripten.
See, webpack/webpack#7352
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init();
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
- webpack.config.js
module: {
rules: [
{
test: /zstd\.wasm/,
type: 'asset/resource',
},
],
},
TypeScript glue is provided under the MIT License, and the zstd is provided by Facebook under the BSD 3-Clause License.