cogsbox-shape 0.5.4 → 0.5.5
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 +36 -3
- package/dist/schema.js +18 -5
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -1243,6 +1243,12 @@ 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 {
|
|
1246
1252
|
zodClientSchema: infer ClientType extends z.ZodTypeAny;
|
|
1247
1253
|
toClient?: (dbValue: any) => infer TransformedType;
|
|
1248
1254
|
} ? T[K]["toClient"] extends Function ? z.ZodType<TransformedType> : ClientType extends z.ZodNever ? z.ZodOptional<z.ZodDate> : ClientType : T[K] extends () => {
|
|
@@ -1250,6 +1256,12 @@ type InferSchema<T> = {
|
|
|
1250
1256
|
schema: infer S;
|
|
1251
1257
|
} ? z.ZodArray<z.ZodObject<{
|
|
1252
1258
|
[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 {
|
|
1253
1265
|
zodClientSchema: z.ZodTypeAny;
|
|
1254
1266
|
toClient?: (dbValue: any) => any;
|
|
1255
1267
|
} ? 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;
|
|
@@ -1258,6 +1270,12 @@ type InferSchema<T> = {
|
|
|
1258
1270
|
schema: infer S;
|
|
1259
1271
|
} ? z.ZodObject<{
|
|
1260
1272
|
[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 {
|
|
1261
1279
|
zodClientSchema: z.ZodTypeAny;
|
|
1262
1280
|
toClient?: (dbValue: any) => any;
|
|
1263
1281
|
} ? 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;
|
|
@@ -1265,6 +1283,11 @@ type InferSchema<T> = {
|
|
|
1265
1283
|
};
|
|
1266
1284
|
export type InferDBSchema<T> = {
|
|
1267
1285
|
[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 {
|
|
1268
1291
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1269
1292
|
} ? DbType : T[K] extends {
|
|
1270
1293
|
dbType: infer DbType extends z.ZodTypeAny;
|
|
@@ -1273,6 +1296,11 @@ export type InferDBSchema<T> = {
|
|
|
1273
1296
|
schema: infer S;
|
|
1274
1297
|
} ? z.ZodArray<z.ZodObject<{
|
|
1275
1298
|
[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 {
|
|
1276
1304
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1277
1305
|
} ? DbType : never;
|
|
1278
1306
|
}>> : T[K] extends () => {
|
|
@@ -1280,6 +1308,11 @@ export type InferDBSchema<T> = {
|
|
|
1280
1308
|
schema: infer S;
|
|
1281
1309
|
} ? z.ZodObject<{
|
|
1282
1310
|
[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 {
|
|
1283
1316
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1284
1317
|
} ? DbType : never;
|
|
1285
1318
|
}> : never;
|
|
@@ -1408,9 +1441,9 @@ type InferSerializedSchema<T> = {
|
|
|
1408
1441
|
};
|
|
1409
1442
|
} : never;
|
|
1410
1443
|
};
|
|
1411
|
-
export declare function reference<T extends
|
|
1412
|
-
to: T;
|
|
1413
|
-
}):
|
|
1444
|
+
export declare function reference<T extends BaseSchemaField>(config: {
|
|
1445
|
+
to: () => T;
|
|
1446
|
+
}): ReferenceField<T>;
|
|
1414
1447
|
export declare function createSchema<T extends Schema<any>>(schema: T): {
|
|
1415
1448
|
dbSchema: z.ZodObject<Prettify<InferDBSchema<T>>>;
|
|
1416
1449
|
clientSchema: z.ZodObject<Prettify<OmitNever<InferSchema<T>>>>;
|
package/dist/schema.js
CHANGED
|
@@ -388,13 +388,14 @@ function createSerializableSchema(schema) {
|
|
|
388
388
|
}
|
|
389
389
|
return serializableSchema;
|
|
390
390
|
}
|
|
391
|
+
// Update the createSchema function to handle references in the main loop
|
|
391
392
|
export function createSchema(schema) {
|
|
392
393
|
const serialized = createSerializableSchema(schema);
|
|
393
394
|
const dbFields = {};
|
|
394
395
|
const clientFields = {};
|
|
395
396
|
const defaultValues = {};
|
|
396
397
|
for (const [key, value] of Object.entries(schema)) {
|
|
397
|
-
if (key === "_tableName")
|
|
398
|
+
if (key === "_tableName" || key === "__schemaId")
|
|
398
399
|
continue;
|
|
399
400
|
if (typeof value === "function") {
|
|
400
401
|
const relation = value();
|
|
@@ -436,10 +437,22 @@ export function createSchema(schema) {
|
|
|
436
437
|
}
|
|
437
438
|
continue;
|
|
438
439
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
+
}
|
|
443
456
|
}
|
|
444
457
|
return {
|
|
445
458
|
dbSchema: z.object(dbFields),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cogsbox-shape",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
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",
|