Currently in early development. Breaking changes will occur frequently.
The serializer is a library used to convert an instance of anything to a string and a string to an instance of anything. It does so in such a way as to where all of the pointer references remain intact. It allows for a table of constructors to be presented so that context, on deserialization, could be remembered or changed. It’s an appropriate tool for cloning instances with deeply nested structures. However, be advised serializing state to disk without encrypting and signing is a dangerous practice that should be avoided at all cost.
import Serializer from "@ao-framework/serializer"
namespace Model {
export class User {
public self: User;
public name: string;
public email: string;
}
export class Note {
public title: string;
public content: string;
}
}
let serializer = new Serializer(Model, "name-of-context")
let user = new User();
user.self = user;
user.name = "Something";
user.email = "Something@gmail.com"
let userString = serializer.down(user);
let newUser = serializer.up(userString);
console.log(newUser.self === newUser) //outputs: true
Serializing state down to a string and reviving it to its original state without validation raises strong security concerns. Encrypt and sign everything!
"Be Kind andPlease RewindEncrypt Everything"