import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
const value = { a: 1, b: 2 };
const deserializedValue = serde.deserialize(serde.serialize(value));
// Will print out { a: 1, b: 2}
console.log(serializedValue);
// Will print false
console.log(value === serializedValue);
Optional
prefix: OneOrMore<string>import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
import { ISerializable } from "@daiso-tech/core/serde/contracts";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
type ISerializedUser = {
name: string;
age: number
};
class User implements ISerializable<ISerializedUser> {
static deserialize(serializedUser: ISerializedUser): User {
return new User(serializedUser.name, serializedUser.age);
}
constructor(public readonly name: string, public readonly age: number) {}
serialize(): ISerializedUser {
return {
name: this.name,
age: this.age,
};
}
}
serde.registerClass(AddEvent);
const user = new User("Carl", 30);
const deserializedUser = serde.deserialize(serde.serialize(user));
// Will print "Carl"
console.log(deserializedUser.name);
// Will print 30
console.log(deserializedUser.age);
// Will print true
console.log(deserializedUser instanceof User);
// Will print false
console.log(user === deserializedUser);
Optional
prefix: OneOrMore<string>import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
type ISerializedUser = {
name: string;
age: number
};
class User implements ISerializable<ISerializedUser> {
static deserialize(serializedUser: ISerializedUser): User {
return new User(serializedUser.name, serializedUser.age);
}
constructor(public readonly name: string, public readonly age: number) {}
serialize(): ISerializedUser {
return {
name: this.name,
age: this.age,
};
}
}
serde.registerCustom<ISerializedUser, User>({
name: User.name,
isApplicable: (value): value is User => {
return value instanceof User;
},
serialize: (value: User): ISerializedUser => {
return {
name: value.name,
age: value.age
};
},
deserialize: (value: ISerializedUser): User => {
return new User(value.name, value.age);
}
});
const user = new User("Carl", 30);
const deserializedUser = serde.deserialize(serde.serialize(user));
// Will print "Carl"
console.log(deserializedUser.name);
// Will print 30
console.log(deserializedUser.age);
// Will print true
console.log(deserializedUser instanceof User);
// Will print false
console.log(user === deserializedUser);
Optional
prefix: OneOrMore<string>import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
import { BaseEvent } from "@daiso-tech/core/event-bus/contracts";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
class AddEvent extends BaseEvent<{ a: number; b: number }> {}
serde.registerEvent(AddEvent);
const event = new AddEvent({ a: 1, b: 2 });
const deserializedEvent = serde.deserialize(serde.serialize(event));
// Will print 1
console.log(deserializedEvent.fields.a);
// Will print 2
console.log(deserializedEvent.fields.b);
// Will print true
console.log(deserializedEvent instanceof AddEvent);
// Will print false
console.log(event === deserializedEvent);
import type { IFlexibleSerde } from "@daiso-tech/core/serde/contracts";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
const serde: IFlexibleSerde = new Serde(new SuperJsonSerdeAdapter());
const value = { a: 1, b: 2 };
const serializedValue = serde.serialize(value);
// Will print out { a: 1, b: 2} as json string, this because of the SuperJsonSerdeAdapter
console.log(serializedValue);
Serde class can be derived from any IFlexibleSerdeAdapter.
IMPORT_PATH:
"@daiso-tech/core/serde/implementations/deriavables"