@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
45 lines (44 loc) • 2 kB
TypeScript
/**
* @module Serde
*/
import type { ISerializable } from "../../serde/contracts/serializable.contract.js";
import type { ISerde } from "../../serde/contracts/serde.contract.js";
import type { OneOrMore } from "../../utilities/_module-exports.js";
/**
* The `SerializableClass` contract defines standard way to make a class instance serializable and deserializable.
*
* IMPORT_PATH: `"@daiso-tech/core/serde/contracts"`
* @group Contracts
*/
export type SerializableClass<TSerializedValue> = {
new (...arguments_: any[]): ISerializable<TSerializedValue>;
deserialize(serializedValue: TSerializedValue): ISerializable<TSerializedValue>;
};
/**
*
* IMPORT_PATH: `"@daiso-tech/core/serde/contracts"`
* @group Contracts
*/
export type ISerdeTransformer<TDeserializedValue, TSerializedValue> = {
name: OneOrMore<string>;
isApplicable(value: unknown): value is TDeserializedValue;
deserialize(serializedValue: TSerializedValue): TDeserializedValue;
serialize(deserializedValue: TDeserializedValue): TSerializedValue;
};
/**
* The `IFlexibleSerde` contract defines a standard way to serialize and deserialize both plain data and custom classes.
*
* IMPORT_PATH: `"@daiso-tech/core/serde/contracts"`
* @group Contracts
*/
export interface IFlexibleSerde<TSerializedValue = unknown> extends ISerde<TSerializedValue> {
/**
* The `registerClass` method is used for registering custom class for serialization and deserialization.
* The `class_` parameter must be of type {@link SerializableClass | `SerializableClass`}.
*/
registerClass<TSerializedClassInstance>(class_: SerializableClass<TSerializedClassInstance>, prefix?: OneOrMore<string>): this;
/**
* The `registerCustom` method is used for registering custom values for serialization and deserialization.
*/
registerCustom<TCustomDeserialized, TCustomSerialized>(transformer: ISerdeTransformer<TCustomDeserialized, TCustomSerialized>, prefix?: OneOrMore<string>): this;
}