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 +5 -37
- package/dist/schema.js +12 -18
- package/package.json +1 -1
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
|
|
1219
|
+
type ReferenceField = {
|
|
1220
1220
|
type: "reference";
|
|
1221
|
-
to: () =>
|
|
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
|
|
1411
|
+
export declare function reference<T = any>(config: {
|
|
1445
1412
|
to: () => T;
|
|
1446
|
-
|
|
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"
|
|
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
|
-
|
|
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
|
-
}
|
|
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.
|
|
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",
|