import Decimal from "decimal.js" import { z } from "zod" type JsonifiedDecimalBrand = "@thilawyn/zod-schema-class/JsonifiedDecimal" export function decimal() { return z.custom(v => Decimal.isDecimal(v)) } export module decimal { export function jsonifyDecimalSchema>(schema: S) { return schema .transform(v => v.toJSON()) .brand() } export function dejsonifyDecimalSchema>(schema: S) { return z .custom>() .pipe( z .string() .transform(v => { try { return new Decimal(v) } catch (e) { return v } }) ) .pipe(schema) } }