cogsbox-shape 0.5.172 → 0.5.173

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
@@ -142,7 +142,7 @@ interface ShapeAPI {
142
142
  uuid: () => string;
143
143
  }) => TValue)) => Builder<"new", null, z.ZodUndefined, // No SQL schema
144
144
  ZodTypeFromPrimitive<TValue extends () => infer R ? R : TValue>, TValue extends () => infer R ? R : TValue, ZodTypeFromPrimitive<TValue extends () => infer R ? R : TValue>, ZodTypeFromPrimitive<TValue extends () => infer R ? R : TValue>>;
145
- 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>>;
145
+ sql: <const 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>>;
146
146
  reference: <TGetter extends () => any>(getter: TGetter) => Reference<TGetter>;
147
147
  hasMany: <T extends HasManyDefault>(config?: T) => PlaceholderRelation<"hasMany">;
148
148
  hasOne: (config?: HasOneDefault) => PlaceholderRelation<"hasOne">;
@@ -222,8 +222,8 @@ export declare function createSchema<T extends {
222
222
  defaultValues: Prettify<DeriveDefaults<TActualSchema>>;
223
223
  stateType: Prettify<DeriveStateType<TActualSchema>>;
224
224
  generateDefaults: () => Prettify<DeriveDefaults<TActualSchema>>;
225
- toClient: (dbObject: any) => any;
226
- toDb: (clientObject: any) => any;
225
+ toClient: (dbObject: Partial<z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>>;
226
+ toDb: (clientObject: Partial<z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>;
227
227
  parseForDb: (appData: z.input<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodValidationSchema">>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>;
228
228
  parseFromDb: (dbData: Partial<z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>>>) => z.infer<z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>>;
229
229
  };
@@ -428,8 +428,8 @@ type CreateSchemaBoxReturn<S extends Record<string, SchemaWithPlaceholders>, R e
428
428
  server: Resolved[K]["zodSchemas"]["serverSchema"];
429
429
  };
430
430
  transforms: {
431
- toClient: Resolved[K]["zodSchemas"]["toClient"];
432
- toDb: Resolved[K]["zodSchemas"]["toDb"];
431
+ toClient: (dbData: z.infer<Resolved[K]["zodSchemas"]["sqlSchema"]>) => z.infer<Resolved[K]["zodSchemas"]["clientSchema"]>;
432
+ toDb: (clientData: z.infer<Resolved[K]["zodSchemas"]["clientSchema"]>) => z.infer<Resolved[K]["zodSchemas"]["sqlSchema"]>;
433
433
  };
434
434
  parseForDb: (appData: z.input<Resolved[K]["zodSchemas"]["serverSchema"]>) => z.infer<Resolved[K]["zodSchemas"]["sqlSchema"]>;
435
435
  parseFromDb: (dbData: Partial<z.infer<Resolved[K]["zodSchemas"]["sqlSchema"]>>) => z.infer<Resolved[K]["zodSchemas"]["clientSchema"]>;
@@ -462,14 +462,27 @@ type SchemaProxy<S extends Record<string, SchemaWithPlaceholders>> = {
462
462
  type Prettify<T> = {
463
463
  [K in keyof T]: T[K];
464
464
  } & {};
465
+ type GetDbKey<K, Field> = Field extends Reference<infer TGetter> ? ReturnType<TGetter> extends {
466
+ config: {
467
+ sql: {
468
+ field: infer F extends string;
469
+ };
470
+ };
471
+ } ? string extends F ? K : F : K : Field extends {
472
+ config: {
473
+ sql: {
474
+ field: infer F extends string;
475
+ };
476
+ };
477
+ } ? string extends F ? K : F : K;
465
478
  type DeriveSchemaByKey<T, Key extends "zodSqlSchema" | "zodClientSchema" | "zodValidationSchema", Depth extends any[] = []> = Depth["length"] extends 10 ? any : {
466
- [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand | "__primaryKeySQL" | "__isClientChecker" | "primaryKeySQL" | "isClient" ? never : K extends keyof T ? T[K] extends Reference<any> ? K : T[K] extends {
479
+ [K in keyof T as K extends "_tableName" | typeof SchemaWrapperBrand | "__primaryKeySQL" | "__isClientChecker" | "primaryKeySQL" | "isClient" ? never : K extends keyof T ? T[K] extends Reference<any> ? Key extends "zodSqlSchema" ? GetDbKey<K, T[K]> : K : T[K] extends {
467
480
  config: {
468
481
  sql: {
469
482
  type: "hasMany" | "manyToMany" | "hasOne" | "belongsTo";
470
483
  };
471
484
  };
472
- } ? never : K : never]: T[K] extends Reference<infer TGetter> ? ReturnType<TGetter> extends {
485
+ } ? never : Key extends "zodSqlSchema" ? GetDbKey<K, T[K]> : K : never]: T[K] extends Reference<infer TGetter> ? ReturnType<TGetter> extends {
473
486
  config: {
474
487
  [P in Key]: infer ZodSchema extends z.ZodTypeAny;
475
488
  };
package/dist/schema.js CHANGED
@@ -417,7 +417,7 @@ export function createSchema(schema, relations) {
417
417
  clientToDbKeys[key] = dbFieldName;
418
418
  dbToClientKeys[dbFieldName] = key;
419
419
  // ALL SCHEMAS STRICTLY USE THE JS KEY
420
- sqlFields[key] = config.zodSqlSchema;
420
+ sqlFields[dbFieldName] = config.zodSqlSchema;
421
421
  clientFields[key] = config.zodClientSchema;
422
422
  serverFields[key] = config.zodValidationSchema;
423
423
  const initialValueOrFn = config.initialValue;
@@ -450,7 +450,7 @@ export function createSchema(schema, relations) {
450
450
  clientToDbKeys[key] = dbFieldName;
451
451
  dbToClientKeys[dbFieldName] = key;
452
452
  // ALL SCHEMAS STRICTLY USE THE JS KEY
453
- sqlFields[key] = config.zodSqlSchema;
453
+ sqlFields[dbFieldName] = config.zodSqlSchema;
454
454
  clientFields[key] = config.zodClientSchema;
455
455
  serverFields[key] = config.zodValidationSchema;
456
456
  if (config.transforms) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-shape",
3
- "version": "0.5.172",
3
+ "version": "0.5.173",
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",