Skip to main content
Module

x/zstd/src/lib.rs

Zstd bindings for the Deno TypeScript/JavaScript runtime
Latest
File
use deno_core::plugin_api::{Buf, Interface, Op, ZeroCopyBuf};use serde::Deserialize;
#[derive(Deserialize)]struct ZstdOptions { level: i32,}
pub fn op_compress( _interface: &mut dyn Interface, data: &[u8], zero_copy: Option<ZeroCopyBuf>,) -> Op { let options_buffer = zero_copy.unwrap(); let options: ZstdOptions = serde_json::from_slice(options_buffer.as_ref()).unwrap(); let encoded = zstd::encode_all(data, options.level).unwrap(); let buffer: Buf = Box::from(encoded); Op::Sync(buffer)}
pub fn op_decompress( _interface: &mut dyn Interface, data: &[u8], _zero_copy: Option<ZeroCopyBuf>,) -> Op { let decoded = zstd::decode_all(data).unwrap(); let buffer: Buf = Box::from(decoded); Op::Sync(buffer)}
#[no_mangle]fn deno_plugin_init(context: &mut dyn Interface) { context.register_op("compress", op_compress); context.register_op("decompress", op_decompress);}