@berish/serber
Version:
Serializable and deserializable adaptive adapter with plugins
34 lines (33 loc) • 2.68 kB
TypeScript
import { SERBER_INSTANCE_SYMBOL, SERBER_KEY_SYMBOL, SERBER_PARENT_OBJECT_SYMBOL, SERBER_PATH_SYMBOL, SERBER_ROOT_OBJECT_SYMBOL } from './const';
import { Serber } from './serber';
export interface ISerberPluginDefaultParams {
[SERBER_INSTANCE_SYMBOL]?: Serber<any>;
[SERBER_KEY_SYMBOL]?: string | symbol | number;
[SERBER_PATH_SYMBOL]?: (string | symbol | number)[];
[SERBER_PARENT_OBJECT_SYMBOL]?: any;
[SERBER_ROOT_OBJECT_SYMBOL]?: any;
}
export interface ISerberPlugin<Input = any, Output = any, Params extends {
[key: string]: any;
} = {}> {
isForSerialize?(obj: Input, options?: Params & ISerberPluginDefaultParams): boolean;
isForDeserialize?(obj: Output, options?: Params & ISerberPluginDefaultParams): boolean;
isForSerializeAsync?(obj: Input, options?: Params & ISerberPluginDefaultParams): boolean | Promise<boolean>;
isForDeserializeAsync?(obj: Output, options?: Params & ISerberPluginDefaultParams): boolean | Promise<boolean>;
serialize?(obj: Input, options?: Params & ISerberPluginDefaultParams): Output;
deserialize?(obj: Output, options?: Params & ISerberPluginDefaultParams): Input;
serializeAsync?(obj: Input, options?: Params & ISerberPluginDefaultParams): Output | Promise<Output>;
deserializeAsync?(obj: Output, options?: Params & ISerberPluginDefaultParams): Input | Promise<Input>;
beforeSerialize?(obj: Input, options?: Params & ISerberPluginDefaultParams): void;
beforeSerializeAsync?(obj: Input, options?: Params & ISerberPluginDefaultParams): void | Promise<void>;
beforeDeserialize?(obj: Output, options?: Params & ISerberPluginDefaultParams): void;
beforeDeserializeAsync?(obj: Input, options?: Params & ISerberPluginDefaultParams): void | Promise<void>;
afterSerialize?(obj: Input, result: Output, options?: Params & ISerberPluginDefaultParams): void;
afterSerializeAsync?(obj: Input, result: Output, options?: Params & ISerberPluginDefaultParams): void | Promise<void>;
afterDeserialize?(obj: Output, result: Input, options?: Params & ISerberPluginDefaultParams): void;
afterDeserializeAsync?(obj: Output, result: Input, options?: Params & ISerberPluginDefaultParams): void | Promise<void>;
isAlreadySerialized?(obj: Output | Input, options?: Params & ISerberPluginDefaultParams): boolean;
isAlreadyDeserialized?(obj: Input | Output, options?: Params & ISerberPluginDefaultParams): boolean;
isAlreadySerializedAsync?(obj: Output | Input, options?: Params & ISerberPluginDefaultParams): boolean | Promise<boolean>;
isAlreadyDeserializedAsync?(obj: Input | Output, options?: Params & ISerberPluginDefaultParams): boolean | Promise<boolean>;
}