cogsbox-shape 0.5.71 → 0.5.72

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
@@ -55,12 +55,24 @@ type SQLToZodType<T extends SQLType, TDefault extends boolean> = T["pk"] extends
55
55
  default: "CURRENT_TIMESTAMP";
56
56
  } ? TDefault extends true ? never : z.ZodDate : z.ZodDate : never;
57
57
  type ZodTypeFromPrimitive<T> = T extends string ? z.ZodString : T extends number ? z.ZodNumber : T extends boolean ? z.ZodBoolean : T extends Date ? z.ZodDate : z.ZodAny;
58
+ type IsLiteralType<T> = T extends string ? string extends T ? false : true : T extends number ? number extends T ? false : true : T extends boolean ? boolean extends T ? false : true : false;
58
59
  interface IBuilderMethods<T extends SQLType | RelationConfig<any>, TSql extends z.ZodTypeAny, TNew extends z.ZodTypeAny, TInitialValue, TClient extends z.ZodTypeAny, TValidation extends z.ZodTypeAny> {
59
60
  initialState: {
60
61
  <const TResult>(defaultValue: TResult): TResult extends () => infer R ? R extends z.ZodTypeAny ? Prettify<Builder<"new", T, TSql, R, z.infer<R>, InferSmartClientType<TSql, R>, InferSmartClientType<TSql, R>>> : Prettify<Builder<"new", T, TSql, z.ZodLiteral<R>, R, z.ZodUnion<[TSql, z.ZodLiteral<R>]>, z.ZodUnion<[TSql, z.ZodLiteral<R>]>>> : TResult extends z.ZodTypeAny ? Prettify<Builder<"new", T, TSql, TResult, z.infer<TResult>, InferSmartClientType<TSql, TResult>, InferSmartClientType<TSql, TResult>>> : TResult extends string | number | boolean ? Prettify<Builder<"new", T, TSql, z.ZodLiteral<TResult>, TResult, z.ZodUnion<[TSql, z.ZodLiteral<TResult>]>, z.ZodUnion<[TSql, z.ZodLiteral<TResult>]>>> : Prettify<Builder<"new", T, TSql, ZodTypeFromPrimitive<TResult>, TResult, InferSmartClientType<TSql, ZodTypeFromPrimitive<TResult>>, InferSmartClientType<TSql, ZodTypeFromPrimitive<TResult>>>>;
61
62
  <TNewNext extends z.ZodTypeAny, const TDefaultNext>(schema: ((tools: {
62
63
  sql: TSql;
63
- }) => TNewNext) | TNewNext, defaultValue: TDefaultNext | (() => TDefaultNext)): Prettify<Builder<"new", T, TSql, TNewNext, TDefaultNext extends () => infer R ? R : TDefaultNext, InferSmartClientType<TSql, TNewNext>, InferSmartClientType<TSql, TNewNext>>>;
64
+ }) => TNewNext) | TNewNext, defaultValue: TDefaultNext): Prettify<Builder<"new", T, TSql, z.ZodUnion<[
65
+ TNewNext,
66
+ z.ZodLiteral<TDefaultNext extends () => infer R ? R : TDefaultNext>
67
+ ]>, IsLiteralType<z.infer<TNewNext>> extends true ? TDefaultNext extends () => infer R ? R : TDefaultNext : z.infer<TNewNext>, z.ZodUnion<[
68
+ TSql,
69
+ TNewNext,
70
+ z.ZodLiteral<TDefaultNext extends () => infer R ? R : TDefaultNext>
71
+ ]>, z.ZodUnion<[
72
+ TSql,
73
+ TNewNext,
74
+ z.ZodLiteral<TDefaultNext extends () => infer R ? R : TDefaultNext>
75
+ ]>>>;
64
76
  };
65
77
  client: <TClientNext extends z.ZodTypeAny>(schema: ((tools: {
66
78
  sql: TSql;
package/dist/schema.js CHANGED
@@ -156,8 +156,12 @@ function createBuilder(config) {
156
156
  : schemaOrDefault
157
157
  : config.sqlZod; // If only a primitive is passed, the "new" schema is still the SQL one.
158
158
  const finalDefaultValue = hasSchemaArg
159
- ? defaultValue()
160
- : schemaOrDefault;
159
+ ? isFunction(defaultValue)
160
+ ? defaultValue() // If it's a function, call it
161
+ : defaultValue // If it's a direct value, use it as-is
162
+ : isFunction(schemaOrDefault)
163
+ ? schemaOrDefault()
164
+ : schemaOrDefault;
161
165
  const newCompletedStages = new Set(completedStages);
162
166
  newCompletedStages.add("new");
163
167
  // ---- THIS IS THE RUNTIME FIX THAT MATCHES YOUR INTERFACE ----
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogsbox-shape",
3
- "version": "0.5.71",
3
+ "version": "0.5.72",
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",