UNPKG

@bargain/core

Version:

A simple TypeScript decorator-based library for serializing and deserializing data.

25 lines (24 loc) 1 kB
interface PropertyMetadata<Serialized = any, Deserialized = Serialized> { key: string; serializedKey: string; serializer?: (deserialized: Deserialized) => Serialized; deserializer?: (serialized: Serialized) => Deserialized; } declare type PropertyOptions = string | Omit<Partial<PropertyMetadata>, "key">; export declare function Property(_opts?: PropertyOptions): (target: any, propertyKey: string) => void; export declare class Bargain<T extends Function[]> { definitions: T; constructor(definitions: T); /** * Turns an instance of a class into a prototype-less object (no longer an instance of the class). * @param instance * @returns */ serialize<F extends T[number]["prototype"]>(instance: F): Record<string, unknown>; /** * Turns the serialized data into an instance of a class. * @param serialized */ deserialize<F extends T[number]>(serialized: unknown, classDef: F): F["prototype"]; } export {};