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 bserializer
Requires 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
double
by 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:
undefined
andnull
have dedicated type codes.
Uses zlib.gzipSync
for file writes and zlib.gunzipSync
for reads.
ISC.