UNPKG

mobx-keystone

Version:

A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more

52 lines (45 loc) 1.09 kB
import { namespace } from "../../utils" import { ActionCallArgumentSerializer, cannotSerialize } from "./core" export const primitiveSerializer: ActionCallArgumentSerializer< number | bigint | undefined, string > = { id: `${namespace}/primitiveAsString`, serialize(value) { // number if (Number.isNaN(value)) { return "nan" } switch (value) { case Number.POSITIVE_INFINITY: return "+inf" case Number.NEGATIVE_INFINITY: return "-inf" default: break } // bigint if (typeof value === "bigint") { return value.toString() } // undefined if (value === undefined) { return "undefined" } return cannotSerialize }, deserialize(str) { switch (str) { case "nan": return Number.NaN case "+inf": return Number.POSITIVE_INFINITY case "-inf": return Number.NEGATIVE_INFINITY case "undefined": return undefined default: return BigInt(str) } }, }