A TypeScript-based serialization/deserialization library built for exploration and learning.
- Supports common data types:
string,number,boolean,null,undefined,object,array, and custom handling for fixed-point decimals. - Compression-ready: Built-in zlib integration for file I/O.
- Type-safe: Written in TypeScript with explicit type codes.
npm install bserializerRequires Node.js v18+.
import { serializeData, deserializeData } from "bserializer";
const data = { foo: [42, "bar", true], baz: null };
const serialized = serializeData(data);
const deserialized = deserializeData(serialized); // { foo: [42, "bar", true], baz: null }import { writeToFile, readFromFile } from "bserializer";
// Write
writeToFile("data.bin", { planets: ["🌍", "🚀", 3.1415] });
// Read
const loadedData = readFromFile("data.bin"); // { planets: ["🌍", "🚀", 3.1415] }| Serialize Time | Size | Compressed Size | Deserialize Time | Heap Used | Heap Total | |
|---|---|---|---|---|---|---|
| JSON | 94.04 ms | 14.59 MB | 1.58 MB | 112.15 ms | 94.13 MB | 124.13 MB |
| Custom | 612.77 ms | 17.70 MB | 1.58 MB | 335.87 ms | 108.61 MB | 142.39 MB |
| BSON | 797.34 ms | 15.76 MB | 1.64 MB | 595.68 ms | 166.28 MB | 190.45 MB |
| MsgPack | 306.57 ms | 10.12 MB | 1.35 MB | 323.97 ms | 200.08 MB | 231.47 MB |
| Serialize Time | Size | Compressed Size | Deserialize Time | Heap Used | Heap Total | |
|---|---|---|---|---|---|---|
| JSON | 2.03 ms | 0.56 MB | 0.20 MB | 2.19 ms | 203.71 MB | 233.63 MB |
| Custom | 8.75 ms | 0.86 MB | 0.12 MB | 3.41 ms | 208.68 MB | 235.93 MB |
| BSON | 44.46 ms | 1.04 MB | 0.28 MB | 4.49 ms | 213.66 MB | 238.24 MB |
| MsgPack | 19.48 ms | 0.35 MB | 0.20 MB | 11.17 ms | 218.25 MB | 239.01 MB |
| Serialize Time | Size | Compressed Size | Deserialize Time | Heap Used | Heap Total | |
|---|---|---|---|---|---|---|
| JSON | 581.69 ms | 47.02 MB | 0.21 MB | 842.08 ms | 294.89 MB | 330.49 MB |
| Custom | 4186.99 ms | 66.28 MB | 0.32 MB | 1073.71 ms | 365.73 MB | 389.75 MB |
| BSON | ERROR | ERROR | ERROR | ERROR | ERROR | ERROR |
| MsgPack | 3557.09 ms | 32.52 MB | 0.14 MB | 4098.36 ms | 365.95 MB | 399.46 MB |
- Numbers: Stored as
doubleby default. Fixed-point decimals (e.g.,3.14) are scaled to integers for precision. - Strings/Keys: UTF-8 encoded with 1-byte length headers.
- Objects: Stored as
[count][key-value pairs]. - Special Types:
undefinedandnullhave dedicated type codes.
Uses zlib.gzipSync for file writes and zlib.gunzipSync for reads.
ISC.