
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@uon/model
Advanced tools
A decorator-based schema/model library with json and binary (de)serialization
A decorator-based schema/model library with json and binary (de)serialization.
Install @uon/model using npm
npm i @uon/model
Model definitions are expressed in the following way:
import { Model, Member, ArrayMember } from '@uon/model'
@Model()
export class MyModel {
// Generic member supports String, Boolean, Number and Date types
@Member()
myStringField: string;
// For array members you need to specify the array element type
// as a decorator argument due to TypeScript not emiting array element type
@ArrayMember(String)
myArrayField: string[];
}
In order to efficiently serialize to binary, number types have been added.
Generic members with type Number are treated as Float64.
@Model()
export class MyModel {
// Supported number types are Int8, Int16, Int32, Uint8, Uint16, Uint32, Float32 and Float64, (no (U)Int64 yet)
@NumberMember(Uint8) myByte: number;
// You can also use a TypedNumber as array element type
@ArrayMember(Uint32) myNumberArray: number[];
}
If you want the serializers to be able to support types that are not under your control, we provide a utility function to let you "modelize" it. Here is an example:
import { Modelize, NumberMember, Float32 } from '@uon/model';
import { Vec2 } from 'some-math-lib';
Modelize(Vec2, {
x: NumberMember(Float32),
y: NumberMember(Float32)
});
To serialize a model instance you can either do it manually via the JsonSerializer interface or simply pass it to JSON.stringify().
let obj = new MyModel();
let serializer = new JsonSerializer(MyModel);
let serialized = serializer.serialize(obj);
Note that serializer.serialize does not return a string but rather a JSON object using only builtin types (String, Number, Boolean, Array, Object and Date).
To deserialize, we do the following:
let serializer = new JsonSerializer(MyModel);
let my_obj = serializer.deserialize(JSON.parse(my_json_str));
FAQs
A decorator-based schema/model library with json and binary (de)serialization
We found that @uon/model demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.