diff --git a/src/traits/ZodSchemaObject.ts b/src/traits/ZodSchemaObject.ts index 7564b10..3ffdfc6 100644 --- a/src/traits/ZodSchemaObject.ts +++ b/src/traits/ZodSchemaObject.ts @@ -19,69 +19,73 @@ export const ZodSchemaObject = < >( schemaWithDefaults: z.ZodObject, ) => trait - .implement(Super => class ZodSchemaObjectImpl extends Super { - static readonly schema = stripZodObjectDefaults(schemaWithDefaults) - static readonly schemaWithDefaults = schemaWithDefaults + .implement(Super => { + class ZodSchemaObjectImpl extends Super { + static readonly schema = stripZodObjectDefaults(schemaWithDefaults) + static readonly schemaWithDefaults = schemaWithDefaults - static transform< - Instance extends Values, + static transform< + Instance extends Values, - TransformT extends z.ZodRawShape, - TransformUnknownKeys extends z.UnknownKeysParam, - TransformCatchall extends z.ZodTypeAny, - TransformOutput extends Values, - TransformInput, - >( - this: Class, - schema: z.ZodObject, - ) { - return schema.transform(values => new this(values)) + TransformT extends z.ZodRawShape, + TransformUnknownKeys extends z.UnknownKeysParam, + TransformCatchall extends z.ZodTypeAny, + TransformOutput extends Values, + TransformInput, + >( + this: Class, + schema: z.ZodObject, + ) { + return schema.transform(values => new this(values)) + } + + + static create< + Instance extends Values + >( + this: ( + Class & + ImplStatic + ), + ...[values, params]: CreateArgs + ) { + return this + .transform(this.schemaWithDefaults) + .parse(values, params) + } + + static createPromise< + Instance extends Values + >( + this: ( + Class & + ImplStatic + ), + ...[values, params]: CreateArgs + ) { + return this + .transform(this.schemaWithDefaults) + .parseAsync(values, params) + } + + static createEffect< + Instance extends Values + >( + this: ( + Class & + ImplStatic + ), + ...[values, params]: CreateArgs + ) { + return parseZodSchemaEffect( + this.transform(this.schemaWithDefaults), + values, + params, + ) + } } - - static create< - Instance extends Values - >( - this: ( - Class & - ImplStatic - ), - ...[values, params]: CreateArgs - ) { - return this - .transform(this.schemaWithDefaults) - .parse(values, params) - } - - static createPromise< - Instance extends Values - >( - this: ( - Class & - ImplStatic - ), - ...[values, params]: CreateArgs - ) { - return this - .transform(this.schemaWithDefaults) - .parseAsync(values, params) - } - - static createEffect< - Instance extends Values - >( - this: ( - Class & - ImplStatic - ), - ...[values, params]: CreateArgs - ) { - return parseZodSchemaEffect( - this.transform(this.schemaWithDefaults), - values, - params, - ) - } + return ZodSchemaObjectImpl }) .build()