sirdez
sirdez copied to clipboard
Glorious Binary Serialization and Deserialization for TypeScript.
Glorious SerDes for TypeScript
The library you can rely on,
For binary serialization and deserialization,
In Node, Deno, and the Web environment,
Which is simple and yet performant.
Features
- Performant
- Easy to use
- Full TypeScript support
- Super extensible
- 99% tree-shakable
- Zero dependencies (small footprint)
- Runs in Node, Deno and browsers
- No
eval()
orFunction()
by default - Performant eval mode with
import "sirdez/eval"
- MessagePack for schemaless data
- More details...
Performance Comparison with other tools in Node (ops/sec)
Installation
Expand for more details.
Node (with or without bundlers)
In the terminal with NPM
npm i sirdez
Or with Yarn
yarn add sirdez
In the code with ES Modules
import * as sd from "sirdez";
or with CommonJS
const sd = require("sirdez");
Web (without bundlers)
In HTML with UMD
<script src="https://cdn.jsdelivr.net/npm/sirdez/dist/sirdez.umd.js"></script>
In an ES module script (statically)
import * as sd from "https://cdn.jsdelivr.net/npm/sirdez/dist/sirdez.es.js";
In an ES module script (dynamically)
const sd = await import(
"https://cdn.jsdelivr.net/npm/sirdez/dist/sirdez.es.js"
);
Deno
In code (statically)
import * as sd from "https://deno.land/x/sirdez/mod.ts";
In code (dynamically)
const sd = await import("https://deno.land/x/sirdez/mod.ts");
Usage
Creating a simple SerDes.
const person = sd.use(
sd.struct({
name: sd.string(sd.utf8, sd.uint8),
age: sd.uint8
})
);
const bytes = person.toBytes({
name: "Bob",
age: 23
});
const samePerson = person.fromBytes(bytes);
console.log({ bytes, samePerson });
Using TypeScript utilities
type Person = sd.GetType<typeof person>;
const bob: Person = {
name: "Bob",
age: 23
};
Roadmap
- Support decorators for schema
-
msgpack
extension mechanism using classes - Better support for protocol buffers
- Avro-Sirdez schema transpiler
Known Issues
-
msgpack
becomes very slow for large arrays (help wanted for optimizing it! 🙏)
Resources
Contribution
Help and suggestions are welcomed!
License
Copyright 2022 Wei (weisrc).
This software is under the MIT license.
Please see LICENSE for more information.