cogsbox-shape 0.5.113 → 0.5.115
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 +10 -17
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -222,7 +222,7 @@ type ResolutionMap<S extends Record<string, SchemaWithPlaceholders>> = {
|
|
|
222
222
|
} : never;
|
|
223
223
|
};
|
|
224
224
|
};
|
|
225
|
-
type ResolveField<Field, Resolution, AllSchemas extends Record<string, any>> = Field extends PlaceholderReference ? Resolution : Field extends PlaceholderRelation<infer RelType> ? Resolution extends {
|
|
225
|
+
type ResolveField<Field, Resolution, AllSchemas extends Record<string, any>> = Field extends PlaceholderReference ? Resolution : Field extends Reference<any> ? Resolution : Field extends PlaceholderRelation<infer RelType> ? Resolution extends {
|
|
226
226
|
toKey: infer ToKey;
|
|
227
227
|
} ? ToKey extends {
|
|
228
228
|
__parentTableType: infer TargetSchema extends Schema<any>;
|
|
@@ -259,7 +259,7 @@ type IsRelationField<Field> = Field extends {
|
|
|
259
259
|
};
|
|
260
260
|
};
|
|
261
261
|
} ? true : false;
|
|
262
|
-
type
|
|
262
|
+
type GetRelationRegistryKey<Field, TRegistry extends RegistryShape> = Field extends {
|
|
263
263
|
config: {
|
|
264
264
|
sql: {
|
|
265
265
|
schema: () => infer TargetSchema;
|
|
@@ -267,35 +267,28 @@ type GetRelationTarget<Field> = Field extends {
|
|
|
267
267
|
};
|
|
268
268
|
} ? TargetSchema extends {
|
|
269
269
|
_tableName: infer TableName;
|
|
270
|
-
} ?
|
|
270
|
+
} ? {
|
|
271
|
+
[K in keyof TRegistry]: TRegistry[K]["rawSchema"]["_tableName"] extends TableName ? K : never;
|
|
272
|
+
}[keyof TRegistry] : never : never;
|
|
271
273
|
type NavigationProxy<CurrentTable extends string, Registry extends RegistryShape> = CurrentTable extends keyof Registry ? {
|
|
272
|
-
[K in keyof Registry[CurrentTable]["rawSchema"] as IsRelationField<Registry[CurrentTable]["rawSchema"][K]> extends true ? K : never]:
|
|
274
|
+
[K in keyof Registry[CurrentTable]["rawSchema"] as IsRelationField<Registry[CurrentTable]["rawSchema"][K]> extends true ? K : never]: GetRelationRegistryKey<Registry[CurrentTable]["rawSchema"][K], Registry> extends infer TargetKey ? TargetKey extends keyof Registry ? NavigationProxy<TargetKey & string, Registry> : never : never;
|
|
273
275
|
} : {};
|
|
274
276
|
type NavigationToSelection<Nav> = Nav extends object ? {
|
|
275
277
|
[K in keyof Nav]?: boolean | NavigationToSelection<Nav[K]>;
|
|
276
278
|
} : never;
|
|
277
279
|
type BuildZodShape<TTableName extends keyof TRegistry, TSelection, TKey extends "clientSchema" | "validationSchema", TRegistry extends RegistryShape> = TRegistry[TTableName]["zodSchemas"][TKey] extends z.ZodObject<infer Base> ? TSelection extends Record<string, any> ? // First get the base fields without relations
|
|
278
280
|
{
|
|
279
|
-
[K in keyof Base as K extends keyof TRegistry[TTableName]["rawSchema"] ? TRegistry[TTableName]["rawSchema"][K] extends
|
|
280
|
-
config: {
|
|
281
|
-
sql: {
|
|
282
|
-
schema: any;
|
|
283
|
-
};
|
|
284
|
-
};
|
|
285
|
-
} ? never : K : K]: Base[K];
|
|
281
|
+
[K in keyof Base as K extends keyof TRegistry[TTableName]["rawSchema"] ? IsRelationField<TRegistry[TTableName]["rawSchema"][K]> extends true ? never : K : K]: Base[K];
|
|
286
282
|
} & {
|
|
287
|
-
[K in keyof TSelection & keyof TRegistry[TTableName]["rawSchema"]]: TRegistry[TTableName]["rawSchema"][K] extends {
|
|
283
|
+
[K in keyof TSelection & keyof TRegistry[TTableName]["rawSchema"] as IsRelationField<TRegistry[TTableName]["rawSchema"][K]> extends true ? K : never]: GetRelationRegistryKey<TRegistry[TTableName]["rawSchema"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? TRegistry[TTableName]["rawSchema"][K] extends {
|
|
288
284
|
config: {
|
|
289
285
|
sql: {
|
|
290
286
|
type: infer RelType;
|
|
291
|
-
schema: () => infer S;
|
|
292
287
|
};
|
|
293
288
|
};
|
|
294
|
-
} ?
|
|
295
|
-
_tableName: infer Target;
|
|
296
|
-
} ? Target extends keyof TRegistry ? RelType extends "hasMany" | "manyToMany" ? TSelection[K] extends true ? TRegistry[Target]["zodSchemas"][TKey] extends z.ZodObject<infer Shape extends Record<string, any>> ? z.ZodArray<z.ZodObject<OmitRelations<Shape, TRegistry[Target]["rawSchema"]>>> : never : z.ZodArray<z.ZodObject<BuildZodShape<Target, TSelection[K], TKey, TRegistry>>> : TSelection[K] extends true ? TRegistry[Target]["zodSchemas"][TKey] extends z.ZodObject<infer Shape extends Record<string, any>> ? z.ZodOptional<z.ZodObject<OmitRelations<Shape, TRegistry[Target]["rawSchema"]>>> : never : z.ZodOptional<z.ZodObject<BuildZodShape<Target, TSelection[K], TKey, TRegistry>>> : never : never : never;
|
|
289
|
+
} ? RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<TSelection[K] extends true ? OmitRelations<TRegistry[TargetKey]["zodSchemas"][TKey] extends z.ZodObject<infer Shape> ? Shape : never, TRegistry[TargetKey]["rawSchema"]> : BuildZodShape<TargetKey, TSelection[K], TKey, TRegistry>>> : z.ZodOptional<z.ZodObject<TSelection[K] extends true ? OmitRelations<TRegistry[TargetKey]["zodSchemas"][TKey] extends z.ZodObject<infer Shape> ? Shape : never, TRegistry[TargetKey]["rawSchema"]> : BuildZodShape<TargetKey, TSelection[K], TKey, TRegistry>>> : never : never : never;
|
|
297
290
|
} : Base : never;
|
|
298
|
-
type OmitRelations<Shape, RawSchema> = Omit<Shape, {
|
|
291
|
+
export type OmitRelations<Shape, RawSchema> = Omit<Shape, {
|
|
299
292
|
[K in keyof Shape]: K extends keyof RawSchema ? RawSchema[K] extends {
|
|
300
293
|
config: {
|
|
301
294
|
sql: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cogsbox-shape",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.115",
|
|
4
4
|
"description": "A TypeScript library for creating type-safe database schemas with Zod validation, SQL type definitions, and automatic client/server transformations. Unifies client, server, and database types through a single schema definition, with built-in support for relationships and serialization.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|