UNPKG

overmind

Version:
28 lines (27 loc) 1.17 kB
import { IMutation } from "proxy-state-tree"; //#region src/rehydrate.d.ts declare const SERIALIZE: unique symbol; interface Serialize { [SERIALIZE]: boolean; } type Serializable = Serialize | { toJSON: () => { [SERIALIZE]: boolean; }; }; type SerializableValue = Serializable | Array<Serializable> | { [key: string]: Serializable; } | null; type FilteredKeys<T, U> = { [P in keyof T]: T[P] extends U ? P : never }[keyof T]; type ExcludeNever<T extends {}> = { [P in keyof T]: T[P] extends never ? never : P }[keyof T]; type ExtracType<T extends {}, K> = { [P in FilteredKeys<T, K | {}>]: T[P] extends SerializableValue ? (data: any) => Serializable : T[P] extends {} ? ExtracType<T[P], K> extends { [key: string]: never; } ? never : ExtractDeepType<T[P], K> : never }; type ExtractDeepType<T extends {}, K, U extends {} = ExtracType<T, K>> = { [P in ExcludeNever<U>]: U[P] }; type StateNode = { [key: string]: any; }; declare const rehydrate: <T extends StateNode>(state: T, source: IMutation[] | StateNode, classes?: ExtractDeepType<T, SerializableValue>) => void; //#endregion export { SERIALIZE, rehydrate }; //# sourceMappingURL=rehydrate.d.ts.map