cogsbox-shape 0.5.171 → 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">;
@@ -218,12 +218,12 @@ export declare function createSchema<T extends {
218
218
  isClientRecord: ((record: any) => boolean) | undefined;
219
219
  sqlSchema: z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodSqlSchema">>>;
220
220
  clientSchema: z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodClientSchema">>>;
221
- validationSchema: z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodValidationSchema">>>;
221
+ serverSchema: z.ZodObject<Prettify<DeriveSchemaByKey<TActualSchema, "zodValidationSchema">>>;
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
  };
@@ -288,7 +288,7 @@ type ResolvedRegistryWithSchemas<S extends Record<string, SchemaWithPlaceholders
288
288
  zodSchemas: {
289
289
  sqlSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>, "zodSqlSchema">>>;
290
290
  clientSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>, "zodClientSchema">>>;
291
- validationSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>, "zodValidationSchema">>>;
291
+ serverSchema: z.ZodObject<Prettify<DeriveSchemaByKey<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>, "zodValidationSchema">>>;
292
292
  defaultValues: Prettify<DeriveDefaults<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>>>;
293
293
  stateType: Prettify<DeriveStateType<ResolveSchema<S[K], K extends keyof R ? (R[K] extends object ? R[K] : {}) : {}>>>;
294
294
  toClient: (dbObject: any) => any;
@@ -324,7 +324,7 @@ type GetRelationRegistryKey<Field, TRegistry extends RegistryShape> = Field exte
324
324
  type OmitRelationFields<Shape, RawSchema> = Omit<Shape, {
325
325
  [K in keyof Shape]: K extends keyof RawSchema ? IsRelationField<RawSchema[K]> extends true ? K : never : never;
326
326
  }[keyof Shape]>;
327
- type _DeriveViewShape<TTableName extends keyof TRegistry, TSelection, TRegistry extends RegistryShape, TKey extends "clientSchema" | "validationSchema", Depth extends any[] = []> = Depth["length"] extends 10 ? any : TRegistry[TTableName]["zodSchemas"][TKey] extends z.ZodObject<infer BaseShape> ? TSelection extends Record<string, any> ? Prettify<OmitRelationFields<BaseShape, TRegistry[TTableName]["rawSchema"]> & {
327
+ type _DeriveViewShape<TTableName extends keyof TRegistry, TSelection, TRegistry extends RegistryShape, TKey extends "clientSchema" | "serverSchema", Depth extends any[] = []> = Depth["length"] extends 10 ? any : TRegistry[TTableName]["zodSchemas"][TKey] extends z.ZodObject<infer BaseShape> ? TSelection extends Record<string, any> ? Prettify<OmitRelationFields<BaseShape, TRegistry[TTableName]["rawSchema"]> & {
328
328
  [K in keyof TSelection & keyof TRegistry[TTableName]["rawSchema"] as IsRelationField<TRegistry[TTableName]["rawSchema"][K]> extends true ? K : never]: GetRelationRegistryKey<TRegistry[TTableName]["rawSchema"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? TRegistry[TTableName]["rawSchema"][K] extends {
329
329
  config: {
330
330
  sql: {
@@ -361,13 +361,13 @@ export type DeriveViewResult<TTableName extends keyof TRegistry, TSelection, TRe
361
361
  schemas: {
362
362
  sql: TRegistry[TTableName]["zodSchemas"]["sqlSchema"];
363
363
  client: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "clientSchema">>;
364
- server: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "validationSchema">>;
364
+ server: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "serverSchema">>;
365
365
  };
366
366
  transforms: {
367
367
  toClient: TRegistry[TTableName]["zodSchemas"]["toClient"];
368
368
  toDb: TRegistry[TTableName]["zodSchemas"]["toDb"];
369
369
  };
370
- parseForDb: (appData: z.input<TRegistry[TTableName]["zodSchemas"]["validationSchema"]>) => z.infer<TRegistry[TTableName]["zodSchemas"]["sqlSchema"]>;
370
+ parseForDb: (appData: z.input<TRegistry[TTableName]["zodSchemas"]["serverSchema"]>) => z.infer<TRegistry[TTableName]["zodSchemas"]["sqlSchema"]>;
371
371
  parseFromDb: (dbData: Partial<z.infer<TRegistry[TTableName]["zodSchemas"]["sqlSchema"]>>) => z.infer<TRegistry[TTableName]["zodSchemas"]["clientSchema"]>;
372
372
  defaults: DeriveViewDefaults<TTableName, TSelection, TRegistry>;
373
373
  pk: string[] | null;
@@ -405,7 +405,7 @@ type RegistryShape = Record<string, {
405
405
  zodSchemas: {
406
406
  sqlSchema: z.ZodObject<any>;
407
407
  clientSchema: z.ZodObject<any>;
408
- validationSchema: z.ZodObject<any>;
408
+ serverSchema: z.ZodObject<any>;
409
409
  defaultValues: any;
410
410
  stateType: any;
411
411
  toClient: (dbObject: any) => any;
@@ -425,13 +425,13 @@ type CreateSchemaBoxReturn<S extends Record<string, SchemaWithPlaceholders>, R e
425
425
  schemas: {
426
426
  sql: Resolved[K]["zodSchemas"]["sqlSchema"];
427
427
  client: Resolved[K]["zodSchemas"]["clientSchema"];
428
- server: Resolved[K]["zodSchemas"]["validationSchema"];
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
- parseForDb: (appData: z.input<Resolved[K]["zodSchemas"]["validationSchema"]>) => z.infer<Resolved[K]["zodSchemas"]["sqlSchema"]>;
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"]>;
436
436
  defaults: Resolved[K]["zodSchemas"]["defaultValues"];
437
437
  stateType: Resolved[K]["zodSchemas"]["stateType"];
@@ -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
@@ -253,7 +253,7 @@ function createBuilder(config) {
253
253
  if (completedStages.has("server")) {
254
254
  throw new Error("validation() can only be called once in the chain");
255
255
  }
256
- const validationSchema = isFunction(assert)
256
+ const serverSchema = isFunction(assert)
257
257
  ? assert({
258
258
  sql: config.sqlZod,
259
259
  initialState: config.newZod,
@@ -265,7 +265,7 @@ function createBuilder(config) {
265
265
  return createBuilder({
266
266
  ...config,
267
267
  stage: "server",
268
- validationZod: validationSchema,
268
+ validationZod: serverSchema,
269
269
  completedStages: newCompletedStages,
270
270
  });
271
271
  },
@@ -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) {
@@ -539,7 +539,7 @@ export function createSchema(schema, relations) {
539
539
  isClientRecord,
540
540
  sqlSchema: finalSqlSchema,
541
541
  clientSchema: finalClientSchema,
542
- validationSchema: finalValidationSchema,
542
+ serverSchema: finalValidationSchema,
543
543
  defaultValues: defaultValues,
544
544
  stateType: {},
545
545
  generateDefaults,
@@ -581,7 +581,7 @@ function createViewObject(initialRegistryKey, selection, registry, tableNameToRe
581
581
  }
582
582
  }
583
583
  const baseSchema = schemaType === "server"
584
- ? registryEntry.zodSchemas.validationSchema
584
+ ? registryEntry.zodSchemas.serverSchema
585
585
  : registryEntry.zodSchemas.clientSchema;
586
586
  const primitiveShape = baseSchema.shape;
587
587
  if (subSelection === true) {
@@ -749,11 +749,11 @@ export function createSchemaBox(schemas, resolver) {
749
749
  const entry = finalRegistry[tableName];
750
750
  cleanerRegistry[tableName] = {
751
751
  definition: entry.rawSchema,
752
- schemaKey: tableName, // ADD THIS - was missing from runtime
752
+ schemaKey: tableName,
753
753
  schemas: {
754
754
  sql: entry.zodSchemas.sqlSchema,
755
755
  client: entry.zodSchemas.clientSchema,
756
- server: entry.zodSchemas.validationSchema,
756
+ server: entry.zodSchemas.serverSchema,
757
757
  },
758
758
  transforms: {
759
759
  toClient: entry.zodSchemas.toClient,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-shape",
3
- "version": "0.5.171",
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",