zzetf
v1.0.0
Published
ETF en/decoding & Zstd streaming decompression purpose-built for Discord
Readme
zzetf
A zig Implementation of the Erlang Term Format providing ZSTD streaming decompression for Discord WebSockets.
This doesnt use node-gyp or any other dependencies, it comes prebuilt for most platforms.
Usage
const { etfDecode, etfEncode, zstdEtfStreamDecoder } = require("zzetf");
const data = etfEncode("Hello, World!"); // <Buffer 83 6d 00 00 00 0d ... 21>
const decoded = etfDecode(data); // "Hello, World!"
const streamingDecoder = zstdEtfStreamDecoder();
// feed data from discords websocket
const out = streamingDecoder.decode(somedata);
// deinitialize the streaming decoder when you're done
streamingDecoder.deinit();Bigints
Discord encodes snowflakes as bigints, however most libraries require snowflakes to be strings.
Hence we provide a compatibility option:
import { etfDecode, etfEncode } from "zzetf";
etfDecode(etfEncode(12345678901234567890n), { bigintsAsStrings: true }); // "12345678901234567890"
// or, for streaming
streamingDecoder.decode(somedata, { bigintsAsStrings: true });