UNPKG

hydratable

Version:

Serialize/Deserialize your JSON objects

50 lines (49 loc) 1.33 kB
export type HydratableType = 'number' | 'date' | 'bool' | 'string' | 'object' | 'array' | { new (...args: any): any; } | { factory: (model: any) => any; }; interface ModelMapValue { type: HydratableType; options: HydrateOptions; } export type Differences = { [key: string]: [unknown, unknown] | Differences; }; declare global { var HydratableModelMap: Map<symbol, Map<string, ModelMapValue>>; } export interface HydrateOptions { allowNull?: boolean; incomingFieldName?: string; arrayElementType?: HydratableType; dictionaryValueType?: HydratableType; } export declare function hy(type: HydratableType, options?: HydrateOptions): (target: any, propertyKey: string) => void; export declare class Hydratable<T> { constructor(data: T); toJSON(): T; diff(other: Hydratable<T>, skip?: { [field: string]: true; }): Differences; private areDatesEqual; private diffArrays; private diffObject; private hydrate; private setField; private setNumber; private setDate; private setBool; private setString; private setArray; private setObject; private copyBuffer; private copyArray; private copyObject; private forEachHyProp; private isObject; private isArray; private isDate; private setOnThis; } export {};