ZodSchemaClassBuilder work
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { Trait, TraitExpression, TraitExpressionBuilder, expression } from "@thilawyn/traitify-ts"
|
import { Trait, TraitExpressionBuilder, expression } from "@thilawyn/traitify-ts"
|
||||||
import { AbstractClass, Simplify } from "type-fest"
|
import { AbstractClass, Simplify } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject"
|
import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject"
|
||||||
@@ -9,25 +9,22 @@ import { Extend, StaticMembers } from "./util"
|
|||||||
export class ZodSchemaClassBuilder<
|
export class ZodSchemaClassBuilder<
|
||||||
Superclass extends AbstractClass<object>,
|
Superclass extends AbstractClass<object>,
|
||||||
const Traits extends Trait<any, any, any, any>[],
|
const Traits extends Trait<any, any, any, any>[],
|
||||||
> {
|
>
|
||||||
constructor(
|
extends TraitExpressionBuilder<Superclass, Traits> {
|
||||||
private readonly expressionBuilder: TraitExpressionBuilder<Superclass, Traits>
|
// extends<
|
||||||
) {}
|
// This extends ZodSchemaClassBuilder<
|
||||||
|
// typeof TraitExpression.NullSuperclass, // Ensures `extends` can only be called when the expression does not have a superclass
|
||||||
extends<
|
// Traits
|
||||||
This extends ZodSchemaClassBuilder<
|
// >,
|
||||||
typeof TraitExpression.NullSuperclass, // Ensures `extends` can only be called when the expression does not have a superclass
|
// Super extends AbstractClass<object, []>,
|
||||||
Traits
|
// >(
|
||||||
>,
|
// this: This,
|
||||||
Super extends AbstractClass<object, []>,
|
// superclass: Super,
|
||||||
>(
|
// ) {
|
||||||
this: This,
|
// return new ZodSchemaClassBuilder(
|
||||||
superclass: Super,
|
// this.expressionBuilder.extends(superclass)
|
||||||
) {
|
// )
|
||||||
return new ZodSchemaClassBuilder(
|
// }
|
||||||
this.expressionBuilder.extends(superclass)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
schema<
|
schema<
|
||||||
SchemaT extends z.ZodRawShape,
|
SchemaT extends z.ZodRawShape,
|
||||||
@@ -41,7 +38,7 @@ export class ZodSchemaClassBuilder<
|
|||||||
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>,
|
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>,
|
||||||
defaultValues: DefaultValues,
|
defaultValues: DefaultValues,
|
||||||
) {
|
) {
|
||||||
class Schemas extends (this.expressionBuilder.expressionSuperclass as AbstractClass<object, []>) {
|
class Schemas extends (this.expressionSuperclass as AbstractClass<object, []>) {
|
||||||
static readonly schema = schema
|
static readonly schema = schema
|
||||||
static readonly defaultValues = defaultValues
|
static readonly defaultValues = defaultValues
|
||||||
|
|
||||||
@@ -51,8 +48,7 @@ export class ZodSchemaClassBuilder<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ZodSchemaClassBuilder(
|
return this
|
||||||
this.expressionBuilder
|
|
||||||
.extends(Schemas as unknown as (
|
.extends(Schemas as unknown as (
|
||||||
AbstractClass<
|
AbstractClass<
|
||||||
InstanceType<Superclass> &
|
InstanceType<Superclass> &
|
||||||
@@ -73,16 +69,11 @@ export class ZodSchemaClassBuilder<
|
|||||||
InstantiableZodSchemaObject,
|
InstantiableZodSchemaObject,
|
||||||
ExtendableZodSchemaObject,
|
ExtendableZodSchemaObject,
|
||||||
)
|
)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jsonifiable() {
|
jsonifiable() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toBuilder() {
|
|
||||||
return this.expressionBuilder
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Implements, expression } from "@thilawyn/traitify-ts"
|
import { Implements, TraitExpression } from "@thilawyn/traitify-ts"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { ZodSchemaClass, ZodSchemaClassBuilder } from "./ZodSchemaClass"
|
import { ZodSchemaClass, ZodSchemaClassBuilder } from "./ZodSchemaClass"
|
||||||
import { ObservableZodSchemaObject } from "./traits/ObservableZodSchemaObject"
|
import { ObservableZodSchemaObject } from "./traits/ObservableZodSchemaObject"
|
||||||
|
|
||||||
|
|
||||||
const newTestExp = new ZodSchemaClassBuilder(expression)
|
const newTestExp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, [])
|
||||||
.schema(
|
.schema(
|
||||||
z.object({
|
z.object({
|
||||||
id: z.bigint()
|
id: z.bigint()
|
||||||
@@ -12,7 +12,6 @@ const newTestExp = new ZodSchemaClassBuilder(expression)
|
|||||||
|
|
||||||
{ id: -1n },
|
{ id: -1n },
|
||||||
)
|
)
|
||||||
.toBuilder()
|
|
||||||
.expressionSuperclass
|
.expressionSuperclass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user