diff --git a/src/makeJsonifiableSchemableClass.ts b/src/makeJsonifiableSchemableClass.ts index 84a9261..7a053f4 100644 --- a/src/makeJsonifiableSchemableClass.ts +++ b/src/makeJsonifiableSchemableClass.ts @@ -1,6 +1,7 @@ import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" import { SchemableClass, SchemableConfig } from "." +import { parseZodTypeEffect } from "./util" export function makeJsonifiableSchemableClass< @@ -55,8 +56,24 @@ export function makeJsonifiableSchemableClass< }) - return class JsonifiableSchemableObject { + return class JsonifiableSchemableObject extends class_ { + static readonly jsonifySchema = jsonifySchema + static readonly dejsonifySchema = dejsonifySchema + readonly jsonifySchema = jsonifySchema + readonly dejsonifySchema = dejsonifySchema + + jsonify() { + return this.jsonifySchema.parse(this) + } + + jsonifyPromise() { + return this.jsonifySchema.parseAsync(this) + } + + jsonifyEffect() { + return parseZodTypeEffect(this.jsonifySchema, this) + } } }