cogsbox-shape 0.5.5 → 0.5.6

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
@@ -1216,9 +1216,9 @@ type BaseSchemaField<T extends SQLType = SQLType> = {
1216
1216
  toClient?: (dbValue: any) => any;
1217
1217
  toDb?: (clientValue: any) => any;
1218
1218
  };
1219
- type ReferenceField<T extends BaseSchemaField = BaseSchemaField> = {
1219
+ type ReferenceField = {
1220
1220
  type: "reference";
1221
- to: () => T;
1221
+ to: () => BaseSchemaField;
1222
1222
  };
1223
1223
  type SchemaField<T extends SQLType = SQLType> = BaseSchemaField<T> | ReferenceField;
1224
1224
  export type Schema<T extends Record<string, SchemaField | (() => Relation<any>)>> = {
@@ -1243,12 +1243,6 @@ type Prettify<T> = {
1243
1243
  } & {};
1244
1244
  type InferSchema<T> = {
1245
1245
  [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1246
- type: "reference";
1247
- to: () => infer RefField;
1248
- } ? RefField extends {
1249
- zodClientSchema: infer ClientType extends z.ZodTypeAny;
1250
- toClient?: (dbValue: any) => infer TransformedType;
1251
- } ? RefField["toClient"] extends Function ? z.ZodType<TransformedType> : ClientType extends z.ZodNever ? z.ZodOptional<z.ZodDate> : ClientType : never : T[K] extends {
1252
1246
  zodClientSchema: infer ClientType extends z.ZodTypeAny;
1253
1247
  toClient?: (dbValue: any) => infer TransformedType;
1254
1248
  } ? T[K]["toClient"] extends Function ? z.ZodType<TransformedType> : ClientType extends z.ZodNever ? z.ZodOptional<z.ZodDate> : ClientType : T[K] extends () => {
@@ -1256,12 +1250,6 @@ type InferSchema<T> = {
1256
1250
  schema: infer S;
1257
1251
  } ? z.ZodArray<z.ZodObject<{
1258
1252
  [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1259
- type: "reference";
1260
- to: () => infer RefField;
1261
- } ? RefField extends {
1262
- zodClientSchema: z.ZodTypeAny;
1263
- toClient?: (dbValue: any) => any;
1264
- } ? RefField["toClient"] extends Function ? z.ZodType<ReturnType<RefField["toClient"]>> : RefField["zodClientSchema"] extends z.ZodNever ? z.ZodOptional<z.ZodDate> : RefField["zodClientSchema"] : never : S[P] extends {
1265
1253
  zodClientSchema: z.ZodTypeAny;
1266
1254
  toClient?: (dbValue: any) => any;
1267
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;
@@ -1270,12 +1258,6 @@ type InferSchema<T> = {
1270
1258
  schema: infer S;
1271
1259
  } ? z.ZodObject<{
1272
1260
  [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1273
- type: "reference";
1274
- to: () => infer RefField;
1275
- } ? RefField extends {
1276
- zodClientSchema: z.ZodTypeAny;
1277
- toClient?: (dbValue: any) => any;
1278
- } ? RefField["toClient"] extends Function ? z.ZodType<ReturnType<RefField["toClient"]>> : RefField["zodClientSchema"] extends z.ZodNever ? z.ZodOptional<z.ZodDate> : RefField["zodClientSchema"] : never : S[P] extends {
1279
1261
  zodClientSchema: z.ZodTypeAny;
1280
1262
  toClient?: (dbValue: any) => any;
1281
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;
@@ -1283,11 +1265,6 @@ type InferSchema<T> = {
1283
1265
  };
1284
1266
  export type InferDBSchema<T> = {
1285
1267
  [K in keyof T as K extends "_tableName" | "__schemaId" ? never : K]: T[K] extends {
1286
- type: "reference";
1287
- to: () => infer RefField;
1288
- } ? RefField extends {
1289
- zodDbSchema: infer DbType extends z.ZodTypeAny;
1290
- } ? DbType : never : T[K] extends {
1291
1268
  zodDbSchema: infer DbType extends z.ZodTypeAny;
1292
1269
  } ? DbType : T[K] extends {
1293
1270
  dbType: infer DbType extends z.ZodTypeAny;
@@ -1296,11 +1273,6 @@ export type InferDBSchema<T> = {
1296
1273
  schema: infer S;
1297
1274
  } ? z.ZodArray<z.ZodObject<{
1298
1275
  [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1299
- type: "reference";
1300
- to: () => infer RefField;
1301
- } ? RefField extends {
1302
- zodDbSchema: infer DbType extends z.ZodTypeAny;
1303
- } ? DbType : never : S[P] extends {
1304
1276
  zodDbSchema: infer DbType extends z.ZodTypeAny;
1305
1277
  } ? DbType : never;
1306
1278
  }>> : T[K] extends () => {
@@ -1308,11 +1280,6 @@ export type InferDBSchema<T> = {
1308
1280
  schema: infer S;
1309
1281
  } ? z.ZodObject<{
1310
1282
  [P in keyof S as P extends "_tableName" | "__schemaId" ? never : P]: S[P] extends {
1311
- type: "reference";
1312
- to: () => infer RefField;
1313
- } ? RefField extends {
1314
- zodDbSchema: infer DbType extends z.ZodTypeAny;
1315
- } ? DbType : never : S[P] extends {
1316
1283
  zodDbSchema: infer DbType extends z.ZodTypeAny;
1317
1284
  } ? DbType : never;
1318
1285
  }> : never;
@@ -1441,9 +1408,10 @@ type InferSerializedSchema<T> = {
1441
1408
  };
1442
1409
  } : never;
1443
1410
  };
1444
- export declare function reference<T extends BaseSchemaField>(config: {
1411
+ export declare function reference<T = any>(config: {
1445
1412
  to: () => T;
1446
- }): ReferenceField<T>;
1413
+ field: BaseSchemaField;
1414
+ }): ReferenceField;
1447
1415
  export declare function createSchema<T extends Schema<any>>(schema: T): {
1448
1416
  dbSchema: z.ZodObject<Prettify<InferDBSchema<T>>>;
1449
1417
  clientSchema: z.ZodObject<Prettify<OmitNever<InferSchema<T>>>>;
package/dist/schema.js CHANGED
@@ -305,10 +305,17 @@ function inferDefaultFromZod(zodType, sqlConfig) {
305
305
  }
306
306
  return undefined;
307
307
  }
308
+ // Update reference function
308
309
  export function reference(config) {
309
310
  return {
310
311
  type: "reference",
311
312
  to: config.to,
313
+ sql: config.field.sql,
314
+ zodDbSchema: config.field.zodDbSchema,
315
+ zodClientSchema: config.field.zodClientSchema,
316
+ defaultValue: config.field.defaultValue,
317
+ toClient: config.field.toClient,
318
+ toDb: config.field.toDb,
312
319
  };
313
320
  }
314
321
  function createSerializableSchema(schema) {
@@ -388,14 +395,13 @@ function createSerializableSchema(schema) {
388
395
  }
389
396
  return serializableSchema;
390
397
  }
391
- // Update the createSchema function to handle references in the main loop
392
398
  export function createSchema(schema) {
393
399
  const serialized = createSerializableSchema(schema);
394
400
  const dbFields = {};
395
401
  const clientFields = {};
396
402
  const defaultValues = {};
397
403
  for (const [key, value] of Object.entries(schema)) {
398
- if (key === "_tableName" || key === "__schemaId")
404
+ if (key === "_tableName")
399
405
  continue;
400
406
  if (typeof value === "function") {
401
407
  const relation = value();
@@ -437,22 +443,10 @@ export function createSchema(schema) {
437
443
  }
438
444
  continue;
439
445
  }
440
- // Handle references - this is the key addition
441
- if (value && typeof value === "object" && value.type === "reference") {
442
- const referencedField = value.to();
443
- dbFields[key] = referencedField.zodDbSchema;
444
- clientFields[key] = referencedField.zodClientSchema;
445
- defaultValues[key] =
446
- referencedField.defaultValue ??
447
- inferDefaultFromZod(referencedField.zodClientSchema);
448
- }
449
- else {
450
- // Handle regular fields
451
- dbFields[key] = value.zodDbSchema;
452
- clientFields[key] = value.zodClientSchema;
453
- defaultValues[key] =
454
- value.defaultValue ?? inferDefaultFromZod(value.zodClientSchema);
455
- }
446
+ dbFields[key] = value.zodDbSchema;
447
+ clientFields[key] = value.zodClientSchema;
448
+ defaultValues[key] =
449
+ value.defaultValue ?? inferDefaultFromZod(value.zodClientSchema);
456
450
  }
457
451
  return {
458
452
  dbSchema: z.object(dbFields),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-shape",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
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",