DejsonifiableZodSchemaObject
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-23 20:11:06 +01:00
parent 03b769b74f
commit cffc56e7f6
4 changed files with 93 additions and 63 deletions

View File

@@ -1,11 +1,9 @@
import { trait } from "@thilawyn/traitify-ts"
import { Effect, pipe } from "effect"
import { HasRequiredKeys } from "type-fest"
import { z } from "zod"
import { ZodSchemaClass } from "../shapes/ZodSchemaClass"
import { parseZodTypeEffect } from "../util"
import { JsonifiableZodSchemaClass } from "../shapes/JsonifiableZodSchemaClass"
import { Effect } from "effect"
import { JsonifiableObject } from "type-fest/source/jsonifiable"
import { z } from "zod"
import { JsonifiableZodSchemaClass } from "../shapes/JsonifiableZodSchemaClass"
import { parseZodTypeEffect } from "../util"
export const DejsonifiableZodSchemaObject = trait
@@ -38,58 +36,87 @@ export const DejsonifiableZodSchemaObject = trait
Values,
JsonifiedValues
>,
values: JsonifiedValues,
params?: Partial<z.ParseParams>,
) {
return new this(
this.schema.parse({ ...this.defaultValues, ...values }, params)
this.dejsonifySchema.parse(values, params)
)
}
// static async createPromise<
// Instance extends Values,
static async dejsonifyPromise<
Instance extends Values,
// SchemaT extends z.ZodRawShape,
// SchemaUnknownKeys extends z.UnknownKeysParam,
// SchemaCatchall extends z.ZodTypeAny,
JsonifySchemaT extends z.ZodRawShape,
JsonifySchemaUnknownKeys extends z.UnknownKeysParam,
JsonifySchemaCatchall extends z.ZodTypeAny,
// Values extends object,
// DefaultValues extends Partial<Values>,
// >(
// this: ZodSchemaClass<Instance, SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
DejsonifySchemaT extends z.ZodRawShape,
DejsonifySchemaUnknownKeys extends z.UnknownKeysParam,
DejsonifySchemaCatchall extends z.ZodTypeAny,
// ...[values, params]: NewZodSchemaInstanceArgs<
// NewZodSchemaInstanceInput<Values, DefaultValues>
// >
// ) {
// return new this(
// await this.schema.parseAsync({ ...this.defaultValues, ...values }, params)
// )
// }
Values extends object,
JsonifiedValues extends JsonifiableObject,
>(
this: JsonifiableZodSchemaClass<
Instance,
// static createEffect<
// Instance extends Values,
JsonifySchemaT,
JsonifySchemaUnknownKeys,
JsonifySchemaCatchall,
// SchemaT extends z.ZodRawShape,
// SchemaUnknownKeys extends z.UnknownKeysParam,
// SchemaCatchall extends z.ZodTypeAny,
DejsonifySchemaT,
DejsonifySchemaUnknownKeys,
DejsonifySchemaCatchall,
// Values extends object,
// DefaultValues extends Partial<Values>,
// >(
// this: ZodSchemaClass<Instance, SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues>,
Values,
JsonifiedValues
>,
// ...[values, params]: NewZodSchemaInstanceArgs<
// NewZodSchemaInstanceInput<Values, DefaultValues>
// >
// ) {
// return pipe(
// parseZodTypeEffect(
// this.schema,
// { ...this.defaultValues, ...values },
// params,
// ),
values: JsonifiedValues,
params?: Partial<z.ParseParams>,
) {
return new this(
await this.dejsonifySchema.parseAsync(values, params)
)
}
// Effect.map(values => new this(values)),
// )
// }
static dejsonifyEffect<
Instance extends Values,
JsonifySchemaT extends z.ZodRawShape,
JsonifySchemaUnknownKeys extends z.UnknownKeysParam,
JsonifySchemaCatchall extends z.ZodTypeAny,
DejsonifySchemaT extends z.ZodRawShape,
DejsonifySchemaUnknownKeys extends z.UnknownKeysParam,
DejsonifySchemaCatchall extends z.ZodTypeAny,
Values extends object,
JsonifiedValues extends JsonifiableObject,
>(
this: JsonifiableZodSchemaClass<
Instance,
JsonifySchemaT,
JsonifySchemaUnknownKeys,
JsonifySchemaCatchall,
DejsonifySchemaT,
DejsonifySchemaUnknownKeys,
DejsonifySchemaCatchall,
Values,
JsonifiedValues
>,
values: JsonifiedValues,
params?: Partial<z.ParseParams>,
) {
return parseZodTypeEffect(this.dejsonifySchema, values, params).pipe(
Effect.map(values => new this(values)),
)
}
})
.build()