cogsbox-shape 0.5.122 → 0.5.123

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
@@ -259,7 +259,7 @@ type IsRelationField<Field> = Field extends {
259
259
  };
260
260
  };
261
261
  } ? true : false;
262
- type GetRelationRegistryKey<Field, TRegistry> = Field extends {
262
+ type GetRelationRegistryKey<Field, TRegistry extends RegistryShape> = Field extends {
263
263
  config: {
264
264
  sql: {
265
265
  schema: () => infer S;
@@ -268,23 +268,13 @@ type GetRelationRegistryKey<Field, TRegistry> = Field extends {
268
268
  } ? S extends {
269
269
  _tableName: infer T;
270
270
  } ? {
271
- [K in keyof TRegistry]: TRegistry[K] extends {
272
- definition: {
273
- _tableName: T;
274
- };
275
- } ? K : never;
271
+ [K in keyof TRegistry]: TRegistry[K]["rawSchema"]["_tableName"] extends T ? K : never;
276
272
  }[keyof TRegistry] : never : never;
277
273
  type OmitRelationFields<Shape, RawSchema> = Omit<Shape, {
278
274
  [K in keyof Shape]: K extends keyof RawSchema ? IsRelationField<RawSchema[K]> extends true ? K : never : never;
279
275
  }[keyof Shape]>;
280
- type _DeriveViewShape<TTableName extends keyof TRegistry, TSelection, TRegistry extends Record<string, {
281
- definition: Record<string, any>;
282
- schemas: {
283
- client: z.ZodObject<any>;
284
- validation: z.ZodObject<any>;
285
- };
286
- }>, TKey extends "client" | "validation", Depth extends any[] = []> = Depth["length"] extends 10 ? any : TRegistry[TTableName]["schemas"][TKey] extends z.ZodObject<infer BaseShape> ? TSelection extends Record<string, any> ? Prettify<OmitRelationFields<BaseShape, TRegistry[TTableName]["definition"]> & {
287
- [K in keyof TSelection & keyof TRegistry[TTableName]["definition"] as IsRelationField<TRegistry[TTableName]["definition"][K]> extends true ? K : never]: GetRelationRegistryKey<TRegistry[TTableName]["definition"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? TRegistry[TTableName]["definition"][K] extends {
276
+ 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"]> & {
277
+ [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 {
288
278
  config: {
289
279
  sql: {
290
280
  type: infer RelType;
@@ -297,27 +287,8 @@ type _DeriveViewShape<TTableName extends keyof TRegistry, TSelection, TRegistry
297
287
  ...Depth,
298
288
  1
299
289
  ]>>> : never : never : never;
300
- }> : OmitRelationFields<BaseShape, TRegistry[TTableName]["definition"]> : never;
301
- type DeriveViewDefaults<TTableName extends keyof TRegistry, TSelection, TRegistry extends Record<string, {
302
- definition: Record<string, any>;
303
- defaults: Record<string, any>;
304
- }>, Depth extends any[] = []> = Prettify<TRegistry[TTableName]["defaults"] & (TSelection extends Record<string, any> ? {
305
- -readonly [K in keyof TSelection & keyof TRegistry[TTableName]["definition"]]?: TRegistry[TTableName]["definition"][K] extends {
306
- config: {
307
- sql: {
308
- type: infer RelType;
309
- schema: any;
310
- };
311
- };
312
- } ? GetRelationRegistryKey<TRegistry[TTableName]["definition"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? RelType extends "hasMany" | "manyToMany" ? DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
313
- ...Depth,
314
- 1
315
- ]>[] : DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
316
- ...Depth,
317
- 1
318
- ]> | null : never : never : never;
319
- } : {})>;
320
- type _Internal_DeriveViewDefaults<TTableName extends keyof TRegistry, TSelection, TRegistry extends RegistryShape, Depth extends any[] = []> = Prettify<TRegistry[TTableName]["zodSchemas"]["defaultValues"] & (TSelection extends Record<string, any> ? {
290
+ }> : OmitRelationFields<BaseShape, TRegistry[TTableName]["rawSchema"]> : never;
291
+ type DeriveViewDefaults<TTableName extends keyof TRegistry, TSelection, TRegistry extends RegistryShape, Depth extends any[] = []> = Prettify<TRegistry[TTableName]["zodSchemas"]["defaultValues"] & (TSelection extends Record<string, any> ? {
321
292
  -readonly [K in keyof TSelection & keyof TRegistry[TTableName]["rawSchema"]]?: TRegistry[TTableName]["rawSchema"][K] extends {
322
293
  config: {
323
294
  sql: {
@@ -325,28 +296,18 @@ type _Internal_DeriveViewDefaults<TTableName extends keyof TRegistry, TSelection
325
296
  schema: any;
326
297
  };
327
298
  };
328
- } ? GetRelationRegistryKey<TRegistry[TTableName]["rawSchema"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? RelType extends "hasMany" | "manyToMany" ? _Internal_DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
299
+ } ? GetRelationRegistryKey<TRegistry[TTableName]["rawSchema"][K], TRegistry> extends infer TargetKey ? TargetKey extends keyof TRegistry ? RelType extends "hasMany" | "manyToMany" ? DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
329
300
  ...Depth,
330
301
  1
331
- ]>[] : _Internal_DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
302
+ ]>[] : DeriveViewDefaults<TargetKey, TSelection[K], TRegistry, [
332
303
  ...Depth,
333
304
  1
334
305
  ]> | null : never : never : never;
335
306
  } : {})>;
336
- export type DeriveViewResult<TTableName extends keyof TRegistry, TSelection, TRegistry extends Record<string, {
337
- definition: Record<string, any> & {
338
- _tableName: string;
339
- };
340
- schemas: {
341
- sql: z.ZodObject<any>;
342
- client: z.ZodObject<any>;
343
- validation: z.ZodObject<any>;
344
- };
345
- defaults: Record<string, any>;
346
- }>> = {
347
- sql: TRegistry[TTableName]["schemas"]["sql"];
348
- client: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "client">>;
349
- validation: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "validation">>;
307
+ export type DeriveViewResult<TTableName extends keyof TRegistry, TSelection, TRegistry extends RegistryShape> = {
308
+ sql: TRegistry[TTableName]["zodSchemas"]["sqlSchema"];
309
+ client: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "clientSchema">>;
310
+ validation: z.ZodObject<_DeriveViewShape<TTableName, TSelection, TRegistry, "validationSchema">>;
350
311
  defaults: DeriveViewDefaults<TTableName, TSelection, TRegistry>;
351
312
  };
352
313
  type NavigationProxy<CurrentTable extends string, Registry extends RegistryShape> = CurrentTable extends keyof Registry ? {
@@ -355,18 +316,6 @@ type NavigationProxy<CurrentTable extends string, Registry extends RegistryShape
355
316
  type NavigationToSelection<Nav> = Nav extends object ? {
356
317
  [K in keyof Nav]?: boolean | NavigationToSelection<Nav[K]>;
357
318
  } : never;
358
- type BuildZodShape<TTableName extends keyof TRegistry, TSelection, TKey extends "clientSchema" | "validationSchema", TRegistry extends RegistryShape> = TRegistry[TTableName]["zodSchemas"][TKey] extends z.ZodObject<infer Base> ? TSelection extends Record<string, any> ? // First get the base fields without relations
359
- {
360
- [K in keyof Base as K extends keyof TRegistry[TTableName]["rawSchema"] ? IsRelationField<TRegistry[TTableName]["rawSchema"][K]> extends true ? never : K : K]: Base[K];
361
- } & {
362
- [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 {
363
- config: {
364
- sql: {
365
- type: infer RelType;
366
- };
367
- };
368
- } ? RelType extends "hasMany" | "manyToMany" ? z.ZodArray<z.ZodObject<TSelection[K] extends true ? OmitRelations<TRegistry[TargetKey]["zodSchemas"][TKey] extends z.ZodObject<infer Shape> ? Shape : never, TRegistry[TargetKey]["rawSchema"]> : BuildZodShape<TargetKey, TSelection[K], TKey, TRegistry>>> : z.ZodOptional<z.ZodObject<TSelection[K] extends true ? OmitRelations<TRegistry[TargetKey]["zodSchemas"][TKey] extends z.ZodObject<infer Shape> ? Shape : never, TRegistry[TargetKey]["rawSchema"]> : BuildZodShape<TargetKey, TSelection[K], TKey, TRegistry>>> : never : never : never;
369
- } : Base : never;
370
319
  export type OmitRelations<Shape, RawSchema> = Omit<Shape, {
371
320
  [K in keyof Shape]: K extends keyof RawSchema ? RawSchema[K] extends {
372
321
  config: {
@@ -389,7 +338,6 @@ type RegistryShape = Record<string, {
389
338
  }>;
390
339
  type CreateSchemaBoxReturn<S extends Record<string, SchemaWithPlaceholders>, R extends ResolutionMap<S>, Resolved extends RegistryShape = ResolvedRegistryWithSchemas<S, R> extends RegistryShape ? ResolvedRegistryWithSchemas<S, R> : RegistryShape> = {
391
340
  [K in keyof Resolved]: {
392
- schemaKey: K;
393
341
  definition: Resolved[K]["rawSchema"];
394
342
  schemas: {
395
343
  sql: Resolved[K]["zodSchemas"]["sqlSchema"];
@@ -403,12 +351,7 @@ type CreateSchemaBoxReturn<S extends Record<string, SchemaWithPlaceholders>, R e
403
351
  defaults: Resolved[K]["zodSchemas"]["defaultValues"];
404
352
  nav: NavigationProxy<K & string, Resolved>;
405
353
  RelationSelection: NavigationToSelection<NavigationProxy<K & string, Resolved>>;
406
- createView: <const TSelection extends NavigationToSelection<NavigationProxy<K & string, Resolved>>>(selection: TSelection) => {
407
- sql: Resolved[K]["zodSchemas"]["sqlSchema"];
408
- client: z.ZodObject<BuildZodShape<K & string, TSelection, "clientSchema", Resolved>>;
409
- validation: z.ZodObject<BuildZodShape<K & string, TSelection, "validationSchema", Resolved>>;
410
- defaults: Prettify<_Internal_DeriveViewDefaults<K & string, TSelection, Resolved>>;
411
- };
354
+ createView: <const TSelection extends NavigationToSelection<NavigationProxy<K & string, Resolved>>>(selection: TSelection) => DeriveViewResult<K & string, TSelection, Resolved>;
412
355
  };
413
356
  };
414
357
  export declare function createSchemaBox<S extends Record<string, SchemaWithPlaceholders>, R extends ResolutionMap<S>>(schemas: S, resolver: (proxy: SchemaProxy<S>) => R): CreateSchemaBoxReturn<S, R>;
package/dist/schema.js CHANGED
@@ -174,14 +174,10 @@ function createBuilder(config) {
174
174
  }
175
175
  else {
176
176
  // No schema provided, create from value type
177
- if (typeof actualValue === "string") {
178
- baseSchema = z.string();
179
- }
180
- else if (typeof actualValue === "number") {
181
- baseSchema = z.number();
182
- }
183
- else if (typeof actualValue === "boolean") {
184
- baseSchema = z.boolean();
177
+ if (typeof actualValue === "string" ||
178
+ typeof actualValue === "number" ||
179
+ typeof actualValue === "boolean") {
180
+ baseSchema = z.literal(actualValue);
185
181
  }
186
182
  else if (actualValue instanceof Date) {
187
183
  baseSchema = z.date();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-shape",
3
- "version": "0.5.122",
3
+ "version": "0.5.123",
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",