0.1.2 #3

Merged
Thilawyn merged 136 commits from next into master 2024-03-11 19:44:21 +01:00
2 changed files with 28 additions and 22 deletions
Showing only changes of commit 55d8bb0c1b - Show all commits

View File

@@ -1,5 +1,6 @@
import { Trait, TraitExpressionBuilder, expression } from "@thilawyn/traitify-ts"
import { AbstractClass, Simplify } from "type-fest"
import { JsonifiableObject } from "type-fest/source/jsonifiable"
import { z } from "zod"
import { ExtendableZodSchemaObject } from "./traits/ExtendableZodSchemaObject"
import { InstantiableZodSchemaObject } from "./traits/InstantiableZodSchemaObject"
@@ -36,9 +37,12 @@ extends TraitExpressionBuilder<Superclass, Traits> {
Values extends object,
DefaultValues extends Partial<Values>,
>(
this: ZodSchemaClassBuilder<Superclass, Traits>,
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>,
defaultValues: DefaultValues,
this: ZodSchemaClassBuilder<Superclass, Traits>,
{ schema, defaultValues }: {
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>
defaultValues: DefaultValues
},
) {
class Schemas extends (this.expressionSuperclass as AbstractClass<object, []>) {
static readonly schema = schema
@@ -76,7 +80,21 @@ extends TraitExpressionBuilder<Superclass, Traits> {
)
}
jsonifiable() {
jsonifiable<
Superclass extends AbstractClass<object>,
JsonifiedValues extends JsonifiableObject,
JsonifySchemaT extends z.ZodRawShape,
JsonifySchemaUnknownKeys extends z.UnknownKeysParam,
JsonifySchemaCatchall extends z.ZodTypeAny,
DejsonifySchemaT extends z.ZodRawShape,
DejsonifySchemaUnknownKeys extends z.UnknownKeysParam,
DejsonifySchemaCatchall extends z.ZodTypeAny,
>(
this: ZodSchemaClassBuilder<Superclass, Traits>,
) {
}
}

View File

@@ -1,38 +1,26 @@
import { Implements, TraitExpression } from "@thilawyn/traitify-ts"
import { z } from "zod"
import { ZodSchemaClass, ZodSchemaClassBuilder } from "./ZodSchemaClass"
import { ZodSchemaClassBuilder } from "./ZodSchemaClass"
import { ObservableZodSchemaObject } from "./traits/ObservableZodSchemaObject"
const newTestExp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, [])
.schema(
z.object({
.schema({
schema: z.object({
/** Object ID */
id: z.bigint(),
name: z.string(),
}),
{ id: -1n },
)
.expresses(ObservableZodSchemaObject)
.build()
const TestExp = ZodSchemaClass({
schema: z.object({
/** Object ID */
id: z.bigint(),
name: z.string(),
}),
defaultValues: { id: -1n },
})
defaultValues: { id: -1n },
})
.expresses(ObservableZodSchemaObject)
.build()
@newTestExp.staticImplements
class Test extends newTestExp.extends implements Implements<typeof newTestExp> {}
Test.schema
Test.defaultValues
const inst = Test.create({ id: 1n, name: "" })
console.log(inst)