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,132 lines • 228 kB
TypeScript
import { z } from "zod";
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 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;
export declare const shape: {
int: (config?: IntConfig) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: z.ZodNumber;
zodValidationSchema: z.ZodNumber;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
client: z.ZodNumber;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: z.ZodNumber;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: z.ZodNumber;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
}) => TClientNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: number;
zodClientSchema: z.ZodNumber;
zodValidationSchema: z.ZodNumber;
} & {
transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
};
};
};
initialState: {
<TDefaultNext>(defaultValue: () => TDefaultNext): {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: z.ZodNumber;
zodValidationSchema: z.ZodNumber;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
client: z.ZodNumber;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: z.ZodNumber;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: z.ZodNumber;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
}) => TClientNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: z.ZodNumber;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: z.ZodNumber;
initialValue: TDefaultNext;
zodClientSchema: z.ZodNumber;
zodValidationSchema: z.ZodNumber;
} & {
transforms: {
toClient: (dbValue: number) => number;
toDb: (clientValue: number) => number;
};
};
};
};
<TNewNext extends z.ZodTypeAny, TDefaultNext>(schema: TNewNext | ((tools: {
sql: z.ZodNumber;
}) => TNewNext), defaultValue: () => TDefaultNext): {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
zodValidationSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: TNewNext;
client: InferSmartClientType<z.ZodNumber, TNewNext>;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>) => number;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodNumber;
initialState: TNewNext;
}) => TClientNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodNumber;
initialState: TNewNext;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => number;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: number) => z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>) => number;
}) => {
config: {
sql: {
nullable?: boolean;
pk?: true;
field?: string;
default?: number;
type: "int";
};
zodSqlSchema: z.ZodNumber;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
zodValidationSchema: InferSmartClientType<z.ZodNumber, TNewNext>;
} & {
transforms: {
toClient: (dbValue: number) => z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodNumber, TNewNext>>) => number;
};
};
};
};
};
};
varchar: (config?: Omit<StringConfig, "type">) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: z.ZodString;
zodValidationSchema: z.ZodString;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
client: z.ZodString;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: z.ZodString;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: z.ZodString;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
}) => TClientNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: z.ZodString;
zodValidationSchema: z.ZodString;
} & {
transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
};
};
};
initialState: {
<TDefaultNext>(defaultValue: () => TDefaultNext): {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: z.ZodString;
zodValidationSchema: z.ZodString;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
client: z.ZodString;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: z.ZodString;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: z.ZodString;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
}) => TClientNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: z.ZodString;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: TDefaultNext;
zodClientSchema: z.ZodString;
zodValidationSchema: z.ZodString;
} & {
transforms: {
toClient: (dbValue: string) => string;
toDb: (clientValue: string) => string;
};
};
};
};
<TNewNext extends z.ZodTypeAny, TDefaultNext>(schema: TNewNext | ((tools: {
sql: z.ZodString;
}) => TNewNext), defaultValue: () => TDefaultNext): {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodString, TNewNext>;
zodValidationSchema: InferSmartClientType<z.ZodString, TNewNext>;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: TNewNext;
client: InferSmartClientType<z.ZodString, TNewNext>;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodString, TNewNext>;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodString, TNewNext>;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>) => string;
};
};
};
};
client: <TClientNext extends z.ZodTypeAny>(schema: TClientNext | ((tools: {
sql: z.ZodString;
initialState: TNewNext;
}) => TClientNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((tools: {
sql: z.ZodString;
initialState: TNewNext;
client: TClientNext;
}) => TValidationNext)) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TValidationNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: TClientNext;
zodValidationSchema: TClientNext;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<TClientNext>;
toDb: (clientValue: z.TypeOf<TClientNext>) => string;
};
};
};
};
transform: (transforms: {
toClient: (dbValue: string) => z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>) => string;
}) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "varchar";
};
zodSqlSchema: z.ZodString;
zodNewSchema: TNewNext;
initialValue: z.TypeOf<TNewNext>;
zodClientSchema: InferSmartClientType<z.ZodString, TNewNext>;
zodValidationSchema: InferSmartClientType<z.ZodString, TNewNext>;
} & {
transforms: {
toClient: (dbValue: string) => z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>;
toDb: (clientValue: z.TypeOf<InferSmartClientType<z.ZodString, TNewNext>>) => string;
};
};
};
};
};
};
char: (config?: Omit<StringConfig, "type">) => {
config: {
sql: {
pk?: true;
nullable?: boolean;
default?: string;
length?: number;
field?: string;
type: "char";
};
zodSqlSchema: z.ZodString;
zodNewSchema: z.ZodString;
initialValue: string;
zodClientSchema: z.ZodString;
zodValidationSchema: z.ZodString;
};
validation: <TValidationNext extends z.ZodTypeAny>(schema: TValidationNext | ((