import { z } from "zod" import { makeSchemableClass, newSchemable } from "." import { dejsonifyBigIntSchema, jsonifyBigIntSchema, makeJsonifiableSchemableClass } from "./jsonifiable" const UserSchema = z.object({ /** User ID */ id: z.bigint().default(-1n) }) const UserSchemableObject = makeSchemableClass({ schema: UserSchema }) const UserJsonifiableSchemableObject = makeJsonifiableSchemableClass(UserSchemableObject, { jsonifySchema: ({ schema, s }) => schema.extend({ id: jsonifyBigIntSchema(s.id) }), dejsonifySchema: ({ schema, s }) => schema.extend({ id: dejsonifyBigIntSchema(s.id) }), }) class User extends UserJsonifiableSchemableObject {} const user1 = new User({ id: 1n }) const user2 = newSchemable(User, { id: 2n }) console.log(user1) console.log(user2) console.log(await user2.jsonifyPromise())