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
TypeScript
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;