UNPKG

@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
/** * @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; }