cogsbox-shape 0.5.5 → 0.5.7
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 +12 -37
- package/dist/schema.js +11 -18
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -1216,9 +1216,15 @@ type BaseSchemaField<T extends SQLType = SQLType> = {
|
|
|
1216
1216
|
toClient?: (dbValue: any) => any;
|
|
1217
1217
|
toDb?: (clientValue: any) => any;
|
|
1218
1218
|
};
|
|
1219
|
-
type ReferenceField
|
|
1219
|
+
type ReferenceField = {
|
|
1220
1220
|
type: "reference";
|
|
1221
|
-
to: () =>
|
|
1221
|
+
to: () => any;
|
|
1222
|
+
sql: SQLType;
|
|
1223
|
+
zodDbSchema: z.ZodType<any>;
|
|
1224
|
+
zodClientSchema: z.ZodType<any>;
|
|
1225
|
+
defaultValue?: any;
|
|
1226
|
+
toClient?: (dbValue: any) => any;
|
|
1227
|
+
toDb?: (clientValue: any) => any;
|
|
1222
1228
|
};
|
|
1223
1229
|
type SchemaField<T extends SQLType = SQLType> = BaseSchemaField<T> | ReferenceField;
|
|
1224
1230
|
export type Schema<T extends Record<string, SchemaField | (() => Relation<any>)>> = {
|
|
@@ -1243,12 +1249,6 @@ type Prettify<T> = {
|
|
|
1243
1249
|
} & {};
|
|
1244
1250
|
type InferSchema<T> = {
|
|
1245
1251
|
[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
1252
|
zodClientSchema: infer ClientType extends z.ZodTypeAny;
|
|
1253
1253
|
toClient?: (dbValue: any) => infer TransformedType;
|
|
1254
1254
|
} ? T[K]["toClient"] extends Function ? z.ZodType<TransformedType> : ClientType extends z.ZodNever ? z.ZodOptional<z.ZodDate> : ClientType : T[K] extends () => {
|
|
@@ -1256,12 +1256,6 @@ type InferSchema<T> = {
|
|
|
1256
1256
|
schema: infer S;
|
|
1257
1257
|
} ? z.ZodArray<z.ZodObject<{
|
|
1258
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 {
|
|
1265
1259
|
zodClientSchema: z.ZodTypeAny;
|
|
1266
1260
|
toClient?: (dbValue: any) => any;
|
|
1267
1261
|
} ? 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 +1264,6 @@ type InferSchema<T> = {
|
|
|
1270
1264
|
schema: infer S;
|
|
1271
1265
|
} ? z.ZodObject<{
|
|
1272
1266
|
[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
1267
|
zodClientSchema: z.ZodTypeAny;
|
|
1280
1268
|
toClient?: (dbValue: any) => any;
|
|
1281
1269
|
} ? 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 +1271,6 @@ type InferSchema<T> = {
|
|
|
1283
1271
|
};
|
|
1284
1272
|
export type InferDBSchema<T> = {
|
|
1285
1273
|
[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
1274
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1292
1275
|
} ? DbType : T[K] extends {
|
|
1293
1276
|
dbType: infer DbType extends z.ZodTypeAny;
|
|
@@ -1296,11 +1279,6 @@ export type InferDBSchema<T> = {
|
|
|
1296
1279
|
schema: infer S;
|
|
1297
1280
|
} ? z.ZodArray<z.ZodObject<{
|
|
1298
1281
|
[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
1282
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1305
1283
|
} ? DbType : never;
|
|
1306
1284
|
}>> : T[K] extends () => {
|
|
@@ -1308,11 +1286,6 @@ export type InferDBSchema<T> = {
|
|
|
1308
1286
|
schema: infer S;
|
|
1309
1287
|
} ? z.ZodObject<{
|
|
1310
1288
|
[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
1289
|
zodDbSchema: infer DbType extends z.ZodTypeAny;
|
|
1317
1290
|
} ? DbType : never;
|
|
1318
1291
|
}> : never;
|
|
@@ -1441,9 +1414,11 @@ type InferSerializedSchema<T> = {
|
|
|
1441
1414
|
};
|
|
1442
1415
|
} : never;
|
|
1443
1416
|
};
|
|
1444
|
-
|
|
1417
|
+
type ShapeFieldReturn = ReturnType<typeof shape.sql>;
|
|
1418
|
+
export declare function reference<T = any>(config: {
|
|
1445
1419
|
to: () => T;
|
|
1446
|
-
|
|
1420
|
+
field: ShapeFieldReturn;
|
|
1421
|
+
}): ReferenceField;
|
|
1447
1422
|
export declare function createSchema<T extends Schema<any>>(schema: T): {
|
|
1448
1423
|
dbSchema: z.ZodObject<Prettify<InferDBSchema<T>>>;
|
|
1449
1424
|
clientSchema: z.ZodObject<Prettify<OmitNever<InferSchema<T>>>>;
|
package/dist/schema.js
CHANGED
|
@@ -309,6 +309,12 @@ export function reference(config) {
|
|
|
309
309
|
return {
|
|
310
310
|
type: "reference",
|
|
311
311
|
to: config.to,
|
|
312
|
+
sql: config.field.sql,
|
|
313
|
+
zodDbSchema: config.field.zodDbSchema,
|
|
314
|
+
zodClientSchema: config.field.zodClientSchema,
|
|
315
|
+
defaultValue: config.field.defaultValue,
|
|
316
|
+
toClient: config.field.toClient,
|
|
317
|
+
toDb: config.field.toDb,
|
|
312
318
|
};
|
|
313
319
|
}
|
|
314
320
|
function createSerializableSchema(schema) {
|
|
@@ -388,14 +394,13 @@ function createSerializableSchema(schema) {
|
|
|
388
394
|
}
|
|
389
395
|
return serializableSchema;
|
|
390
396
|
}
|
|
391
|
-
// Update the createSchema function to handle references in the main loop
|
|
392
397
|
export function createSchema(schema) {
|
|
393
398
|
const serialized = createSerializableSchema(schema);
|
|
394
399
|
const dbFields = {};
|
|
395
400
|
const clientFields = {};
|
|
396
401
|
const defaultValues = {};
|
|
397
402
|
for (const [key, value] of Object.entries(schema)) {
|
|
398
|
-
if (key === "_tableName"
|
|
403
|
+
if (key === "_tableName")
|
|
399
404
|
continue;
|
|
400
405
|
if (typeof value === "function") {
|
|
401
406
|
const relation = value();
|
|
@@ -437,22 +442,10 @@ export function createSchema(schema) {
|
|
|
437
442
|
}
|
|
438
443
|
continue;
|
|
439
444
|
}
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
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
|
-
}
|
|
445
|
+
dbFields[key] = value.zodDbSchema;
|
|
446
|
+
clientFields[key] = value.zodClientSchema;
|
|
447
|
+
defaultValues[key] =
|
|
448
|
+
value.defaultValue ?? inferDefaultFromZod(value.zodClientSchema);
|
|
456
449
|
}
|
|
457
450
|
return {
|
|
458
451
|
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.7",
|
|
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",
|