0.1.0 • Published 2 years ago
sirdez v0.1.0
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.
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");
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"
);
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.