0.1.1 #2
@@ -1,8 +1,8 @@
|
|||||||
import { Opaque } from "type-fest"
|
import { Opaque } from "type-fest"
|
||||||
|
|
||||||
|
|
||||||
export type DefinedDefaultValues<T> = Opaque<T, "@thilawyn/schemable-class/DefinedDefaultValues">
|
export type DefinedDefaultValuesTag = "@thilawyn/schemable-class/DefinedDefaultValues"
|
||||||
|
|
||||||
export function defineDefaultValues<T>(values: T) {
|
export function defineDefaultValues<T>(values: T) {
|
||||||
return values as DefinedDefaultValues<T>
|
return values as Opaque<T, DefinedDefaultValuesTag>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
import { AbstractClass, Class as ConcreteClass, Opaque } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { DefinedDefaultValues, SchemableClass } from "."
|
import { DefinedDefaultValuesTag, SchemableClass } from "."
|
||||||
import { StaticMembers } from "./util"
|
import { StaticMembers } from "./util"
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ export function extendSchemableClass<
|
|||||||
SchemaValues
|
SchemaValues
|
||||||
>
|
>
|
||||||
|
|
||||||
defaultValues: (defaultValues: ExtendDefaultValues) => DefinedDefaultValues<DefaultValues>
|
defaultValues: (defaultValues: ExtendDefaultValues) => Opaque<DefaultValues, DefinedDefaultValuesTag>
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
type Class<T, Arguments extends unknown[]> = (
|
type Class<T, Arguments extends unknown[]> = (
|
||||||
@@ -78,8 +78,8 @@ export function extendSchemableClass<
|
|||||||
Class<
|
Class<
|
||||||
Omit<InstanceType<C>, "schema" | "defaultValues" | keyof ExtendSchemaValues> &
|
Omit<InstanceType<C>, "schema" | "defaultValues" | keyof ExtendSchemaValues> &
|
||||||
{
|
{
|
||||||
readonly schema: typeof schema,
|
readonly schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, SchemaValues, SchemaValues>,
|
||||||
readonly defaultValues: typeof defaultValues,
|
readonly defaultValues: DefaultValues,
|
||||||
} &
|
} &
|
||||||
SchemaValues,
|
SchemaValues,
|
||||||
|
|
||||||
@@ -88,8 +88,8 @@ export function extendSchemableClass<
|
|||||||
|
|
||||||
Omit<StaticMembers<C>, "schema" | "defaultValues"> &
|
Omit<StaticMembers<C>, "schema" | "defaultValues"> &
|
||||||
{
|
{
|
||||||
readonly schema: typeof schema,
|
readonly schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, SchemaValues, SchemaValues>,
|
||||||
readonly defaultValues: typeof defaultValues,
|
readonly defaultValues: DefaultValues,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { AbstractClass, Class as ConcreteClass } from "type-fest"
|
import { AbstractClass, Class as ConcreteClass, Opaque } from "type-fest"
|
||||||
import { z } from "zod"
|
import { z } from "zod"
|
||||||
import { DefinedDefaultValues } from "."
|
import { DefinedDefaultValuesTag } from "."
|
||||||
import { StaticMembers } from "./util"
|
import { StaticMembers } from "./util"
|
||||||
|
|
||||||
|
|
||||||
@@ -23,15 +23,8 @@ export function makeSchemableClassFrom<
|
|||||||
extend: C,
|
extend: C,
|
||||||
|
|
||||||
{ schema, defaultValues }: {
|
{ schema, defaultValues }: {
|
||||||
schema: z.ZodObject<
|
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>
|
||||||
SchemaT,
|
defaultValues: Opaque<DefaultValues, DefinedDefaultValuesTag>
|
||||||
SchemaUnknownKeys,
|
|
||||||
SchemaCatchall,
|
|
||||||
Values,
|
|
||||||
Values
|
|
||||||
>
|
|
||||||
|
|
||||||
defaultValues: DefinedDefaultValues<DefaultValues>
|
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
type Class<T, Arguments extends unknown[]> = (
|
type Class<T, Arguments extends unknown[]> = (
|
||||||
@@ -55,8 +48,8 @@ export function makeSchemableClassFrom<
|
|||||||
Class<
|
Class<
|
||||||
InstanceType<C> &
|
InstanceType<C> &
|
||||||
{
|
{
|
||||||
readonly schema: typeof schema,
|
readonly schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>,
|
||||||
readonly defaultValues: typeof defaultValues,
|
readonly defaultValues: DefaultValues,
|
||||||
} &
|
} &
|
||||||
Values,
|
Values,
|
||||||
|
|
||||||
@@ -65,8 +58,8 @@ export function makeSchemableClassFrom<
|
|||||||
|
|
||||||
StaticMembers<C> &
|
StaticMembers<C> &
|
||||||
{
|
{
|
||||||
readonly schema: typeof schema,
|
readonly schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>,
|
||||||
readonly defaultValues: typeof defaultValues,
|
readonly defaultValues: DefaultValues,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -81,15 +74,8 @@ export function makeSchemableClass<
|
|||||||
DefaultValues extends Partial<Values>,
|
DefaultValues extends Partial<Values>,
|
||||||
>(
|
>(
|
||||||
props: {
|
props: {
|
||||||
schema: z.ZodObject<
|
schema: z.ZodObject<SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, Values>
|
||||||
SchemaT,
|
defaultValues: Opaque<DefaultValues, DefinedDefaultValuesTag>
|
||||||
SchemaUnknownKeys,
|
|
||||||
SchemaCatchall,
|
|
||||||
Values,
|
|
||||||
Values
|
|
||||||
>
|
|
||||||
|
|
||||||
defaultValues: DefinedDefaultValues<DefaultValues>
|
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
return makeSchemableClassFrom(Object, props)
|
return makeSchemableClassFrom(Object, props)
|
||||||
|
|||||||
@@ -45,13 +45,13 @@ const UserWithPhone = extendSchemableClass(User, {
|
|||||||
phone: z.string()
|
phone: z.string()
|
||||||
}),
|
}),
|
||||||
|
|
||||||
defaultValues: defaultValues => ({
|
defaultValues: defaultValues => defineDefaultValues({
|
||||||
...defaultValues,
|
...defaultValues,
|
||||||
phone: "+33600000000",
|
phone: "+33600000000",
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
|
||||||
UserWithPhone.schema
|
UserWithPhone.defaultValues
|
||||||
|
|
||||||
|
|
||||||
// const user2 = newSchemable(UserWithPhone, { id: 1n, name: "User" })
|
// const user2 = newSchemable(UserWithPhone, { id: 1n, name: "User" })
|
||||||
|
|||||||
Reference in New Issue
Block a user