mobx-keystone
Version:
A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more
22 lines (17 loc) • 677 B
text/typescript
import { fromSnapshot } from "../../snapshot/fromSnapshot"
import { getSnapshot } from "../../snapshot/getSnapshot"
import { isTweakedObject } from "../../tweaker/core"
import { namespace } from "../../utils"
import { ActionCallArgumentSerializer, cannotSerialize } from "./core"
export const objectSnapshotSerializer: ActionCallArgumentSerializer<object, object> = {
id: `${namespace}/objectSnapshot`,
serialize(value) {
if (typeof value !== "object" || value === null || !isTweakedObject(value, false)) {
return cannotSerialize
}
return getSnapshot(value)
},
deserialize(snapshot) {
return fromSnapshot(snapshot)
},
}