1mod error;
2mod base64util;
3mod types;
4mod bitstream;
5mod varint;
6mod header;
7mod dict;
8mod huffman;
9mod encode;
10mod decode;
11mod pool;
12
13pub use error::Error;
14pub use base64util::{encode_base64, decode_base64};
15pub use dict::{collect_keys, write_dictionary, read_dictionary};
16pub use huffman::HuffmanCodec;
17pub use pool::{StringPool, PoolConfig};
18pub use encode::CompressOptions;
19
20#[doc(hidden)]
21pub use header::{VERSION_V1, VERSION_V2};
22
23#[doc(hidden)]
24pub mod test_expose {
25 pub use crate::bitstream::{BitReader, BitWriter};
26 pub use crate::varint::{read_sleb128, read_uleb128, write_sleb128, write_uleb128};
27 pub use crate::header::{read_header, write_header, MAGIC, VERSION_V1, VERSION_V2};
28 pub use crate::dict::{collect_keys, read_dictionary, write_dictionary};
29 pub use crate::types::tag;
30 pub use crate::pool::{collect_string_pool, write_string_pool};
31 pub use crate::encode::{compress_with_options, CompressOptions};
32}
33
34
35pub fn compress_to_bytes(value: &serde_json::Value, opts: &CompressOptions) -> Result<Vec<u8>, Error> {
37 encode::compress_with_options(value, opts)
38}
39
40pub fn compress_to_base64(value: &serde_json::Value, opts: &CompressOptions) -> Result<String, Error> {
42 let bytes = compress_to_bytes(value, opts)?;
43 Ok(encode_base64(&bytes))
44}
45
46pub fn decompress_from_bytes(bytes: &[u8]) -> Result<serde_json::Value, Error> { decode::decompress_from_bytes(bytes) }
48
49pub fn decompress_from_base64(s: &str) -> Result<serde_json::Value, Error> {
51 let bytes = decode_base64(s)?;
52 decompress_from_bytes(&bytes)
53}