cogsbox-shape 0.5.122 → 0.5.124
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 +14 -70
- package/dist/schema.js +4 -8
- package/package.json +1 -1
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
|
-
|
|
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]["
|
|
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" ?
|
|
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
|
-
]>[] :
|
|
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
|
|
337
|
-
|
|
338
|
-
|
|
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,8 +338,8 @@ 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"];
|
|
342
|
+
schemaKey: K;
|
|
394
343
|
schemas: {
|
|
395
344
|
sql: Resolved[K]["zodSchemas"]["sqlSchema"];
|
|
396
345
|
client: Resolved[K]["zodSchemas"]["clientSchema"];
|
|
@@ -403,12 +352,7 @@ type CreateSchemaBoxReturn<S extends Record<string, SchemaWithPlaceholders>, R e
|
|
|
403
352
|
defaults: Resolved[K]["zodSchemas"]["defaultValues"];
|
|
404
353
|
nav: NavigationProxy<K & string, Resolved>;
|
|
405
354
|
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
|
-
};
|
|
355
|
+
createView: <const TSelection extends NavigationToSelection<NavigationProxy<K & string, Resolved>>>(selection: TSelection) => DeriveViewResult<K & string, TSelection, Resolved>;
|
|
412
356
|
};
|
|
413
357
|
};
|
|
414
358
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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.
|
|
3
|
+
"version": "0.5.124",
|
|
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",
|