makeJsonifiableSchemableClass

This commit is contained in:
Julien Valverdé
2024-01-02 02:43:16 +01:00
parent de6a97e0a6
commit 3c2dc477fd
2 changed files with 9 additions and 4 deletions

View File

@@ -1,3 +1,4 @@
import { Effect } from "effect"
import { Class } from "type-fest"
import { JsonifiableObject } from "type-fest/source/jsonifiable"
import { z } from "zod"
@@ -58,4 +59,8 @@ export type JsonifiableSchemableObject<
readonly $jsonifiableSchemableConfig: $Config
readonly jsonifySchema: $Config["jsonifySchema"]
readonly dejsonifySchema: $Config["dejsonifySchema"]
jsonify(): $Config["jsonifiedValues"]
jsonifyPromise(): Promise<$Config["jsonifiedValues"]>
jsonifyEffect(): Effect.Effect<never, z.ZodError<$Config["$schemableConfig"]["values"]>, $Config["jsonifiedValues"]>
}

View File

@@ -1,7 +1,7 @@
import { Class } from "type-fest"
import { JsonifiableObject } from "type-fest/source/jsonifiable"
import { z } from "zod"
import { JsonifiableSchemableConfig } from "."
import { JsonifiableSchemableClass, JsonifiableSchemableConfig, JsonifiableSchemableObject } from "."
import { SchemableClass, SchemableConfig } from ".."
import { StaticMembers, parseZodTypeEffect } from "../util"
@@ -84,15 +84,15 @@ export function makeJsonifiableSchemableClass<
jsonifyEffect() {
return parseZodTypeEffect(this.jsonifySchema, this)
}
}
} satisfies JsonifiableSchemableClass<typeof $jsonifiableSchemableConfig>
return jsonifiableClass as (
Class<
InstanceType<C> & InstanceType<typeof jsonifiableClass>,
InstanceType<C> & JsonifiableSchemableObject<typeof $jsonifiableSchemableConfig>,
ConstructorParameters<C>
> &
StaticMembers<C> &
StaticMembers<typeof jsonifiableClass>
StaticMembers<JsonifiableSchemableClass<typeof $jsonifiableSchemableConfig>>
)
}