cogsbox-shape 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1442 @@
1
+ import { z } from "zod";
2
+ import { type JsonSchema7Type } from "zod-to-json-schema";
3
+ type CurrentTimestampConfig = {
4
+ default: "CURRENT_TIMESTAMP";
5
+ defaultValue: Date;
6
+ };
7
+ export declare const isFunction: (fn: unknown) => fn is Function;
8
+ export declare function currentTimeStamp(): CurrentTimestampConfig;
9
+ type SQLType = ({
10
+ type: "int";
11
+ nullable?: boolean;
12
+ default?: number;
13
+ } | {
14
+ type: "boolean";
15
+ nullable?: boolean;
16
+ default?: boolean;
17
+ } | {
18
+ type: "date" | "datetime";
19
+ nullable?: boolean;
20
+ default?: "CURRENT_TIMESTAMP";
21
+ defaultValue?: Date;
22
+ } | {
23
+ type: "date" | "datetime";
24
+ nullable?: boolean;
25
+ default?: Date;
26
+ } | {
27
+ type: "varchar" | "char" | "text" | "longtext";
28
+ nullable?: boolean;
29
+ length?: number;
30
+ default?: string;
31
+ }) & {
32
+ pk?: true;
33
+ };
34
+ type BaseConfig = {
35
+ nullable?: boolean;
36
+ pk?: true;
37
+ field?: string;
38
+ };
39
+ type IntConfig = BaseConfig & {
40
+ default?: number;
41
+ };
42
+ type BooleanConfig = BaseConfig & {
43
+ default?: boolean;
44
+ };
45
+ type DateConfig = BaseConfig & {
46
+ type?: "date" | "datetime";
47
+ default?: Date;
48
+ };
49
+ type StringConfig = BaseConfig & {
50
+ length?: number;
51
+ default?: string;
52
+ };
53
+ 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 {
54
+ default: "CURRENT_TIMESTAMP";
55
+ } ? 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 {
56
+ default: "CURRENT_TIMESTAMP";
57
+ } ? never : Date : never;
58
+ 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 {
59
+ default: "CURRENT_TIMESTAMP";
60
+ } ? 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 {
61
+ default: "CURRENT_TIMESTAMP";
62
+ } ? TDefault extends true ? never : z.ZodDate : z.ZodDate : never;
63
+ type CustomTransform<DbType, ClientType> = {
64
+ toClient: (dbValue: DbType) => ClientType;
65
+ toDb: (clientValue: ClientType) => DbType;
66
+ };
67
+ export declare function createTransforms<TTransforms extends Record<string, CustomTransform<any, any>>>(transforms: TTransforms): {
68
+ sql: <T extends SQLType>(config: T) => {
69
+ sql: T;
70
+ dbType: SQLToZodType<T, false>;
71
+ zodDbSchema: SQLToZodType<T, false>;
72
+ zodClientSchema: SQLToZodType<T, true>;
73
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
74
+ zod: z.ZodTypeAny;
75
+ serverType?: never;
76
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
77
+ sql: T;
78
+ zodDbSchema: z.ZodTypeAny;
79
+ zodClientSchema: z.ZodTypeAny;
80
+ jsonSchema: any;
81
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
82
+ transform: (transforms: {
83
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
84
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
85
+ }) => {
86
+ sql: T;
87
+ zodDbSchema: z.ZodTypeAny;
88
+ zodClientSchema: z.ZodTypeAny;
89
+ jsonSchema: any;
90
+ defaultValue: DefaultValue;
91
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
92
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
93
+ transforms: {
94
+ toClient: string;
95
+ toDb: string;
96
+ };
97
+ };
98
+ };
99
+ db: <ServerType extends z.ZodTypeAny>(dbType: ({ zod }: {
100
+ zod: SQLToZodType<T, false>;
101
+ }) => ServerType) => {
102
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
103
+ zod: z.ZodTypeAny;
104
+ serverType?: ServerType;
105
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
106
+ sql: T;
107
+ zodDbSchema: z.ZodTypeAny;
108
+ zodClientSchema: z.ZodTypeAny;
109
+ jsonSchema: any;
110
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
111
+ transform: (transforms: {
112
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
113
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
114
+ }) => {
115
+ sql: T;
116
+ zodDbSchema: z.ZodTypeAny;
117
+ zodClientSchema: z.ZodTypeAny;
118
+ jsonSchema: any;
119
+ defaultValue: DefaultValue;
120
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
121
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
122
+ transforms: {
123
+ toClient: string;
124
+ toDb: string;
125
+ };
126
+ };
127
+ };
128
+ sql: T;
129
+ dbType: ServerType;
130
+ zodDbSchema: ServerType;
131
+ zodClientSchema: ServerType;
132
+ jsonSchema: JsonSchema7Type & {
133
+ $schema?: string | undefined;
134
+ definitions?: {
135
+ [key: string]: JsonSchema7Type;
136
+ } | undefined;
137
+ };
138
+ defaultValue: z.TypeOf<ServerType>;
139
+ };
140
+ };
141
+ };
142
+ export declare const shape: {
143
+ int: (config?: IntConfig) => {
144
+ sql: {
145
+ nullable?: boolean;
146
+ pk?: true;
147
+ field?: string;
148
+ default?: number;
149
+ type: "int";
150
+ };
151
+ dbType: z.ZodNumber;
152
+ zodDbSchema: z.ZodNumber;
153
+ zodClientSchema: z.ZodNumber;
154
+ jsonSchema: JsonSchema7Type & {
155
+ $schema?: string | undefined;
156
+ definitions?: {
157
+ [key: string]: JsonSchema7Type;
158
+ } | undefined;
159
+ };
160
+ defaultValue: number;
161
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
162
+ zod: z.ZodTypeAny;
163
+ serverType?: never;
164
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
165
+ sql: {
166
+ nullable?: boolean;
167
+ pk?: true;
168
+ field?: string;
169
+ default?: number;
170
+ type: "int";
171
+ };
172
+ zodDbSchema: z.ZodTypeAny;
173
+ zodClientSchema: z.ZodTypeAny;
174
+ jsonSchema: any;
175
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
176
+ transform: (transforms: {
177
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
178
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
179
+ }) => {
180
+ sql: {
181
+ nullable?: boolean;
182
+ pk?: true;
183
+ field?: string;
184
+ default?: number;
185
+ type: "int";
186
+ };
187
+ zodDbSchema: z.ZodTypeAny;
188
+ zodClientSchema: z.ZodTypeAny;
189
+ jsonSchema: any;
190
+ defaultValue: DefaultValue;
191
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
192
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
193
+ transforms: {
194
+ toClient: string;
195
+ toDb: string;
196
+ };
197
+ };
198
+ };
199
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
200
+ zod: z.ZodNumber;
201
+ }) => ServerType) => {
202
+ sql: {
203
+ nullable?: boolean;
204
+ pk?: true;
205
+ field?: string;
206
+ default?: number;
207
+ type: "int";
208
+ };
209
+ dbType: ServerType;
210
+ zodDbSchema: ServerType;
211
+ zodClientSchema: ServerType;
212
+ jsonSchema: JsonSchema7Type & {
213
+ $schema?: string | undefined;
214
+ definitions?: {
215
+ [key: string]: JsonSchema7Type;
216
+ } | undefined;
217
+ };
218
+ defaultValue: z.TypeOf<ServerType>;
219
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
220
+ zod: z.ZodTypeAny;
221
+ serverType?: ServerType;
222
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
223
+ sql: {
224
+ nullable?: boolean;
225
+ pk?: true;
226
+ field?: string;
227
+ default?: number;
228
+ type: "int";
229
+ };
230
+ zodDbSchema: z.ZodTypeAny;
231
+ zodClientSchema: z.ZodTypeAny;
232
+ jsonSchema: any;
233
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
234
+ transform: (transforms: {
235
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
236
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
237
+ }) => {
238
+ sql: {
239
+ nullable?: boolean;
240
+ pk?: true;
241
+ field?: string;
242
+ default?: number;
243
+ type: "int";
244
+ };
245
+ zodDbSchema: z.ZodTypeAny;
246
+ zodClientSchema: z.ZodTypeAny;
247
+ jsonSchema: any;
248
+ defaultValue: DefaultValue;
249
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
250
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
251
+ transforms: {
252
+ toClient: string;
253
+ toDb: string;
254
+ };
255
+ };
256
+ };
257
+ };
258
+ };
259
+ varchar: (config?: Omit<StringConfig, "type">) => {
260
+ sql: {
261
+ nullable?: boolean;
262
+ default?: string;
263
+ pk?: true;
264
+ length?: number;
265
+ field?: string;
266
+ type: "varchar";
267
+ };
268
+ dbType: z.ZodString;
269
+ zodDbSchema: z.ZodString;
270
+ zodClientSchema: z.ZodString;
271
+ jsonSchema: JsonSchema7Type & {
272
+ $schema?: string | undefined;
273
+ definitions?: {
274
+ [key: string]: JsonSchema7Type;
275
+ } | undefined;
276
+ };
277
+ defaultValue: string;
278
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
279
+ zod: z.ZodTypeAny;
280
+ serverType?: never;
281
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
282
+ sql: {
283
+ nullable?: boolean;
284
+ default?: string;
285
+ pk?: true;
286
+ length?: number;
287
+ field?: string;
288
+ type: "varchar";
289
+ };
290
+ zodDbSchema: z.ZodTypeAny;
291
+ zodClientSchema: z.ZodTypeAny;
292
+ jsonSchema: any;
293
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
294
+ transform: (transforms: {
295
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
296
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
297
+ }) => {
298
+ sql: {
299
+ nullable?: boolean;
300
+ default?: string;
301
+ pk?: true;
302
+ length?: number;
303
+ field?: string;
304
+ type: "varchar";
305
+ };
306
+ zodDbSchema: z.ZodTypeAny;
307
+ zodClientSchema: z.ZodTypeAny;
308
+ jsonSchema: any;
309
+ defaultValue: DefaultValue;
310
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
311
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
312
+ transforms: {
313
+ toClient: string;
314
+ toDb: string;
315
+ };
316
+ };
317
+ };
318
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
319
+ zod: z.ZodString;
320
+ }) => ServerType) => {
321
+ sql: {
322
+ nullable?: boolean;
323
+ default?: string;
324
+ pk?: true;
325
+ length?: number;
326
+ field?: string;
327
+ type: "varchar";
328
+ };
329
+ dbType: ServerType;
330
+ zodDbSchema: ServerType;
331
+ zodClientSchema: ServerType;
332
+ jsonSchema: JsonSchema7Type & {
333
+ $schema?: string | undefined;
334
+ definitions?: {
335
+ [key: string]: JsonSchema7Type;
336
+ } | undefined;
337
+ };
338
+ defaultValue: z.TypeOf<ServerType>;
339
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
340
+ zod: z.ZodTypeAny;
341
+ serverType?: ServerType;
342
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
343
+ sql: {
344
+ nullable?: boolean;
345
+ default?: string;
346
+ pk?: true;
347
+ length?: number;
348
+ field?: string;
349
+ type: "varchar";
350
+ };
351
+ zodDbSchema: z.ZodTypeAny;
352
+ zodClientSchema: z.ZodTypeAny;
353
+ jsonSchema: any;
354
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
355
+ transform: (transforms: {
356
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
357
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
358
+ }) => {
359
+ sql: {
360
+ nullable?: boolean;
361
+ default?: string;
362
+ pk?: true;
363
+ length?: number;
364
+ field?: string;
365
+ type: "varchar";
366
+ };
367
+ zodDbSchema: z.ZodTypeAny;
368
+ zodClientSchema: z.ZodTypeAny;
369
+ jsonSchema: any;
370
+ defaultValue: DefaultValue;
371
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
372
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
373
+ transforms: {
374
+ toClient: string;
375
+ toDb: string;
376
+ };
377
+ };
378
+ };
379
+ };
380
+ };
381
+ char: (config?: Omit<StringConfig, "type">) => {
382
+ sql: {
383
+ nullable?: boolean;
384
+ default?: string;
385
+ pk?: true;
386
+ length?: number;
387
+ field?: string;
388
+ type: "char";
389
+ };
390
+ dbType: z.ZodString;
391
+ zodDbSchema: z.ZodString;
392
+ zodClientSchema: z.ZodString;
393
+ jsonSchema: JsonSchema7Type & {
394
+ $schema?: string | undefined;
395
+ definitions?: {
396
+ [key: string]: JsonSchema7Type;
397
+ } | undefined;
398
+ };
399
+ defaultValue: string;
400
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
401
+ zod: z.ZodTypeAny;
402
+ serverType?: never;
403
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
404
+ sql: {
405
+ nullable?: boolean;
406
+ default?: string;
407
+ pk?: true;
408
+ length?: number;
409
+ field?: string;
410
+ type: "char";
411
+ };
412
+ zodDbSchema: z.ZodTypeAny;
413
+ zodClientSchema: z.ZodTypeAny;
414
+ jsonSchema: any;
415
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
416
+ transform: (transforms: {
417
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
418
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
419
+ }) => {
420
+ sql: {
421
+ nullable?: boolean;
422
+ default?: string;
423
+ pk?: true;
424
+ length?: number;
425
+ field?: string;
426
+ type: "char";
427
+ };
428
+ zodDbSchema: z.ZodTypeAny;
429
+ zodClientSchema: z.ZodTypeAny;
430
+ jsonSchema: any;
431
+ defaultValue: DefaultValue;
432
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
433
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
434
+ transforms: {
435
+ toClient: string;
436
+ toDb: string;
437
+ };
438
+ };
439
+ };
440
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
441
+ zod: z.ZodString;
442
+ }) => ServerType) => {
443
+ sql: {
444
+ nullable?: boolean;
445
+ default?: string;
446
+ pk?: true;
447
+ length?: number;
448
+ field?: string;
449
+ type: "char";
450
+ };
451
+ dbType: ServerType;
452
+ zodDbSchema: ServerType;
453
+ zodClientSchema: ServerType;
454
+ jsonSchema: JsonSchema7Type & {
455
+ $schema?: string | undefined;
456
+ definitions?: {
457
+ [key: string]: JsonSchema7Type;
458
+ } | undefined;
459
+ };
460
+ defaultValue: z.TypeOf<ServerType>;
461
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
462
+ zod: z.ZodTypeAny;
463
+ serverType?: ServerType;
464
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
465
+ sql: {
466
+ nullable?: boolean;
467
+ default?: string;
468
+ pk?: true;
469
+ length?: number;
470
+ field?: string;
471
+ type: "char";
472
+ };
473
+ zodDbSchema: z.ZodTypeAny;
474
+ zodClientSchema: z.ZodTypeAny;
475
+ jsonSchema: any;
476
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
477
+ transform: (transforms: {
478
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
479
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
480
+ }) => {
481
+ sql: {
482
+ nullable?: boolean;
483
+ default?: string;
484
+ pk?: true;
485
+ length?: number;
486
+ field?: string;
487
+ type: "char";
488
+ };
489
+ zodDbSchema: z.ZodTypeAny;
490
+ zodClientSchema: z.ZodTypeAny;
491
+ jsonSchema: any;
492
+ defaultValue: DefaultValue;
493
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
494
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
495
+ transforms: {
496
+ toClient: string;
497
+ toDb: string;
498
+ };
499
+ };
500
+ };
501
+ };
502
+ };
503
+ text: (config?: Omit<StringConfig, "type" | "length">) => {
504
+ sql: {
505
+ nullable?: boolean;
506
+ default?: string;
507
+ pk?: true;
508
+ field?: string;
509
+ type: "text";
510
+ };
511
+ dbType: z.ZodString;
512
+ zodDbSchema: z.ZodString;
513
+ zodClientSchema: z.ZodString;
514
+ jsonSchema: JsonSchema7Type & {
515
+ $schema?: string | undefined;
516
+ definitions?: {
517
+ [key: string]: JsonSchema7Type;
518
+ } | undefined;
519
+ };
520
+ defaultValue: string;
521
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
522
+ zod: z.ZodTypeAny;
523
+ serverType?: never;
524
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
525
+ sql: {
526
+ nullable?: boolean;
527
+ default?: string;
528
+ pk?: true;
529
+ field?: string;
530
+ type: "text";
531
+ };
532
+ zodDbSchema: z.ZodTypeAny;
533
+ zodClientSchema: z.ZodTypeAny;
534
+ jsonSchema: any;
535
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
536
+ transform: (transforms: {
537
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
538
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
539
+ }) => {
540
+ sql: {
541
+ nullable?: boolean;
542
+ default?: string;
543
+ pk?: true;
544
+ field?: string;
545
+ type: "text";
546
+ };
547
+ zodDbSchema: z.ZodTypeAny;
548
+ zodClientSchema: z.ZodTypeAny;
549
+ jsonSchema: any;
550
+ defaultValue: DefaultValue;
551
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
552
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
553
+ transforms: {
554
+ toClient: string;
555
+ toDb: string;
556
+ };
557
+ };
558
+ };
559
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
560
+ zod: z.ZodString;
561
+ }) => ServerType) => {
562
+ sql: {
563
+ nullable?: boolean;
564
+ default?: string;
565
+ pk?: true;
566
+ field?: string;
567
+ type: "text";
568
+ };
569
+ dbType: ServerType;
570
+ zodDbSchema: ServerType;
571
+ zodClientSchema: ServerType;
572
+ jsonSchema: JsonSchema7Type & {
573
+ $schema?: string | undefined;
574
+ definitions?: {
575
+ [key: string]: JsonSchema7Type;
576
+ } | undefined;
577
+ };
578
+ defaultValue: z.TypeOf<ServerType>;
579
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
580
+ zod: z.ZodTypeAny;
581
+ serverType?: ServerType;
582
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
583
+ sql: {
584
+ nullable?: boolean;
585
+ default?: string;
586
+ pk?: true;
587
+ field?: string;
588
+ type: "text";
589
+ };
590
+ zodDbSchema: z.ZodTypeAny;
591
+ zodClientSchema: z.ZodTypeAny;
592
+ jsonSchema: any;
593
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
594
+ transform: (transforms: {
595
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
596
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
597
+ }) => {
598
+ sql: {
599
+ nullable?: boolean;
600
+ default?: string;
601
+ pk?: true;
602
+ field?: string;
603
+ type: "text";
604
+ };
605
+ zodDbSchema: z.ZodTypeAny;
606
+ zodClientSchema: z.ZodTypeAny;
607
+ jsonSchema: any;
608
+ defaultValue: DefaultValue;
609
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
610
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
611
+ transforms: {
612
+ toClient: string;
613
+ toDb: string;
614
+ };
615
+ };
616
+ };
617
+ };
618
+ };
619
+ longtext: (config?: Omit<StringConfig, "type" | "length">) => {
620
+ sql: {
621
+ nullable?: boolean;
622
+ default?: string;
623
+ pk?: true;
624
+ field?: string;
625
+ type: "longtext";
626
+ };
627
+ dbType: z.ZodString;
628
+ zodDbSchema: z.ZodString;
629
+ zodClientSchema: z.ZodString;
630
+ jsonSchema: JsonSchema7Type & {
631
+ $schema?: string | undefined;
632
+ definitions?: {
633
+ [key: string]: JsonSchema7Type;
634
+ } | undefined;
635
+ };
636
+ defaultValue: string;
637
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
638
+ zod: z.ZodTypeAny;
639
+ serverType?: never;
640
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
641
+ sql: {
642
+ nullable?: boolean;
643
+ default?: string;
644
+ pk?: true;
645
+ field?: string;
646
+ type: "longtext";
647
+ };
648
+ zodDbSchema: z.ZodTypeAny;
649
+ zodClientSchema: z.ZodTypeAny;
650
+ jsonSchema: any;
651
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
652
+ transform: (transforms: {
653
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
654
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
655
+ }) => {
656
+ sql: {
657
+ nullable?: boolean;
658
+ default?: string;
659
+ pk?: true;
660
+ field?: string;
661
+ type: "longtext";
662
+ };
663
+ zodDbSchema: z.ZodTypeAny;
664
+ zodClientSchema: z.ZodTypeAny;
665
+ jsonSchema: any;
666
+ defaultValue: DefaultValue;
667
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
668
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
669
+ transforms: {
670
+ toClient: string;
671
+ toDb: string;
672
+ };
673
+ };
674
+ };
675
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
676
+ zod: z.ZodString;
677
+ }) => ServerType) => {
678
+ sql: {
679
+ nullable?: boolean;
680
+ default?: string;
681
+ pk?: true;
682
+ field?: string;
683
+ type: "longtext";
684
+ };
685
+ dbType: ServerType;
686
+ zodDbSchema: ServerType;
687
+ zodClientSchema: ServerType;
688
+ jsonSchema: JsonSchema7Type & {
689
+ $schema?: string | undefined;
690
+ definitions?: {
691
+ [key: string]: JsonSchema7Type;
692
+ } | undefined;
693
+ };
694
+ defaultValue: z.TypeOf<ServerType>;
695
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
696
+ zod: z.ZodTypeAny;
697
+ serverType?: ServerType;
698
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
699
+ sql: {
700
+ nullable?: boolean;
701
+ default?: string;
702
+ pk?: true;
703
+ field?: string;
704
+ type: "longtext";
705
+ };
706
+ zodDbSchema: z.ZodTypeAny;
707
+ zodClientSchema: z.ZodTypeAny;
708
+ jsonSchema: any;
709
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
710
+ transform: (transforms: {
711
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
712
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
713
+ }) => {
714
+ sql: {
715
+ nullable?: boolean;
716
+ default?: string;
717
+ pk?: true;
718
+ field?: string;
719
+ type: "longtext";
720
+ };
721
+ zodDbSchema: z.ZodTypeAny;
722
+ zodClientSchema: z.ZodTypeAny;
723
+ jsonSchema: any;
724
+ defaultValue: DefaultValue;
725
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
726
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
727
+ transforms: {
728
+ toClient: string;
729
+ toDb: string;
730
+ };
731
+ };
732
+ };
733
+ };
734
+ };
735
+ boolean: (config?: BooleanConfig) => {
736
+ sql: {
737
+ nullable?: boolean;
738
+ pk?: true;
739
+ field?: string;
740
+ default?: boolean;
741
+ type: "boolean";
742
+ };
743
+ dbType: z.ZodBoolean;
744
+ zodDbSchema: z.ZodBoolean;
745
+ zodClientSchema: z.ZodBoolean;
746
+ jsonSchema: JsonSchema7Type & {
747
+ $schema?: string | undefined;
748
+ definitions?: {
749
+ [key: string]: JsonSchema7Type;
750
+ } | undefined;
751
+ };
752
+ defaultValue: boolean;
753
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
754
+ zod: z.ZodTypeAny;
755
+ serverType?: never;
756
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
757
+ sql: {
758
+ nullable?: boolean;
759
+ pk?: true;
760
+ field?: string;
761
+ default?: boolean;
762
+ type: "boolean";
763
+ };
764
+ zodDbSchema: z.ZodTypeAny;
765
+ zodClientSchema: z.ZodTypeAny;
766
+ jsonSchema: any;
767
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
768
+ transform: (transforms: {
769
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
770
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
771
+ }) => {
772
+ sql: {
773
+ nullable?: boolean;
774
+ pk?: true;
775
+ field?: string;
776
+ default?: boolean;
777
+ type: "boolean";
778
+ };
779
+ zodDbSchema: z.ZodTypeAny;
780
+ zodClientSchema: z.ZodTypeAny;
781
+ jsonSchema: any;
782
+ defaultValue: DefaultValue;
783
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
784
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
785
+ transforms: {
786
+ toClient: string;
787
+ toDb: string;
788
+ };
789
+ };
790
+ };
791
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
792
+ zod: z.ZodBoolean;
793
+ }) => ServerType) => {
794
+ sql: {
795
+ nullable?: boolean;
796
+ pk?: true;
797
+ field?: string;
798
+ default?: boolean;
799
+ type: "boolean";
800
+ };
801
+ dbType: ServerType;
802
+ zodDbSchema: ServerType;
803
+ zodClientSchema: ServerType;
804
+ jsonSchema: JsonSchema7Type & {
805
+ $schema?: string | undefined;
806
+ definitions?: {
807
+ [key: string]: JsonSchema7Type;
808
+ } | undefined;
809
+ };
810
+ defaultValue: z.TypeOf<ServerType>;
811
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
812
+ zod: z.ZodTypeAny;
813
+ serverType?: ServerType;
814
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
815
+ sql: {
816
+ nullable?: boolean;
817
+ pk?: true;
818
+ field?: string;
819
+ default?: boolean;
820
+ type: "boolean";
821
+ };
822
+ zodDbSchema: z.ZodTypeAny;
823
+ zodClientSchema: z.ZodTypeAny;
824
+ jsonSchema: any;
825
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
826
+ transform: (transforms: {
827
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
828
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
829
+ }) => {
830
+ sql: {
831
+ nullable?: boolean;
832
+ pk?: true;
833
+ field?: string;
834
+ default?: boolean;
835
+ type: "boolean";
836
+ };
837
+ zodDbSchema: z.ZodTypeAny;
838
+ zodClientSchema: z.ZodTypeAny;
839
+ jsonSchema: any;
840
+ defaultValue: DefaultValue;
841
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
842
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
843
+ transforms: {
844
+ toClient: string;
845
+ toDb: string;
846
+ };
847
+ };
848
+ };
849
+ };
850
+ };
851
+ date: (config?: Omit<DateConfig, "type">) => {
852
+ sql: {
853
+ nullable?: boolean;
854
+ default?: Date;
855
+ pk?: true;
856
+ field?: string;
857
+ type: "date";
858
+ };
859
+ dbType: z.ZodDate;
860
+ zodDbSchema: z.ZodDate;
861
+ zodClientSchema: z.ZodDate;
862
+ jsonSchema: JsonSchema7Type & {
863
+ $schema?: string | undefined;
864
+ definitions?: {
865
+ [key: string]: JsonSchema7Type;
866
+ } | undefined;
867
+ };
868
+ defaultValue: Date;
869
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
870
+ zod: z.ZodTypeAny;
871
+ serverType?: never;
872
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
873
+ sql: {
874
+ nullable?: boolean;
875
+ default?: Date;
876
+ pk?: true;
877
+ field?: string;
878
+ type: "date";
879
+ };
880
+ zodDbSchema: z.ZodTypeAny;
881
+ zodClientSchema: z.ZodTypeAny;
882
+ jsonSchema: any;
883
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
884
+ transform: (transforms: {
885
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
886
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
887
+ }) => {
888
+ sql: {
889
+ nullable?: boolean;
890
+ default?: Date;
891
+ pk?: true;
892
+ field?: string;
893
+ type: "date";
894
+ };
895
+ zodDbSchema: z.ZodTypeAny;
896
+ zodClientSchema: z.ZodTypeAny;
897
+ jsonSchema: any;
898
+ defaultValue: DefaultValue;
899
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
900
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
901
+ transforms: {
902
+ toClient: string;
903
+ toDb: string;
904
+ };
905
+ };
906
+ };
907
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
908
+ zod: z.ZodDate;
909
+ }) => ServerType) => {
910
+ sql: {
911
+ nullable?: boolean;
912
+ default?: Date;
913
+ pk?: true;
914
+ field?: string;
915
+ type: "date";
916
+ };
917
+ dbType: ServerType;
918
+ zodDbSchema: ServerType;
919
+ zodClientSchema: ServerType;
920
+ jsonSchema: JsonSchema7Type & {
921
+ $schema?: string | undefined;
922
+ definitions?: {
923
+ [key: string]: JsonSchema7Type;
924
+ } | undefined;
925
+ };
926
+ defaultValue: z.TypeOf<ServerType>;
927
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
928
+ zod: z.ZodTypeAny;
929
+ serverType?: ServerType;
930
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
931
+ sql: {
932
+ nullable?: boolean;
933
+ default?: Date;
934
+ pk?: true;
935
+ field?: string;
936
+ type: "date";
937
+ };
938
+ zodDbSchema: z.ZodTypeAny;
939
+ zodClientSchema: z.ZodTypeAny;
940
+ jsonSchema: any;
941
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
942
+ transform: (transforms: {
943
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
944
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
945
+ }) => {
946
+ sql: {
947
+ nullable?: boolean;
948
+ default?: Date;
949
+ pk?: true;
950
+ field?: string;
951
+ type: "date";
952
+ };
953
+ zodDbSchema: z.ZodTypeAny;
954
+ zodClientSchema: z.ZodTypeAny;
955
+ jsonSchema: any;
956
+ defaultValue: DefaultValue;
957
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
958
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
959
+ transforms: {
960
+ toClient: string;
961
+ toDb: string;
962
+ };
963
+ };
964
+ };
965
+ };
966
+ };
967
+ datetime: (config?: Omit<DateConfig, "type">) => {
968
+ sql: {
969
+ nullable?: boolean;
970
+ default?: Date;
971
+ pk?: true;
972
+ field?: string;
973
+ type: "datetime";
974
+ };
975
+ dbType: z.ZodDate;
976
+ zodDbSchema: z.ZodDate;
977
+ zodClientSchema: z.ZodDate;
978
+ jsonSchema: JsonSchema7Type & {
979
+ $schema?: string | undefined;
980
+ definitions?: {
981
+ [key: string]: JsonSchema7Type;
982
+ } | undefined;
983
+ };
984
+ defaultValue: Date;
985
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
986
+ zod: z.ZodTypeAny;
987
+ serverType?: never;
988
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
989
+ sql: {
990
+ nullable?: boolean;
991
+ default?: Date;
992
+ pk?: true;
993
+ field?: string;
994
+ type: "datetime";
995
+ };
996
+ zodDbSchema: z.ZodTypeAny;
997
+ zodClientSchema: z.ZodTypeAny;
998
+ jsonSchema: any;
999
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
1000
+ transform: (transforms: {
1001
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1002
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1003
+ }) => {
1004
+ sql: {
1005
+ nullable?: boolean;
1006
+ default?: Date;
1007
+ pk?: true;
1008
+ field?: string;
1009
+ type: "datetime";
1010
+ };
1011
+ zodDbSchema: z.ZodTypeAny;
1012
+ zodClientSchema: z.ZodTypeAny;
1013
+ jsonSchema: any;
1014
+ defaultValue: DefaultValue;
1015
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1016
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1017
+ transforms: {
1018
+ toClient: string;
1019
+ toDb: string;
1020
+ };
1021
+ };
1022
+ };
1023
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
1024
+ zod: z.ZodDate;
1025
+ }) => ServerType) => {
1026
+ sql: {
1027
+ nullable?: boolean;
1028
+ default?: Date;
1029
+ pk?: true;
1030
+ field?: string;
1031
+ type: "datetime";
1032
+ };
1033
+ dbType: ServerType;
1034
+ zodDbSchema: ServerType;
1035
+ zodClientSchema: ServerType;
1036
+ jsonSchema: JsonSchema7Type & {
1037
+ $schema?: string | undefined;
1038
+ definitions?: {
1039
+ [key: string]: JsonSchema7Type;
1040
+ } | undefined;
1041
+ };
1042
+ defaultValue: z.TypeOf<ServerType>;
1043
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
1044
+ zod: z.ZodTypeAny;
1045
+ serverType?: ServerType;
1046
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
1047
+ sql: {
1048
+ nullable?: boolean;
1049
+ default?: Date;
1050
+ pk?: true;
1051
+ field?: string;
1052
+ type: "datetime";
1053
+ };
1054
+ zodDbSchema: z.ZodTypeAny;
1055
+ zodClientSchema: z.ZodTypeAny;
1056
+ jsonSchema: any;
1057
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
1058
+ transform: (transforms: {
1059
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1060
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1061
+ }) => {
1062
+ sql: {
1063
+ nullable?: boolean;
1064
+ default?: Date;
1065
+ pk?: true;
1066
+ field?: string;
1067
+ type: "datetime";
1068
+ };
1069
+ zodDbSchema: z.ZodTypeAny;
1070
+ zodClientSchema: z.ZodTypeAny;
1071
+ jsonSchema: any;
1072
+ defaultValue: DefaultValue;
1073
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1074
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1075
+ transforms: {
1076
+ toClient: string;
1077
+ toDb: string;
1078
+ };
1079
+ };
1080
+ };
1081
+ };
1082
+ };
1083
+ sql: <T extends SQLType>(sqlConfig: T) => {
1084
+ sql: T;
1085
+ dbType: SQLToZodType<T, false>;
1086
+ zodDbSchema: SQLToZodType<T, false>;
1087
+ zodClientSchema: SQLToZodType<T, true>;
1088
+ jsonSchema: JsonSchema7Type & {
1089
+ $schema?: string | undefined;
1090
+ definitions?: {
1091
+ [key: string]: JsonSchema7Type;
1092
+ } | undefined;
1093
+ };
1094
+ defaultValue: SQLToDefaultType<T>;
1095
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
1096
+ zod: z.ZodTypeAny;
1097
+ serverType?: never;
1098
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
1099
+ sql: T;
1100
+ zodDbSchema: z.ZodTypeAny;
1101
+ zodClientSchema: z.ZodTypeAny;
1102
+ jsonSchema: any;
1103
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
1104
+ transform: (transforms: {
1105
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1106
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1107
+ }) => {
1108
+ sql: T;
1109
+ zodDbSchema: z.ZodTypeAny;
1110
+ zodClientSchema: z.ZodTypeAny;
1111
+ jsonSchema: any;
1112
+ defaultValue: DefaultValue;
1113
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1114
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1115
+ transforms: {
1116
+ toClient: string;
1117
+ toDb: string;
1118
+ };
1119
+ };
1120
+ };
1121
+ db: <ServerType extends z.ZodTypeAny>(assert: (tools: {
1122
+ zod: SQLToZodType<T, false>;
1123
+ }) => ServerType) => {
1124
+ sql: T;
1125
+ dbType: ServerType;
1126
+ zodDbSchema: ServerType;
1127
+ zodClientSchema: ServerType;
1128
+ jsonSchema: JsonSchema7Type & {
1129
+ $schema?: string | undefined;
1130
+ definitions?: {
1131
+ [key: string]: JsonSchema7Type;
1132
+ } | undefined;
1133
+ };
1134
+ defaultValue: z.infer<ServerType>;
1135
+ client: <ClientType extends z.ZodTypeAny, DefaultValue extends z.TypeOf<ClientType>>(assert?: ClientType | ((tools: {
1136
+ zod: z.ZodTypeAny;
1137
+ serverType?: ServerType;
1138
+ }) => ClientType) | undefined, defaultValue?: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never) | undefined) => {
1139
+ sql: T;
1140
+ zodDbSchema: z.ZodTypeAny;
1141
+ zodClientSchema: z.ZodTypeAny;
1142
+ jsonSchema: any;
1143
+ defaultValue: DefaultValue | (DefaultValue extends Date ? CurrentTimestampConfig : never);
1144
+ transform: (transforms: {
1145
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1146
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1147
+ }) => {
1148
+ sql: T;
1149
+ zodDbSchema: z.ZodTypeAny;
1150
+ zodClientSchema: z.ZodTypeAny;
1151
+ jsonSchema: any;
1152
+ defaultValue: DefaultValue;
1153
+ toClient: (dbValue: z.infer<z.ZodTypeAny>) => z.TypeOf<ClientType>;
1154
+ toDb: (clientValue: z.TypeOf<ClientType>) => z.infer<z.ZodTypeAny>;
1155
+ transforms: {
1156
+ toClient: string;
1157
+ toDb: string;
1158
+ };
1159
+ };
1160
+ };
1161
+ };
1162
+ };
1163
+ };
1164
+ export declare function hasMany<T extends Schema<any>>(config: {
1165
+ fromKey: string;
1166
+ toKey: () => T[keyof T];
1167
+ schema: () => T;
1168
+ defaultCount?: number;
1169
+ }): () => {
1170
+ type: "hasMany";
1171
+ fromKey: string;
1172
+ toKey: T[keyof T];
1173
+ schema: T;
1174
+ defaultCount: number | undefined;
1175
+ };
1176
+ export declare function hasOne<T extends Schema<any>>(config: {
1177
+ fromKey: string;
1178
+ toKey: () => T[keyof T];
1179
+ schema: () => T;
1180
+ }): () => {
1181
+ type: "hasOne";
1182
+ fromKey: string;
1183
+ toKey: T[keyof T];
1184
+ schema: T;
1185
+ };
1186
+ export declare function belongsTo<T extends Schema<any>>(config: {
1187
+ fromKey: string;
1188
+ toKey: () => T[keyof T];
1189
+ schema: () => T;
1190
+ }): () => {
1191
+ type: "belongsTo";
1192
+ fromKey: string;
1193
+ toKey: T[keyof T];
1194
+ schema: T;
1195
+ };
1196
+ export declare function manyToMany<T extends Schema<any>>(config: {
1197
+ fromKey: string;
1198
+ toKey: () => T[keyof T];
1199
+ schema: () => T;
1200
+ defaultCount?: number;
1201
+ }): () => {
1202
+ type: "manyToMany";
1203
+ fromKey: string;
1204
+ toKey: T[keyof T];
1205
+ schema: T;
1206
+ defaultCount: number | undefined;
1207
+ };
1208
+ type RelationType = "hasMany" | "belongsTo" | "hasOne" | "manyToMany";
1209
+ type BaseSchemaField<T extends SQLType = SQLType> = {
1210
+ type: "field";
1211
+ sql: T;
1212
+ zodDbSchema: z.ZodType<any>;
1213
+ zodClientSchema: z.ZodType<any>;
1214
+ defaultValue?: any;
1215
+ __fieldId?: string;
1216
+ toClient?: (dbValue: any) => any;
1217
+ toDb?: (clientValue: any) => any;
1218
+ };
1219
+ type ReferenceField = {
1220
+ type: "reference";
1221
+ to: () => BaseSchemaField;
1222
+ };
1223
+ type SchemaField<T extends SQLType = SQLType> = BaseSchemaField<T> | ReferenceField;
1224
+ export type Schema<T extends Record<string, SchemaField | (() => Relation<any>)>> = {
1225
+ _tableName: string;
1226
+ __schemaId?: string;
1227
+ [key: string]: T[keyof T] | string | ((id: number) => string) | undefined;
1228
+ };
1229
+ type ValidShapeField = ReturnType<typeof shape.sql>;
1230
+ export type ShapeSchema = {
1231
+ _tableName: string;
1232
+ [key: string]: string | ((id: number) => string) | ValidShapeField;
1233
+ };
1234
+ type Relation<U extends Schema<any>> = {
1235
+ type: RelationType;
1236
+ fromKey: string;
1237
+ toKey: SchemaField;
1238
+ schema: U;
1239
+ defaultCount?: number;
1240
+ };
1241
+ type Prettify<T> = {
1242
+ [K in keyof T]: T[K];
1243
+ } & {};
1244
+ type InferSchema<T> = {
1245
+ [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1246
+ zodClientSchema: infer ClientType extends z.ZodTypeAny;
1247
+ toClient?: (dbValue: any) => infer TransformedType;
1248
+ } ? T[K]["toClient"] extends Function ? z.ZodType<TransformedType> : ClientType extends z.ZodNever ? z.ZodOptional<z.ZodDate> : ClientType : T[K] extends () => {
1249
+ type: "hasMany";
1250
+ schema: infer S;
1251
+ } ? z.ZodArray<z.ZodObject<{
1252
+ [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1253
+ zodClientSchema: z.ZodTypeAny;
1254
+ toClient?: (dbValue: any) => any;
1255
+ } ? S[P]["toClient"] extends Function ? z.ZodType<ReturnType<S[P]["toClient"]>> : S[P]["zodClientSchema"] extends z.ZodNever ? z.ZodOptional<z.ZodDate> : S[P]["zodClientSchema"] : never;
1256
+ }>> : T[K] extends () => {
1257
+ type: "hasOne" | "belongsTo";
1258
+ schema: infer S;
1259
+ } ? z.ZodObject<{
1260
+ [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1261
+ zodClientSchema: z.ZodTypeAny;
1262
+ toClient?: (dbValue: any) => any;
1263
+ } ? S[P]["toClient"] extends Function ? z.ZodType<ReturnType<S[P]["toClient"]>> : S[P]["zodClientSchema"] extends z.ZodNever ? z.ZodOptional<z.ZodDate> : S[P]["zodClientSchema"] : never;
1264
+ }> : never;
1265
+ };
1266
+ export type InferDBSchema<T> = {
1267
+ [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1268
+ zodDbSchema: infer DbType extends z.ZodTypeAny;
1269
+ } ? DbType : T[K] extends {
1270
+ dbType: infer DbType extends z.ZodTypeAny;
1271
+ } ? DbType : T[K] extends () => {
1272
+ type: "hasMany";
1273
+ schema: infer S;
1274
+ } ? z.ZodArray<z.ZodObject<{
1275
+ [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1276
+ zodDbSchema: infer DbType extends z.ZodTypeAny;
1277
+ } ? DbType : never;
1278
+ }>> : T[K] extends () => {
1279
+ type: "hasOne" | "belongsTo";
1280
+ schema: infer S;
1281
+ } ? z.ZodObject<{
1282
+ [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1283
+ zodDbSchema: infer DbType extends z.ZodTypeAny;
1284
+ } ? DbType : never;
1285
+ }> : never;
1286
+ };
1287
+ type UUID = string | `${string}-${string}-${string}-${string}-${string}`;
1288
+ type InferDefaultValues<T, TDefault extends boolean = true> = {
1289
+ [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1290
+ sql: {
1291
+ pk: true;
1292
+ };
1293
+ } ? UUID : T[K] extends {
1294
+ defaultValue: infer U;
1295
+ } ? U : T[K] extends {
1296
+ zodClientSchema: z.ZodOptional<any>;
1297
+ } ? undefined : T[K] extends {
1298
+ zodClientSchema: z.ZodNullable<any>;
1299
+ } ? null : T[K] extends {
1300
+ zodClientSchema: z.ZodArray<any>;
1301
+ } ? z.infer<T[K]["zodClientSchema"]> | [] : T[K] extends {
1302
+ zodClientSchema: z.ZodObject<any>;
1303
+ } ? z.infer<T[K]["zodClientSchema"]> | {} : T[K] extends () => {
1304
+ type: "hasMany";
1305
+ schema: infer S;
1306
+ } ? Array<Prettify<InferDefaultValues<S>>> : T[K] extends () => {
1307
+ type: "hasOne" | "belongsTo";
1308
+ schema: infer S;
1309
+ } ? Prettify<InferDefaultValues<S>> : T[K] extends {
1310
+ zodClientSchema: z.ZodType<any>;
1311
+ } ? z.infer<T[K]["zodClientSchema"]> : never;
1312
+ };
1313
+ type DeepWriteable<T> = T extends Date ? T : T extends object ? {
1314
+ -readonly [K in keyof T]: DeepWriteable<T[K]>;
1315
+ } : T;
1316
+ export type SerializableField = {
1317
+ sql: SQLType;
1318
+ jsonSchema: JsonSchema7Type;
1319
+ defaultValue?: any;
1320
+ transforms?: {
1321
+ toClient: string;
1322
+ toDb: string;
1323
+ };
1324
+ };
1325
+ export type SerializableRelation = {
1326
+ type: "relation";
1327
+ relationType: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
1328
+ fromKey: string;
1329
+ toKey: SerializableField;
1330
+ defaultCount?: number;
1331
+ };
1332
+ export type SerializableSchema = {
1333
+ _tableName: string;
1334
+ __schemaId: string;
1335
+ _syncKey?: {
1336
+ toString: string;
1337
+ };
1338
+ } & {
1339
+ [key: string]: SerializableField | (SerializableRelation & {
1340
+ schema: SerializableSchema;
1341
+ });
1342
+ };
1343
+ type InferSerializedSchema<T> = {
1344
+ [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1345
+ sql: infer S;
1346
+ zodClientSchema: any;
1347
+ defaultValue?: infer D;
1348
+ } ? {
1349
+ sql: S;
1350
+ jsonSchema: JsonSchema7Type;
1351
+ defaultValue: D;
1352
+ transforms?: {
1353
+ toClient: string;
1354
+ toDb: string;
1355
+ };
1356
+ } : T[K] extends () => {
1357
+ type: "hasMany";
1358
+ schema: infer S;
1359
+ fromKey: infer FK;
1360
+ toKey: infer TK;
1361
+ } ? {
1362
+ type: "relation";
1363
+ relationType: "hasMany";
1364
+ fromKey: FK;
1365
+ toKey: TK extends {
1366
+ sql: infer TKSQL;
1367
+ zodClientSchema: any;
1368
+ defaultValue?: infer TKD;
1369
+ } ? {
1370
+ sql: TKSQL;
1371
+ jsonSchema: JsonSchema7Type;
1372
+ defaultValue: TKD;
1373
+ transforms?: {
1374
+ toClient: string;
1375
+ toDb: string;
1376
+ };
1377
+ } : never;
1378
+ schema: Prettify<InferSerializedSchema<S>> & {
1379
+ _tableName: string;
1380
+ __schemaId: string;
1381
+ };
1382
+ defaultCount?: number;
1383
+ } : T[K] extends () => {
1384
+ type: infer R;
1385
+ schema: infer S;
1386
+ fromKey: infer FK;
1387
+ toKey: infer TK;
1388
+ } ? {
1389
+ type: "relation";
1390
+ relationType: R;
1391
+ fromKey: FK;
1392
+ toKey: TK extends {
1393
+ sql: infer TKSQL;
1394
+ zodClientSchema: any;
1395
+ defaultValue?: infer TKD;
1396
+ } ? {
1397
+ sql: TKSQL;
1398
+ jsonSchema: JsonSchema7Type;
1399
+ defaultValue: TKD;
1400
+ transforms?: {
1401
+ toClient: string;
1402
+ toDb: string;
1403
+ };
1404
+ } : never;
1405
+ schema: Prettify<InferSerializedSchema<S>> & {
1406
+ _tableName: string;
1407
+ __schemaId: string;
1408
+ };
1409
+ } : never;
1410
+ };
1411
+ export declare function reference(config: {
1412
+ to: () => BaseSchemaField;
1413
+ }): SchemaField;
1414
+ export declare function createSchema<T extends Schema<any>>(schema: T): {
1415
+ dbSchema: z.ZodObject<Prettify<InferDBSchema<T>>>;
1416
+ clientSchema: z.ZodObject<Prettify<InferSchema<T> extends infer T_3 ? { [K in keyof T_3 as InferSchema<T>[K] extends never ? never : K]: InferSchema<T>[K]; } : never>>;
1417
+ defaultValues: Prettify<ConfigWithOptionalProps<T> extends infer T_4 ? { [K_1 in keyof T_4 as ConfigWithOptionalProps<T>[K_1] extends never ? never : K_1]: ConfigWithOptionalProps<T>[K_1]; } : never>;
1418
+ initialValues: () => Prettify<ConfigWithOptionalProps<T> extends infer T_5 ? { [K_1 in keyof T_5 as ConfigWithOptionalProps<T>[K_1] extends never ? never : K_1]: ConfigWithOptionalProps<T>[K_1]; } : never>;
1419
+ serialized: Prettify<InferSerializedSchema<T>> & {
1420
+ _tableName: string;
1421
+ __schemaId: string;
1422
+ };
1423
+ };
1424
+ type DefaultValue<T> = Prettify<DeepWriteable<InferDefaultValues<T>>>;
1425
+ type GetMandatoryKeys<T> = {
1426
+ [P in keyof T]: T[P] extends Exclude<T[P], undefined> ? P : never;
1427
+ }[keyof T];
1428
+ type MandatoryProps<T> = Pick<DefaultValue<T>, GetMandatoryKeys<DefaultValue<T>>>;
1429
+ type ConfigWithOptionalProps<T> = Partial<DefaultValue<T>> & MandatoryProps<T>;
1430
+ export type SchemaTypes<T extends Schema<any>> = {
1431
+ client: z.infer<typeof createSchema<T> extends (...args: any) => {
1432
+ clientSchema: infer R;
1433
+ } ? R : never>;
1434
+ db: z.infer<typeof createSchema<T> extends (...args: any) => {
1435
+ dbSchema: infer R;
1436
+ } ? R : never>;
1437
+ both: z.infer<typeof createSchema<T> extends (...args: any) => {
1438
+ clientSchema: infer C;
1439
+ dbSchema: infer D;
1440
+ } ? C | D : never>;
1441
+ };
1442
+ export {};