cogsbox-shape 0.5.102 → 0.5.103

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.
package/dist/schema.d.ts CHANGED
@@ -110,25 +110,20 @@ export type Builder<TStage extends Stage, T extends SQLType | RelationConfig<any
110
110
  zodValidationSchema: TValidation;
111
111
  };
112
112
  } & Pick<IBuilderMethods<T, TSql, TNew, TInitialValue, TClient, TValidation>, StageMethods[TStage]>;
113
+ export type Reference<TGetter extends () => any> = {
114
+ __type: "reference";
115
+ getter: TGetter;
116
+ };
113
117
  interface ShapeAPI {
114
118
  sql: <T extends SQLType>(sqlConfig: T) => Builder<"sql", T, SQLToZodType<T, false>, SQLToZodType<T, false>, z.infer<SQLToZodType<T, false>>, SQLToZodType<T, false>, SQLToZodType<T, false>>;
115
- hasMany: <T extends Schema<any>, CreateSchema extends ReturnType<typeof createSchema<T>>>(config: {
116
- fromKey: string;
117
- toKey: () => T[keyof T];
118
- schema: () => T;
119
+ reference: <TGetter extends () => any>(getter: TGetter) => Reference<TGetter>;
120
+ hasMany: (config?: {
119
121
  defaultCount?: number;
120
- }) => Builder<"relation", RelationConfig<T>, z.ZodArray<CreateSchema["sqlSchema"]>, z.ZodArray<CreateSchema["clientSchema"]>, any[], z.ZodArray<CreateSchema["clientSchema"]>, z.ZodArray<CreateSchema["validationSchema"]>>;
121
- hasOne: <T extends Schema<any>, CreateSchema extends ReturnType<typeof createSchema<T>>>(config: {
122
- fromKey: string;
123
- toKey: () => T[keyof T];
124
- schema: () => T;
125
- }) => Builder<"relation", RelationConfig<T>, z.ZodArray<CreateSchema["sqlSchema"]>, z.ZodArray<CreateSchema["clientSchema"]>, any[], z.ZodArray<CreateSchema["clientSchema"]>, z.ZodArray<CreateSchema["validationSchema"]>>;
126
- manyToMany: <T extends Schema<any>>(config: {
127
- fromKey: string;
128
- toKey: () => any;
129
- schema: () => T;
122
+ }) => PlaceholderRelation<"hasMany">;
123
+ hasOne: () => PlaceholderRelation<"hasOne">;
124
+ manyToMany: (config?: {
130
125
  defaultCount?: number;
131
- }) => Builder<"relation", RelationConfig<T>, z.ZodOptional<z.ZodArray<z.ZodAny>>, z.ZodOptional<z.ZodArray<z.ZodAny>>, any[], z.ZodOptional<z.ZodArray<z.ZodAny>>, z.ZodOptional<z.ZodArray<z.ZodAny>>>;
126
+ }) => PlaceholderRelation<"manyToMany">;
132
127
  }
133
128
  export declare const s: ShapeAPI;
134
129
  export type EnrichedField<K extends string, V, TSchema extends ShapeSchema> = V & {
@@ -139,12 +134,10 @@ export type EnrichedField<K extends string, V, TSchema extends ShapeSchema> = V
139
134
  __parentTableType: TSchema;
140
135
  };
141
136
  export type EnrichFields<T extends ShapeSchema> = {
142
- [K in keyof T]: K extends string ? EnrichedField<K, T[K], T> : T[K];
137
+ [K in keyof T]: K extends "_tableName" ? T[K] : K extends string ? EnrichedField<K, T[K], T> : T[K];
143
138
  };
144
139
  export declare const SchemaWrapperBrand: unique symbol;
145
- export declare function schema<T extends ShapeSchema>(schema: T): Prettify<EnrichFields<T> & {
146
- _tableName: T["_tableName"];
147
- }>;
140
+ export declare function schema<T extends string, U extends ShapeSchema<T>>(schema: U): Prettify<EnrichFields<U>>;
148
141
  export type RelationType = "hasMany" | "hasOne" | "manyToMany";
149
142
  type BaseSchemaField<T extends SQLType = SQLType> = {
150
143
  type: "field";
@@ -163,8 +156,8 @@ export type Schema<T extends Record<string, SchemaField | (() => Relation<any>)>
163
156
  [key: string]: T[keyof T] | string | ((id: number) => string) | true | undefined;
164
157
  };
165
158
  type ValidShapeField = ReturnType<typeof s.sql>;
166
- export type ShapeSchema = {
167
- _tableName: string;
159
+ export type ShapeSchema<T extends string = string> = {
160
+ _tableName: T;
168
161
  [SchemaWrapperBrand]?: true;
169
162
  [key: string]: string | ((id: number) => string) | ValidShapeField | true | undefined;
170
163
  };
@@ -176,44 +169,6 @@ type Relation<U extends Schema<any>> = {
176
169
  defaultCount?: number;
177
170
  };
178
171
  export declare function createMixedValidationSchema<T extends Schema<any>>(schema: T, clientSchema?: z.ZodObject<any>, dbSchema?: z.ZodObject<any>): z.ZodObject<any>;
179
- type InferSchemaByKey<T, Key extends "zodSqlSchema" | "zodClientSchema" | "zodValidationSchema", Depth extends any[] = []> = Depth["length"] extends 10 ? any : {
180
- [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand ? never : K]: T[K] extends {
181
- config: {
182
- sql: {
183
- type: "hasMany" | "manyToMany";
184
- schema: () => infer S;
185
- };
186
- };
187
- } ? z.ZodArray<S extends {
188
- _tableName: string;
189
- } ? z.ZodObject<Omit<InferSchemaByKey<S, Key, [...Depth, 1]>, typeof SchemaWrapperBrand>> : z.ZodObject<any>> : T[K] extends {
190
- config: {
191
- sql: {
192
- type: "hasOne" | "belongsTo";
193
- schema: () => infer S;
194
- };
195
- };
196
- } ? S extends {
197
- _tableName: string;
198
- } ? z.ZodObject<Omit<InferSchemaByKey<S, Key, [...Depth, 1]>, typeof SchemaWrapperBrand>> : z.ZodObject<any> : T[K] extends {
199
- type: "reference";
200
- to: () => infer RefField;
201
- } ? RefField extends {
202
- config: {
203
- [P in Key]: infer ZodSchema;
204
- };
205
- } ? ZodSchema : never : T[K] extends {
206
- config: infer Config;
207
- } ? Key extends "zodSqlSchema" ? Config extends {
208
- sql: infer SqlConfig;
209
- zodSqlSchema: infer ZodSchema extends z.ZodTypeAny;
210
- } ? ZodSchema : never : Config extends {
211
- [P in Key]: infer ZodSchema extends z.ZodTypeAny;
212
- } ? ZodSchema : never : never;
213
- };
214
- type InferSqlSchema<T> = InferSchemaByKey<T, "zodSqlSchema">;
215
- type InferClientSchema<T> = InferSchemaByKey<T, "zodClientSchema">;
216
- type InferValidationSchema<T> = InferSchemaByKey<T, "zodValidationSchema">;
217
172
  export declare function createSchema<T extends {
218
173
  _tableName: string;
219
174
  [SchemaWrapperBrand]?: true;
@@ -225,53 +180,586 @@ export declare function createSchema<T extends {
225
180
  toClient: (dbObject: z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>>;
226
181
  toDb: (clientObject: z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>;
227
182
  };
228
- type RelationBuilders<TSchema> = {
229
- reference: <TField extends object>(fieldGetter: () => TField) => {
230
- type: "reference";
231
- to: () => TField;
183
+ export type PlaceholderReference = {
184
+ __type: "placeholder-reference";
185
+ };
186
+ export type PlaceholderRelation<T extends RelationType> = {
187
+ __type: "placeholder-relation";
188
+ relationType: T;
189
+ defaultCount?: number;
190
+ };
191
+ type SchemaWithPlaceholders = {
192
+ _tableName: string;
193
+ [key: string]: any | PlaceholderReference | PlaceholderRelation<any>;
194
+ };
195
+ type ResolutionConfig<S extends Record<string, SchemaWithPlaceholders>> = {
196
+ [TableName in keyof S]: {
197
+ [FieldName in keyof S[TableName] as S[TableName][FieldName] extends PlaceholderReference | PlaceholderRelation<any> ? FieldName : never]: S[TableName][FieldName] extends PlaceholderReference ? any : S[TableName][FieldName] extends PlaceholderRelation<any> ? {
198
+ fromKey: string;
199
+ toKey: any;
200
+ defaultCount?: number;
201
+ } : never;
202
+ };
203
+ };
204
+ type ResolveField<Field, Resolution, AllSchemas extends Record<string, any>> = Field extends PlaceholderReference ? Resolution : Field extends PlaceholderRelation<infer RelType> ? Resolution extends {
205
+ toKey: infer ToKey;
206
+ } ? ToKey extends {
207
+ __parentTableType: infer TargetSchema extends Schema<any>;
208
+ } ? Builder<"relation", RelType extends "hasMany" ? BaseRelationConfig<TargetSchema> & {
209
+ type: "hasMany";
210
+ } : RelType extends "hasOne" ? BaseRelationConfig<TargetSchema> & {
211
+ type: "hasOne";
212
+ } : RelType extends "belongsTo" ? BaseRelationConfig<TargetSchema> & {
213
+ type: "belongsTo";
214
+ } : RelType extends "manyToMany" ? BaseRelationConfig<TargetSchema> & {
215
+ type: "manyToMany";
216
+ } : never, RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<any>> : z.ZodObject<any>, RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<any>> : z.ZodObject<any>, RelType extends "hasMany" | "manyToMany" ? any[] : any, RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<any>> : z.ZodObject<any>, RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<any>> : z.ZodObject<any>> : never : never : Field;
217
+ type ResolveSchema<Schema extends SchemaWithPlaceholders, Resolutions extends Record<string, any>, AllSchemas extends Record<string, any>> = {
218
+ [K in keyof Schema]: K extends keyof Resolutions ? ResolveField<Schema[K], Resolutions[K], AllSchemas> : Schema[K];
219
+ };
220
+ type ResolvedRegistryWithSchemas<S extends Record<string, SchemaWithPlaceholders>, R extends ResolutionConfig<S>> = {
221
+ [K in keyof S]: {
222
+ rawSchema: ResolveSchema<S[K], K extends keyof R ? R[K] : {}, S>;
223
+ zodSchemas: {
224
+ sqlSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? R[K] : {}, S>, "zodSqlSchema">>>;
225
+ clientSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? R[K] : {}, S>, "zodClientSchema">>>;
226
+ validationSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? R[K] : {}, S>, "zodValidationSchema">>>;
227
+ defaultValues: Prettify<DeriveDefaults<ResolveSchema<S[K], K extends keyof R ? R[K] : {}, S>>>;
228
+ toClient: (dbObject: any) => any;
229
+ toDb: (clientObject: any) => any;
230
+ };
232
231
  };
233
- hasMany: <T extends Schema<any>, K extends keyof T & string, TField extends EnrichedField<K, T[K], T>>(config: {
234
- fromKey: keyof TSchema & string;
235
- toKey: () => TField;
236
- defaultCount?: number;
237
- }) => Builder<"relation", BaseRelationConfig<TField["__parentTableType"]> & {
238
- type: "hasMany";
239
- }, z.ZodArray<z.ZodObject<InferSqlSchema<TField["__parentTableType"]>>>, z.ZodArray<z.ZodObject<InferClientSchema<TField["__parentTableType"]>>>, any[], z.ZodArray<z.ZodObject<InferClientSchema<TField["__parentTableType"]>>>, z.ZodArray<z.ZodObject<InferValidationSchema<TField["__parentTableType"]>>>>;
240
- hasOne: <T extends Schema<any>, K extends keyof T & string, TField extends EnrichedField<K, T[K], T>>(config: {
241
- fromKey: keyof TSchema & string;
242
- toKey: () => TField;
243
- }) => Builder<"relation", BaseRelationConfig<TField["__parentTableType"]> & {
244
- type: "hasOne";
245
- }, z.ZodArray<z.ZodObject<InferSqlSchema<TField["__parentTableType"]>>>, z.ZodArray<z.ZodObject<InferClientSchema<TField["__parentTableType"]>>>, any, z.ZodArray<z.ZodObject<InferClientSchema<TField["__parentTableType"]>>>, z.ZodArray<z.ZodObject<InferValidationSchema<TField["__parentTableType"]>>>>;
246
- manyToMany: <T extends Schema<any>>(config: {
247
- fromKey: keyof TSchema & string;
248
- toKey: () => T[keyof T];
249
- schema: () => T;
250
- defaultCount?: number;
251
- }) => Builder<"relation", BaseRelationConfig<T> & {
252
- type: "manyToMany";
253
- }, z.ZodOptional<z.ZodArray<z.ZodAny>>, z.ZodOptional<z.ZodArray<z.ZodAny>>, any[], z.ZodOptional<z.ZodArray<z.ZodAny>>, z.ZodOptional<z.ZodArray<z.ZodAny>>>;
254
232
  };
255
- export declare function schemaRelations<TSchema extends Schema<any>, RefObject extends Record<string, any>>(baseSchema: TSchema, referencesBuilder: (rel: RelationBuilders<TSchema>) => RefObject): {
256
- [K in keyof RefObject]: RefObject[K] & {
257
- __meta: {
258
- _key: K;
259
- _fieldType: RefObject[K];
233
+ export declare function createSchemaBox<S extends Record<string, SchemaWithPlaceholders>, R extends ResolutionConfig<S>>(schemas: S, resolver: (proxy: SchemaProxy<S>) => R): { [key in keyof ResolvedRegistryWithSchemas<S, R>]: {
234
+ rawSchema: ResolvedRegistryWithSchemas<S, R>[key]["rawSchema"];
235
+ zodSchemas: ResolvedRegistryWithSchemas<S, R>[key]["zodSchemas"];
236
+ test: S;
237
+ nav: key & string extends infer T ? T extends key & string ? T extends keyof S ? { [K in keyof ResolvedRegistryWithSchemas<S, R>[T]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T]["rawSchema"][K] extends infer T_1 ? T_1 extends ResolvedRegistryWithSchemas<S, R>[T]["rawSchema"][K] ? T_1 extends {
238
+ config: {
239
+ sql: {
240
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
241
+ schema: () => any;
242
+ };
243
+ };
244
+ } ? true : false : never : never) extends true ? K : never]: (ResolvedRegistryWithSchemas<S, R>[T]["rawSchema"][K] extends infer T_2 ? T_2 extends ResolvedRegistryWithSchemas<S, R>[T]["rawSchema"][K] ? T_2 extends {
245
+ config: {
246
+ sql: {
247
+ schema: () => infer TargetSchema;
248
+ };
249
+ };
250
+ } ? TargetSchema extends {
251
+ _tableName: infer TableName;
252
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_3 ? T_3 extends TargetTable & string ? T_3 extends keyof S ? { [K_1 in keyof ResolvedRegistryWithSchemas<S, R>[T_3]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_3]["rawSchema"][K_1] extends infer T_4 ? T_4 extends ResolvedRegistryWithSchemas<S, R>[T_3]["rawSchema"][K_1] ? T_4 extends {
253
+ config: {
254
+ sql: {
255
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
256
+ schema: () => any;
257
+ };
258
+ };
259
+ } ? true : false : never : never) extends true ? K_1 : never]: (ResolvedRegistryWithSchemas<S, R>[T_3]["rawSchema"][K_1] extends infer T_5 ? T_5 extends ResolvedRegistryWithSchemas<S, R>[T_3]["rawSchema"][K_1] ? T_5 extends {
260
+ config: {
261
+ sql: {
262
+ schema: () => infer TargetSchema;
263
+ };
264
+ };
265
+ } ? TargetSchema extends {
266
+ _tableName: infer TableName;
267
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_6 ? T_6 extends TargetTable & string ? T_6 extends keyof S ? { [K_2 in keyof ResolvedRegistryWithSchemas<S, R>[T_6]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_6]["rawSchema"][K_2] extends infer T_7 ? T_7 extends ResolvedRegistryWithSchemas<S, R>[T_6]["rawSchema"][K_2] ? T_7 extends {
268
+ config: {
269
+ sql: {
270
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
271
+ schema: () => any;
272
+ };
273
+ };
274
+ } ? true : false : never : never) extends true ? K_2 : never]: (ResolvedRegistryWithSchemas<S, R>[T_6]["rawSchema"][K_2] extends infer T_8 ? T_8 extends ResolvedRegistryWithSchemas<S, R>[T_6]["rawSchema"][K_2] ? T_8 extends {
275
+ config: {
276
+ sql: {
277
+ schema: () => infer TargetSchema;
278
+ };
279
+ };
280
+ } ? TargetSchema extends {
281
+ _tableName: infer TableName;
282
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_9 ? T_9 extends TargetTable & string ? T_9 extends keyof S ? { [K_3 in keyof ResolvedRegistryWithSchemas<S, R>[T_9]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_9]["rawSchema"][K_3] extends infer T_10 ? T_10 extends ResolvedRegistryWithSchemas<S, R>[T_9]["rawSchema"][K_3] ? T_10 extends {
283
+ config: {
284
+ sql: {
285
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
286
+ schema: () => any;
287
+ };
288
+ };
289
+ } ? true : false : never : never) extends true ? K_3 : never]: (ResolvedRegistryWithSchemas<S, R>[T_9]["rawSchema"][K_3] extends infer T_11 ? T_11 extends ResolvedRegistryWithSchemas<S, R>[T_9]["rawSchema"][K_3] ? T_11 extends {
290
+ config: {
291
+ sql: {
292
+ schema: () => infer TargetSchema;
293
+ };
294
+ };
295
+ } ? TargetSchema extends {
296
+ _tableName: infer TableName;
297
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_12 ? T_12 extends TargetTable & string ? T_12 extends keyof S ? { [K_4 in keyof ResolvedRegistryWithSchemas<S, R>[T_12]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_12]["rawSchema"][K_4] extends infer T_13 ? T_13 extends ResolvedRegistryWithSchemas<S, R>[T_12]["rawSchema"][K_4] ? T_13 extends {
298
+ config: {
299
+ sql: {
300
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
301
+ schema: () => any;
302
+ };
303
+ };
304
+ } ? true : false : never : never) extends true ? K_4 : never]: (ResolvedRegistryWithSchemas<S, R>[T_12]["rawSchema"][K_4] extends infer T_14 ? T_14 extends ResolvedRegistryWithSchemas<S, R>[T_12]["rawSchema"][K_4] ? T_14 extends {
305
+ config: {
306
+ sql: {
307
+ schema: () => infer TargetSchema;
308
+ };
309
+ };
310
+ } ? TargetSchema extends {
311
+ _tableName: infer TableName;
312
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_15 ? T_15 extends TargetTable & string ? T_15 extends keyof S ? { [K_5 in keyof ResolvedRegistryWithSchemas<S, R>[T_15]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_15]["rawSchema"][K_5] extends infer T_16 ? T_16 extends ResolvedRegistryWithSchemas<S, R>[T_15]["rawSchema"][K_5] ? T_16 extends {
313
+ config: {
314
+ sql: {
315
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
316
+ schema: () => any;
317
+ };
318
+ };
319
+ } ? true : false : never : never) extends true ? K_5 : never]: (ResolvedRegistryWithSchemas<S, R>[T_15]["rawSchema"][K_5] extends infer T_17 ? T_17 extends ResolvedRegistryWithSchemas<S, R>[T_15]["rawSchema"][K_5] ? T_17 extends {
320
+ config: {
321
+ sql: {
322
+ schema: () => infer TargetSchema;
323
+ };
324
+ };
325
+ } ? TargetSchema extends {
326
+ _tableName: infer TableName;
327
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_18 ? T_18 extends TargetTable & string ? T_18 extends keyof S ? { [K_6 in keyof ResolvedRegistryWithSchemas<S, R>[T_18]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_18]["rawSchema"][K_6] extends infer T_19 ? T_19 extends ResolvedRegistryWithSchemas<S, R>[T_18]["rawSchema"][K_6] ? T_19 extends {
328
+ config: {
329
+ sql: {
330
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
331
+ schema: () => any;
332
+ };
333
+ };
334
+ } ? true : false : never : never) extends true ? K_6 : never]: (ResolvedRegistryWithSchemas<S, R>[T_18]["rawSchema"][K_6] extends infer T_20 ? T_20 extends ResolvedRegistryWithSchemas<S, R>[T_18]["rawSchema"][K_6] ? T_20 extends {
335
+ config: {
336
+ sql: {
337
+ schema: () => infer TargetSchema;
338
+ };
339
+ };
340
+ } ? TargetSchema extends {
341
+ _tableName: infer TableName;
342
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_21 ? T_21 extends TargetTable & string ? T_21 extends keyof S ? { [K_7 in keyof ResolvedRegistryWithSchemas<S, R>[T_21]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_21]["rawSchema"][K_7] extends infer T_22 ? T_22 extends ResolvedRegistryWithSchemas<S, R>[T_21]["rawSchema"][K_7] ? T_22 extends {
343
+ config: {
344
+ sql: {
345
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
346
+ schema: () => any;
347
+ };
348
+ };
349
+ } ? true : false : never : never) extends true ? K_7 : never]: (ResolvedRegistryWithSchemas<S, R>[T_21]["rawSchema"][K_7] extends infer T_23 ? T_23 extends ResolvedRegistryWithSchemas<S, R>[T_21]["rawSchema"][K_7] ? T_23 extends {
350
+ config: {
351
+ sql: {
352
+ schema: () => infer TargetSchema;
353
+ };
354
+ };
355
+ } ? TargetSchema extends {
356
+ _tableName: infer TableName;
357
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_24 ? T_24 extends TargetTable & string ? T_24 extends keyof S ? { [K_8 in keyof ResolvedRegistryWithSchemas<S, R>[T_24]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_24]["rawSchema"][K_8] extends infer T_25 ? T_25 extends ResolvedRegistryWithSchemas<S, R>[T_24]["rawSchema"][K_8] ? T_25 extends {
358
+ config: {
359
+ sql: {
360
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
361
+ schema: () => any;
362
+ };
363
+ };
364
+ } ? true : false : never : never) extends true ? K_8 : never]: (ResolvedRegistryWithSchemas<S, R>[T_24]["rawSchema"][K_8] extends infer T_26 ? T_26 extends ResolvedRegistryWithSchemas<S, R>[T_24]["rawSchema"][K_8] ? T_26 extends {
365
+ config: {
366
+ sql: {
367
+ schema: () => infer TargetSchema;
368
+ };
369
+ };
370
+ } ? TargetSchema extends {
371
+ _tableName: infer TableName;
372
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_27 ? T_27 extends TargetTable & string ? T_27 extends keyof S ? { [K_9 in keyof ResolvedRegistryWithSchemas<S, R>[T_27]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_27]["rawSchema"][K_9] extends infer T_28 ? T_28 extends ResolvedRegistryWithSchemas<S, R>[T_27]["rawSchema"][K_9] ? T_28 extends {
373
+ config: {
374
+ sql: {
375
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
376
+ schema: () => any;
377
+ };
378
+ };
379
+ } ? true : false : never : never) extends true ? K_9 : never]: (ResolvedRegistryWithSchemas<S, R>[T_27]["rawSchema"][K_9] extends infer T_29 ? T_29 extends ResolvedRegistryWithSchemas<S, R>[T_27]["rawSchema"][K_9] ? T_29 extends {
380
+ config: {
381
+ sql: {
382
+ schema: () => infer TargetSchema;
383
+ };
384
+ };
385
+ } ? TargetSchema extends {
386
+ _tableName: infer TableName;
387
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_30 ? T_30 extends TargetTable & string ? T_30 extends keyof S ? { [K_10 in keyof ResolvedRegistryWithSchemas<S, R>[T_30]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_30]["rawSchema"][K_10] extends infer T_31 ? T_31 extends ResolvedRegistryWithSchemas<S, R>[T_30]["rawSchema"][K_10] ? T_31 extends {
388
+ config: {
389
+ sql: {
390
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
391
+ schema: () => any;
392
+ };
393
+ };
394
+ } ? true : false : never : never) extends true ? K_10 : never]: (ResolvedRegistryWithSchemas<S, R>[T_30]["rawSchema"][K_10] extends infer T_32 ? T_32 extends ResolvedRegistryWithSchemas<S, R>[T_30]["rawSchema"][K_10] ? T_32 extends {
395
+ config: {
396
+ sql: {
397
+ schema: () => infer TargetSchema;
398
+ };
399
+ };
400
+ } ? TargetSchema extends {
401
+ _tableName: infer TableName;
402
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? /*elided*/ any : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never;
403
+ RelationSelection: (key & string extends infer T_66 ? T_66 extends key & string ? T_66 extends keyof S ? { [K_22 in keyof ResolvedRegistryWithSchemas<S, R>[T_66]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_66]["rawSchema"][K_22] extends infer T_67 ? T_67 extends ResolvedRegistryWithSchemas<S, R>[T_66]["rawSchema"][K_22] ? T_67 extends {
404
+ config: {
405
+ sql: {
406
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
407
+ schema: () => any;
408
+ };
409
+ };
410
+ } ? true : false : never : never) extends true ? K_22 : never]: (ResolvedRegistryWithSchemas<S, R>[T_66]["rawSchema"][K_22] extends infer T_68 ? T_68 extends ResolvedRegistryWithSchemas<S, R>[T_66]["rawSchema"][K_22] ? T_68 extends {
411
+ config: {
412
+ sql: {
413
+ schema: () => infer TargetSchema;
414
+ };
415
+ };
416
+ } ? TargetSchema extends {
417
+ _tableName: infer TableName;
418
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_69 ? T_69 extends TargetTable & string ? T_69 extends keyof S ? { [K_23 in keyof ResolvedRegistryWithSchemas<S, R>[T_69]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_69]["rawSchema"][K_23] extends infer T_70 ? T_70 extends ResolvedRegistryWithSchemas<S, R>[T_69]["rawSchema"][K_23] ? T_70 extends {
419
+ config: {
420
+ sql: {
421
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
422
+ schema: () => any;
423
+ };
424
+ };
425
+ } ? true : false : never : never) extends true ? K_23 : never]: (ResolvedRegistryWithSchemas<S, R>[T_69]["rawSchema"][K_23] extends infer T_71 ? T_71 extends ResolvedRegistryWithSchemas<S, R>[T_69]["rawSchema"][K_23] ? T_71 extends {
426
+ config: {
427
+ sql: {
428
+ schema: () => infer TargetSchema;
429
+ };
430
+ };
431
+ } ? TargetSchema extends {
432
+ _tableName: infer TableName;
433
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_72 ? T_72 extends TargetTable & string ? T_72 extends keyof S ? { [K_24 in keyof ResolvedRegistryWithSchemas<S, R>[T_72]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_72]["rawSchema"][K_24] extends infer T_73 ? T_73 extends ResolvedRegistryWithSchemas<S, R>[T_72]["rawSchema"][K_24] ? T_73 extends {
434
+ config: {
435
+ sql: {
436
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
437
+ schema: () => any;
438
+ };
439
+ };
440
+ } ? true : false : never : never) extends true ? K_24 : never]: (ResolvedRegistryWithSchemas<S, R>[T_72]["rawSchema"][K_24] extends infer T_74 ? T_74 extends ResolvedRegistryWithSchemas<S, R>[T_72]["rawSchema"][K_24] ? T_74 extends {
441
+ config: {
442
+ sql: {
443
+ schema: () => infer TargetSchema;
444
+ };
445
+ };
446
+ } ? TargetSchema extends {
447
+ _tableName: infer TableName;
448
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_75 ? T_75 extends TargetTable & string ? T_75 extends keyof S ? { [K_25 in keyof ResolvedRegistryWithSchemas<S, R>[T_75]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_75]["rawSchema"][K_25] extends infer T_76 ? T_76 extends ResolvedRegistryWithSchemas<S, R>[T_75]["rawSchema"][K_25] ? T_76 extends {
449
+ config: {
450
+ sql: {
451
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
452
+ schema: () => any;
453
+ };
454
+ };
455
+ } ? true : false : never : never) extends true ? K_25 : never]: (ResolvedRegistryWithSchemas<S, R>[T_75]["rawSchema"][K_25] extends infer T_77 ? T_77 extends ResolvedRegistryWithSchemas<S, R>[T_75]["rawSchema"][K_25] ? T_77 extends {
456
+ config: {
457
+ sql: {
458
+ schema: () => infer TargetSchema;
459
+ };
460
+ };
461
+ } ? TargetSchema extends {
462
+ _tableName: infer TableName;
463
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_78 ? T_78 extends TargetTable & string ? T_78 extends keyof S ? { [K_26 in keyof ResolvedRegistryWithSchemas<S, R>[T_78]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_78]["rawSchema"][K_26] extends infer T_79 ? T_79 extends ResolvedRegistryWithSchemas<S, R>[T_78]["rawSchema"][K_26] ? T_79 extends {
464
+ config: {
465
+ sql: {
466
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
467
+ schema: () => any;
468
+ };
469
+ };
470
+ } ? true : false : never : never) extends true ? K_26 : never]: (ResolvedRegistryWithSchemas<S, R>[T_78]["rawSchema"][K_26] extends infer T_80 ? T_80 extends ResolvedRegistryWithSchemas<S, R>[T_78]["rawSchema"][K_26] ? T_80 extends {
471
+ config: {
472
+ sql: {
473
+ schema: () => infer TargetSchema;
474
+ };
475
+ };
476
+ } ? TargetSchema extends {
477
+ _tableName: infer TableName;
478
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_81 ? T_81 extends TargetTable & string ? T_81 extends keyof S ? { [K_27 in keyof ResolvedRegistryWithSchemas<S, R>[T_81]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_81]["rawSchema"][K_27] extends infer T_82 ? T_82 extends ResolvedRegistryWithSchemas<S, R>[T_81]["rawSchema"][K_27] ? T_82 extends {
479
+ config: {
480
+ sql: {
481
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
482
+ schema: () => any;
483
+ };
484
+ };
485
+ } ? true : false : never : never) extends true ? K_27 : never]: (ResolvedRegistryWithSchemas<S, R>[T_81]["rawSchema"][K_27] extends infer T_83 ? T_83 extends ResolvedRegistryWithSchemas<S, R>[T_81]["rawSchema"][K_27] ? T_83 extends {
486
+ config: {
487
+ sql: {
488
+ schema: () => infer TargetSchema;
489
+ };
490
+ };
491
+ } ? TargetSchema extends {
492
+ _tableName: infer TableName;
493
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_84 ? T_84 extends TargetTable & string ? T_84 extends keyof S ? { [K_28 in keyof ResolvedRegistryWithSchemas<S, R>[T_84]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_84]["rawSchema"][K_28] extends infer T_85 ? T_85 extends ResolvedRegistryWithSchemas<S, R>[T_84]["rawSchema"][K_28] ? T_85 extends {
494
+ config: {
495
+ sql: {
496
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
497
+ schema: () => any;
498
+ };
499
+ };
500
+ } ? true : false : never : never) extends true ? K_28 : never]: (ResolvedRegistryWithSchemas<S, R>[T_84]["rawSchema"][K_28] extends infer T_86 ? T_86 extends ResolvedRegistryWithSchemas<S, R>[T_84]["rawSchema"][K_28] ? T_86 extends {
501
+ config: {
502
+ sql: {
503
+ schema: () => infer TargetSchema;
504
+ };
505
+ };
506
+ } ? TargetSchema extends {
507
+ _tableName: infer TableName;
508
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_87 ? T_87 extends TargetTable & string ? T_87 extends keyof S ? { [K_29 in keyof ResolvedRegistryWithSchemas<S, R>[T_87]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_87]["rawSchema"][K_29] extends infer T_88 ? T_88 extends ResolvedRegistryWithSchemas<S, R>[T_87]["rawSchema"][K_29] ? T_88 extends {
509
+ config: {
510
+ sql: {
511
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
512
+ schema: () => any;
513
+ };
514
+ };
515
+ } ? true : false : never : never) extends true ? K_29 : never]: (ResolvedRegistryWithSchemas<S, R>[T_87]["rawSchema"][K_29] extends infer T_89 ? T_89 extends ResolvedRegistryWithSchemas<S, R>[T_87]["rawSchema"][K_29] ? T_89 extends {
516
+ config: {
517
+ sql: {
518
+ schema: () => infer TargetSchema;
519
+ };
520
+ };
521
+ } ? TargetSchema extends {
522
+ _tableName: infer TableName;
523
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_90 ? T_90 extends TargetTable & string ? T_90 extends keyof S ? { [K_30 in keyof ResolvedRegistryWithSchemas<S, R>[T_90]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_90]["rawSchema"][K_30] extends infer T_91 ? T_91 extends ResolvedRegistryWithSchemas<S, R>[T_90]["rawSchema"][K_30] ? T_91 extends {
524
+ config: {
525
+ sql: {
526
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
527
+ schema: () => any;
528
+ };
529
+ };
530
+ } ? true : false : never : never) extends true ? K_30 : never]: (ResolvedRegistryWithSchemas<S, R>[T_90]["rawSchema"][K_30] extends infer T_92 ? T_92 extends ResolvedRegistryWithSchemas<S, R>[T_90]["rawSchema"][K_30] ? T_92 extends {
531
+ config: {
532
+ sql: {
533
+ schema: () => infer TargetSchema;
534
+ };
535
+ };
536
+ } ? TargetSchema extends {
537
+ _tableName: infer TableName;
538
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_93 ? T_93 extends TargetTable & string ? T_93 extends keyof S ? { [K_31 in keyof ResolvedRegistryWithSchemas<S, R>[T_93]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_93]["rawSchema"][K_31] extends infer T_94 ? T_94 extends ResolvedRegistryWithSchemas<S, R>[T_93]["rawSchema"][K_31] ? T_94 extends {
539
+ config: {
540
+ sql: {
541
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
542
+ schema: () => any;
543
+ };
544
+ };
545
+ } ? true : false : never : never) extends true ? K_31 : never]: (ResolvedRegistryWithSchemas<S, R>[T_93]["rawSchema"][K_31] extends infer T_95 ? T_95 extends ResolvedRegistryWithSchemas<S, R>[T_93]["rawSchema"][K_31] ? T_95 extends {
546
+ config: {
547
+ sql: {
548
+ schema: () => infer TargetSchema;
549
+ };
550
+ };
551
+ } ? TargetSchema extends {
552
+ _tableName: infer TableName;
553
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_96 ? T_96 extends TargetTable & string ? T_96 extends keyof S ? { [K_32 in keyof ResolvedRegistryWithSchemas<S, R>[T_96]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_96]["rawSchema"][K_32] extends infer T_97 ? T_97 extends ResolvedRegistryWithSchemas<S, R>[T_96]["rawSchema"][K_32] ? T_97 extends {
554
+ config: {
555
+ sql: {
556
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
557
+ schema: () => any;
558
+ };
559
+ };
560
+ } ? true : false : never : never) extends true ? K_32 : never]: (ResolvedRegistryWithSchemas<S, R>[T_96]["rawSchema"][K_32] extends infer T_98 ? T_98 extends ResolvedRegistryWithSchemas<S, R>[T_96]["rawSchema"][K_32] ? T_98 extends {
561
+ config: {
562
+ sql: {
563
+ schema: () => infer TargetSchema;
564
+ };
565
+ };
566
+ } ? TargetSchema extends {
567
+ _tableName: infer TableName;
568
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? /*elided*/ any : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never) extends infer T_99 ? T_99 extends (key & string extends infer T_110 ? T_110 extends key & string ? T_110 extends keyof S ? { [K_44 in keyof ResolvedRegistryWithSchemas<S, R>[T_110]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_110]["rawSchema"][K_44] extends infer T_111 ? T_111 extends ResolvedRegistryWithSchemas<S, R>[T_110]["rawSchema"][K_44] ? T_111 extends {
569
+ config: {
570
+ sql: {
571
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
572
+ schema: () => any;
573
+ };
574
+ };
575
+ } ? true : false : never : never) extends true ? K_44 : never]: (ResolvedRegistryWithSchemas<S, R>[T_110]["rawSchema"][K_44] extends infer T_112 ? T_112 extends ResolvedRegistryWithSchemas<S, R>[T_110]["rawSchema"][K_44] ? T_112 extends {
576
+ config: {
577
+ sql: {
578
+ schema: () => infer TargetSchema;
579
+ };
580
+ };
581
+ } ? TargetSchema extends {
582
+ _tableName: infer TableName;
583
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_113 ? T_113 extends TargetTable & string ? T_113 extends keyof S ? { [K_45 in keyof ResolvedRegistryWithSchemas<S, R>[T_113]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_113]["rawSchema"][K_45] extends infer T_114 ? T_114 extends ResolvedRegistryWithSchemas<S, R>[T_113]["rawSchema"][K_45] ? T_114 extends {
584
+ config: {
585
+ sql: {
586
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
587
+ schema: () => any;
588
+ };
589
+ };
590
+ } ? true : false : never : never) extends true ? K_45 : never]: (ResolvedRegistryWithSchemas<S, R>[T_113]["rawSchema"][K_45] extends infer T_115 ? T_115 extends ResolvedRegistryWithSchemas<S, R>[T_113]["rawSchema"][K_45] ? T_115 extends {
591
+ config: {
592
+ sql: {
593
+ schema: () => infer TargetSchema;
594
+ };
595
+ };
596
+ } ? TargetSchema extends {
597
+ _tableName: infer TableName;
598
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_116 ? T_116 extends TargetTable & string ? T_116 extends keyof S ? { [K_46 in keyof ResolvedRegistryWithSchemas<S, R>[T_116]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_116]["rawSchema"][K_46] extends infer T_117 ? T_117 extends ResolvedRegistryWithSchemas<S, R>[T_116]["rawSchema"][K_46] ? T_117 extends {
599
+ config: {
600
+ sql: {
601
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
602
+ schema: () => any;
603
+ };
604
+ };
605
+ } ? true : false : never : never) extends true ? K_46 : never]: (ResolvedRegistryWithSchemas<S, R>[T_116]["rawSchema"][K_46] extends infer T_118 ? T_118 extends ResolvedRegistryWithSchemas<S, R>[T_116]["rawSchema"][K_46] ? T_118 extends {
606
+ config: {
607
+ sql: {
608
+ schema: () => infer TargetSchema;
609
+ };
610
+ };
611
+ } ? TargetSchema extends {
612
+ _tableName: infer TableName;
613
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_119 ? T_119 extends TargetTable & string ? T_119 extends keyof S ? { [K_47 in keyof ResolvedRegistryWithSchemas<S, R>[T_119]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_119]["rawSchema"][K_47] extends infer T_120 ? T_120 extends ResolvedRegistryWithSchemas<S, R>[T_119]["rawSchema"][K_47] ? T_120 extends {
614
+ config: {
615
+ sql: {
616
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
617
+ schema: () => any;
618
+ };
619
+ };
620
+ } ? true : false : never : never) extends true ? K_47 : never]: (ResolvedRegistryWithSchemas<S, R>[T_119]["rawSchema"][K_47] extends infer T_121 ? T_121 extends ResolvedRegistryWithSchemas<S, R>[T_119]["rawSchema"][K_47] ? T_121 extends {
621
+ config: {
622
+ sql: {
623
+ schema: () => infer TargetSchema;
624
+ };
625
+ };
626
+ } ? TargetSchema extends {
627
+ _tableName: infer TableName;
628
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_122 ? T_122 extends TargetTable & string ? T_122 extends keyof S ? { [K_48 in keyof ResolvedRegistryWithSchemas<S, R>[T_122]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_122]["rawSchema"][K_48] extends infer T_123 ? T_123 extends ResolvedRegistryWithSchemas<S, R>[T_122]["rawSchema"][K_48] ? T_123 extends {
629
+ config: {
630
+ sql: {
631
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
632
+ schema: () => any;
633
+ };
634
+ };
635
+ } ? true : false : never : never) extends true ? K_48 : never]: (ResolvedRegistryWithSchemas<S, R>[T_122]["rawSchema"][K_48] extends infer T_124 ? T_124 extends ResolvedRegistryWithSchemas<S, R>[T_122]["rawSchema"][K_48] ? T_124 extends {
636
+ config: {
637
+ sql: {
638
+ schema: () => infer TargetSchema;
639
+ };
640
+ };
641
+ } ? TargetSchema extends {
642
+ _tableName: infer TableName;
643
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_125 ? T_125 extends TargetTable & string ? T_125 extends keyof S ? { [K_49 in keyof ResolvedRegistryWithSchemas<S, R>[T_125]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_125]["rawSchema"][K_49] extends infer T_126 ? T_126 extends ResolvedRegistryWithSchemas<S, R>[T_125]["rawSchema"][K_49] ? T_126 extends {
644
+ config: {
645
+ sql: {
646
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
647
+ schema: () => any;
648
+ };
649
+ };
650
+ } ? true : false : never : never) extends true ? K_49 : never]: (ResolvedRegistryWithSchemas<S, R>[T_125]["rawSchema"][K_49] extends infer T_127 ? T_127 extends ResolvedRegistryWithSchemas<S, R>[T_125]["rawSchema"][K_49] ? T_127 extends {
651
+ config: {
652
+ sql: {
653
+ schema: () => infer TargetSchema;
654
+ };
655
+ };
656
+ } ? TargetSchema extends {
657
+ _tableName: infer TableName;
658
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_128 ? T_128 extends TargetTable & string ? T_128 extends keyof S ? { [K_50 in keyof ResolvedRegistryWithSchemas<S, R>[T_128]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_128]["rawSchema"][K_50] extends infer T_129 ? T_129 extends ResolvedRegistryWithSchemas<S, R>[T_128]["rawSchema"][K_50] ? T_129 extends {
659
+ config: {
660
+ sql: {
661
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
662
+ schema: () => any;
663
+ };
664
+ };
665
+ } ? true : false : never : never) extends true ? K_50 : never]: (ResolvedRegistryWithSchemas<S, R>[T_128]["rawSchema"][K_50] extends infer T_130 ? T_130 extends ResolvedRegistryWithSchemas<S, R>[T_128]["rawSchema"][K_50] ? T_130 extends {
666
+ config: {
667
+ sql: {
668
+ schema: () => infer TargetSchema;
669
+ };
670
+ };
671
+ } ? TargetSchema extends {
672
+ _tableName: infer TableName;
673
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_131 ? T_131 extends TargetTable & string ? T_131 extends keyof S ? { [K_51 in keyof ResolvedRegistryWithSchemas<S, R>[T_131]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_131]["rawSchema"][K_51] extends infer T_132 ? T_132 extends ResolvedRegistryWithSchemas<S, R>[T_131]["rawSchema"][K_51] ? T_132 extends {
674
+ config: {
675
+ sql: {
676
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
677
+ schema: () => any;
678
+ };
679
+ };
680
+ } ? true : false : never : never) extends true ? K_51 : never]: (ResolvedRegistryWithSchemas<S, R>[T_131]["rawSchema"][K_51] extends infer T_133 ? T_133 extends ResolvedRegistryWithSchemas<S, R>[T_131]["rawSchema"][K_51] ? T_133 extends {
681
+ config: {
682
+ sql: {
683
+ schema: () => infer TargetSchema;
684
+ };
685
+ };
686
+ } ? TargetSchema extends {
687
+ _tableName: infer TableName;
688
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_134 ? T_134 extends TargetTable & string ? T_134 extends keyof S ? { [K_52 in keyof ResolvedRegistryWithSchemas<S, R>[T_134]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_134]["rawSchema"][K_52] extends infer T_135 ? T_135 extends ResolvedRegistryWithSchemas<S, R>[T_134]["rawSchema"][K_52] ? T_135 extends {
689
+ config: {
690
+ sql: {
691
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
692
+ schema: () => any;
693
+ };
260
694
  };
261
- __parentTableType: TSchema & RefObject;
695
+ } ? true : false : never : never) extends true ? K_52 : never]: (ResolvedRegistryWithSchemas<S, R>[T_134]["rawSchema"][K_52] extends infer T_136 ? T_136 extends ResolvedRegistryWithSchemas<S, R>[T_134]["rawSchema"][K_52] ? T_136 extends {
696
+ config: {
697
+ sql: {
698
+ schema: () => infer TargetSchema;
699
+ };
700
+ };
701
+ } ? TargetSchema extends {
702
+ _tableName: infer TableName;
703
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_137 ? T_137 extends TargetTable & string ? T_137 extends keyof S ? { [K_53 in keyof ResolvedRegistryWithSchemas<S, R>[T_137]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_137]["rawSchema"][K_53] extends infer T_138 ? T_138 extends ResolvedRegistryWithSchemas<S, R>[T_137]["rawSchema"][K_53] ? T_138 extends {
704
+ config: {
705
+ sql: {
706
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
707
+ schema: () => any;
708
+ };
709
+ };
710
+ } ? true : false : never : never) extends true ? K_53 : never]: (ResolvedRegistryWithSchemas<S, R>[T_137]["rawSchema"][K_53] extends infer T_139 ? T_139 extends ResolvedRegistryWithSchemas<S, R>[T_137]["rawSchema"][K_53] ? T_139 extends {
711
+ config: {
712
+ sql: {
713
+ schema: () => infer TargetSchema;
714
+ };
715
+ };
716
+ } ? TargetSchema extends {
717
+ _tableName: infer TableName;
718
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? TargetTable & string extends infer T_140 ? T_140 extends TargetTable & string ? T_140 extends keyof S ? { [K_54 in keyof ResolvedRegistryWithSchemas<S, R>[T_140]["rawSchema"] as (ResolvedRegistryWithSchemas<S, R>[T_140]["rawSchema"][K_54] extends infer T_141 ? T_141 extends ResolvedRegistryWithSchemas<S, R>[T_140]["rawSchema"][K_54] ? T_141 extends {
719
+ config: {
720
+ sql: {
721
+ type: "hasMany" | "hasOne" | "belongsTo" | "manyToMany";
722
+ schema: () => any;
723
+ };
724
+ };
725
+ } ? true : false : never : never) extends true ? K_54 : never]: (ResolvedRegistryWithSchemas<S, R>[T_140]["rawSchema"][K_54] extends infer T_142 ? T_142 extends ResolvedRegistryWithSchemas<S, R>[T_140]["rawSchema"][K_54] ? T_142 extends {
726
+ config: {
727
+ sql: {
728
+ schema: () => infer TargetSchema;
729
+ };
730
+ };
731
+ } ? TargetSchema extends {
732
+ _tableName: infer TableName;
733
+ } ? TableName : never : never : never : never) extends infer TargetTable ? TargetTable extends keyof S ? /*elided*/ any : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never : never : never; } : {} : never : never) ? T_99 extends object ? { [K_33 in keyof T_99]?: boolean | (T_99[K_33] extends infer T_100 ? T_100 extends T_99[K_33] ? T_100 extends object ? { [K_34 in keyof T_100]?: boolean | (T_100[K_34] extends infer T_101 ? T_101 extends T_100[K_34] ? T_101 extends object ? { [K_35 in keyof T_101]?: boolean | (T_101[K_35] extends infer T_102 ? T_102 extends T_101[K_35] ? T_102 extends object ? { [K_36 in keyof T_102]?: boolean | (T_102[K_36] extends infer T_103 ? T_103 extends T_102[K_36] ? T_103 extends object ? { [K_37 in keyof T_103]?: boolean | (T_103[K_37] extends infer T_104 ? T_104 extends T_103[K_37] ? T_104 extends object ? { [K_38 in keyof T_104]?: boolean | (T_104[K_38] extends infer T_105 ? T_105 extends T_104[K_38] ? T_105 extends object ? { [K_39 in keyof T_105]?: boolean | (T_105[K_39] extends infer T_106 ? T_106 extends T_105[K_39] ? T_106 extends object ? { [K_40 in keyof T_106]?: boolean | (T_106[K_40] extends infer T_107 ? T_107 extends T_106[K_40] ? T_107 extends object ? { [K_41 in keyof T_107]?: boolean | (T_107[K_41] extends infer T_108 ? T_108 extends T_107[K_41] ? T_108 extends object ? { [K_42 in keyof T_108]?: boolean | (T_108[K_42] extends infer T_109 ? T_109 extends T_108[K_42] ? T_109 extends object ? { [K_43 in keyof T_109]?: boolean | /*elided*/ any; } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never); } : never : never : never;
734
+ }; };
735
+ type SchemaProxy<S extends Record<string, SchemaWithPlaceholders>> = {
736
+ [K in keyof S]: {
737
+ [F in keyof S[K] as F extends "_tableName" ? never : F]: S[K][F] extends {
738
+ config: infer Config;
739
+ } ? S[K][F] & {
740
+ __meta: {
741
+ _key: F;
742
+ _fieldType: S[K][F];
743
+ };
744
+ __parentTableType: S[K];
745
+ } : S[K][F];
262
746
  };
263
747
  };
264
748
  type Prettify<T> = {
265
749
  [K in keyof T]: T[K];
266
750
  } & {};
267
751
  type DeriveSchemaByKey<T, Key extends "zodSqlSchema" | "zodClientSchema" | "zodValidationSchema", Depth extends any[] = []> = Depth["length"] extends 10 ? any : {
268
- [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand ? never : K extends keyof T ? T[K] extends {
752
+ [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand ? never : K extends keyof T ? T[K] extends Reference<any> ? K : T[K] extends {
269
753
  config: {
270
754
  sql: {
271
755
  type: "hasMany" | "manyToMany" | "hasOne" | "belongsTo";
272
756
  };
273
757
  };
274
- } ? Key extends "zodSqlSchema" ? never : K : K : never]: T[K] extends {
758
+ } ? Key extends "zodSqlSchema" ? never : K : K : never]: T[K] extends Reference<infer TGetter> ? ReturnType<TGetter> extends {
759
+ config: {
760
+ [P in Key]: infer ZodSchema extends z.ZodTypeAny;
761
+ };
762
+ } ? ZodSchema : never : T[K] extends {
275
763
  config: {
276
764
  sql: {
277
765
  type: "hasMany" | "manyToMany";
@@ -293,7 +781,7 @@ type DeriveSchemaByKey<T, Key extends "zodSqlSchema" | "zodClientSchema" | "zodV
293
781
  to: () => infer RefField;
294
782
  } ? RefField extends {
295
783
  config: {
296
- [P in Key]: infer ZodSchema;
784
+ [P in Key]: infer ZodSchema extends z.ZodTypeAny;
297
785
  };
298
786
  } ? ZodSchema : never : T[K] extends {
299
787
  config: {
@@ -302,7 +790,11 @@ type DeriveSchemaByKey<T, Key extends "zodSqlSchema" | "zodClientSchema" | "zodV
302
790
  } ? ZodSchema : never;
303
791
  };
304
792
  type DeriveDefaults<T, Depth extends any[] = []> = Prettify<Depth["length"] extends 10 ? any : {
305
- [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand ? never : K]: T[K] extends {
793
+ [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand ? never : K]: T[K] extends Reference<infer TGetter> ? ReturnType<TGetter> extends {
794
+ config: {
795
+ initialValue: infer D;
796
+ };
797
+ } ? D extends () => infer R ? R : D : never : T[K] extends {
306
798
  config: {
307
799
  sql: infer SqlConfig;
308
800
  initialValue: infer D;