UNPKG

cogsbox-shape

Version:

A TypeScript library for creating type-safe database schemas with Zod validation, SQL type definitions, and automatic client/server transformations. Unifies client, server, and database types through a single schema definition, with built-in support for r

1,151 lines (1,150 loc) 67.1 kB
import { z } from "zod"; import { type JsonSchema7Type } from "zod-to-json-schema"; type CurrentTimestampConfig = { default: "CURRENT_TIMESTAMP"; defaultValue: Date; }; export declare const isFunction: (fn: unknown) => fn is Function; export declare function currentTimeStamp(): CurrentTimestampConfig; type SQLType = ({ type: "int"; nullable?: boolean; default?: number; } | { type: "boolean"; nullable?: boolean; default?: boolean; } | { type: "date" | "datetime"; nullable?: boolean; default?: "CURRENT_TIMESTAMP"; defaultValue?: Date; } | { type: "date" | "datetime"; nullable?: boolean; default?: Date; } | { type: "varchar" | "char" | "text" | "longtext"; nullable?: boolean; length?: number; default?: string; }) & { pk?: true; }; type BaseConfig = { nullable?: boolean; pk?: true; field?: string; }; type IntConfig = BaseConfig & { default?: number; }; type BooleanConfig = BaseConfig & { default?: boolean; }; type DateConfig = BaseConfig & { type?: "date" | "datetime"; default?: Date; }; type StringConfig = BaseConfig & { length?: number; default?: string; }; type SQLToDefaultType<T extends SQLType> = T["nullable"] extends true ? T["type"] extends "varchar" | "char" | "text" | "longtext" ? string | null : T["type"] extends "int" ? number | null : T["type"] extends "boolean" ? boolean | null : T["type"] extends "date" | "datetime" ? T extends { default: "CURRENT_TIMESTAMP"; } ? never : Date | null : never : T["type"] extends "varchar" | "char" | "text" | "longtext" ? string : T["type"] extends "int" ? number : T["type"] extends "boolean" ? boolean : T["type"] extends "date" | "datetime" ? T extends { default: "CURRENT_TIMESTAMP"; } ? never : Date : never; type SQLToZodType<T extends SQLType, TDefault extends boolean> = T["pk"] extends true ? TDefault extends true ? z.ZodString : z.ZodNumber : T["nullable"] extends true ? T["type"] extends "varchar" | "char" | "text" | "longtext" ? z.ZodNullable<z.ZodString> : T["type"] extends "int" ? z.ZodNullable<z.ZodNumber> : T["type"] extends "boolean" ? z.ZodNullable<z.ZodBoolean> : T["type"] extends "date" | "datetime" ? T extends { default: "CURRENT_TIMESTAMP"; } ? TDefault extends true ? never : z.ZodNullable<z.ZodDate> : z.ZodNullable<z.ZodDate> : never : T["type"] extends "varchar" | "char" | "text" | "longtext" ? z.ZodString : T["type"] extends "int" ? z.ZodNumber : T["type"] extends "boolean" ? z.ZodBoolean : T["type"] extends "date" | "datetime" ? T extends { default: "CURRENT_TIMESTAMP"; } ? TDefault extends true ? never : z.ZodDate : z.ZodDate : never; type CustomTransform<DbType, ClientType> = { toClient: (dbValue: DbType) => ClientType; toDb: (clientValue: ClientType) => DbType; }; export declare function createTransforms<TTransforms extends Record<string, CustomTransform<any, any>>>(transforms: TTransforms): { sql: <T extends SQLType>(config: T) => { sql: T; dbType: SQLToZodType<T, false>; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: SQLToZodType<T, true>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: SQLToZodType<T, true>; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: T; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never; }) => { sql: T; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(dbType: ({ zod }: { zod: SQLToZodType<T, false>; }) => ServerType) => { client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: SQLToZodType<T, true>; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: T; zodDbSchema: SQLToZodType<T, false> | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never; }) => { sql: T; zodDbSchema: SQLToZodType<T, false> | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never; transforms: { toClient: string; toDb: string; }; }; }; sql: T; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: SQLToZodType<T, true>; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; }; }; }; export declare const shape: { int: (config?: IntConfig) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; dbType: z.ZodNumber; zodDbSchema: z.ZodNumber; zodClientSchema: z.ZodNumber; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: number; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodNumber; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; zodDbSchema: z.ZodNumber; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: number) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => number; }) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; zodDbSchema: z.ZodNumber; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: number) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => number; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodNumber; }) => ServerType)) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodNumber; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodNumber; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; zodDbSchema: z.ZodNumber | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: number) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => number; }) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: number; type: "int"; }; zodDbSchema: z.ZodNumber | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: number) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => number; transforms: { toClient: string; toDb: string; }; }; }; }; }; varchar: (config?: Omit<StringConfig, "type">) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; dbType: z.ZodString; zodDbSchema: z.ZodString; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: string; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodString; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "varchar"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; }; }; char: (config?: Omit<StringConfig, "type">) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; dbType: z.ZodString; zodDbSchema: z.ZodString; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: string; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodString; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; length?: number; field?: string; type: "char"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; }; }; text: (config?: Omit<StringConfig, "type" | "length">) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; dbType: z.ZodString; zodDbSchema: z.ZodString; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: string; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodString; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "text"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; }; }; longtext: (config?: Omit<StringConfig, "type" | "length">) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; dbType: z.ZodString; zodDbSchema: z.ZodString; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: string; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; zodDbSchema: z.ZodString; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodString; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodString; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodString; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; }) => { sql: { pk?: true; nullable?: boolean; default?: string; field?: string; type: "longtext"; }; zodDbSchema: z.ZodString | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: string) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => string; transforms: { toClient: string; toDb: string; }; }; }; }; }; boolean: (config?: BooleanConfig) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; dbType: z.ZodBoolean; zodDbSchema: z.ZodBoolean; zodClientSchema: z.ZodBoolean; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: boolean; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodBoolean; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; zodDbSchema: z.ZodBoolean; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: boolean) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => boolean; }) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; zodDbSchema: z.ZodBoolean; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: boolean) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => boolean; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodBoolean; }) => ServerType)) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodBoolean; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodBoolean; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; zodDbSchema: z.ZodBoolean | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: boolean) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => boolean; }) => { sql: { nullable?: boolean; pk?: true; field?: string; default?: boolean; type: "boolean"; }; zodDbSchema: z.ZodBoolean | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: boolean) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => boolean; transforms: { toClient: string; toDb: string; }; }; }; }; }; date: (config?: Omit<DateConfig, "type">) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; dbType: z.ZodDate; zodDbSchema: z.ZodDate; zodClientSchema: z.ZodDate; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: Date; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodDate; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; zodDbSchema: z.ZodDate; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; }) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; zodDbSchema: z.ZodDate; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodDate; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodDate; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodDate; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; zodDbSchema: z.ZodDate | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; }) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "date"; }; zodDbSchema: z.ZodDate | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; transforms: { toClient: string; toDb: string; }; }; }; }; }; datetime: (config?: Omit<DateConfig, "type">) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; dbType: z.ZodDate; zodDbSchema: z.ZodDate; zodClientSchema: z.ZodDate; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: Date; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodDate; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; zodDbSchema: z.ZodDate; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; }) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; zodDbSchema: z.ZodDate; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ServerType | ((tools: { zod: z.ZodDate; }) => ServerType)) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: z.ZodDate; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.TypeOf<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: z.ZodDate; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; zodDbSchema: z.ZodDate | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; }) => { sql: { pk?: true; nullable?: boolean; default?: Date; field?: string; type: "datetime"; }; zodDbSchema: z.ZodDate | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: Date) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => Date; transforms: { toClient: string; toDb: string; }; }; }; }; }; sql: <T extends SQLType>(sqlConfig: T) => { sql: T; dbType: SQLToZodType<T, false>; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: SQLToZodType<T, true>; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: SQLToDefaultType<T>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: SQLToZodType<T, true>; serverType?: never; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: T; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never; }) => { sql: T; zodDbSchema: SQLToZodType<T, false>; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue; toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : never : never : never; transforms: { toClient: string; toDb: string; }; }; }; db: <ServerType extends z.ZodTypeAny>(assert: ((tools: { zod: SQLToZodType<T, false>; }) => ServerType) | ServerType) => { sql: T; dbType: ServerType; zodDbSchema: ServerType; zodClientSchema: SQLToZodType<T, true>; jsonSchema: JsonSchema7Type & { $schema?: string | undefined; definitions?: { [key: string]: JsonSchema7Type; } | undefined; }; defaultValue: z.infer<ServerType>; client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: { zod: SQLToZodType<T, true>; serverType?: ServerType; }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => { sql: T; zodDbSchema: SQLToZodType<T, false> | ServerType; zodClientSchema: ClientType; jsonSchema: any; defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never); transform: (transforms: { toClient: (dbValue: SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never) => z.TypeOf<ClientType>; toDb: (clientValue: z.TypeOf<ClientType>) => SQLToZodType<T, false> extends infer T_1 ? T_1 extends SQLToZodType<T, false> ? T_1 extends z.ZodTypeAny ? z.TypeOf<SQLToZodType<T, false>> : ServerType extends z.ZodTypeAny ? z.TypeOf<ServerType> : any : never : never; }) => { sql: T; zodDbSchema: SQLToZodType<T, false> | ServerType; zodClientSchema: ClientType;