@berish/serber
Version:
Serializable and deserializable adaptive adapter with plugins
20 lines (19 loc) • 1.25 kB
TypeScript
import { ISerberPlugin, ISerberPluginDefaultParams } from './types';
export interface SerberOperationOptions {
throwWhenError?: boolean;
}
export declare class Serber<Params extends {
[key: string]: any;
} = {}> {
private _plugins;
get plugins(): ISerberPlugin<any, any, any>[];
addPlugin<TParams>(plugin: ISerberPlugin<any, any, TParams>): Serber<Params & TParams>;
hasPlugin(plugin: ISerberPlugin): boolean;
removePlugin<TParams>(plugin: ISerberPlugin<any, any, TParams>): Serber<Pick<Params, Exclude<keyof Params, keyof TParams>>>;
with<TParams>(plugin: ISerberPlugin<any, any, TParams>): Serber<Params & TParams>;
without<TParams>(plugin: ISerberPlugin<any, any, TParams>): Serber<Omit<Params, keyof TParams>>;
serialize: <T = any>(obj: any, params?: Params & ISerberPluginDefaultParams, options?: SerberOperationOptions) => T;
serializeAsync: (obj: any, params?: Params & ISerberPluginDefaultParams, options?: SerberOperationOptions) => Promise<any>;
deserialize: <T = any>(obj: any, params?: Params & ISerberPluginDefaultParams, options?: SerberOperationOptions) => T;
deserializeAsync: (obj: any, params?: Params & ISerberPluginDefaultParams, options?: SerberOperationOptions) => Promise<any>;
}