drizzle-valibot 0.4.1 → 0.4.2-08e4e66

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/column.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from "./utils.cjs";
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
package/column.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from "./utils.mjs";
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
package/column.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Column } from 'drizzle-orm';
1
+ import { type Column } from 'drizzle-orm';
2
2
  import * as v from 'valibot';
3
3
  import type { Json } from './utils.js';
4
4
  export declare const literalSchema: v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>, v.NullSchema<undefined>], undefined>;
@@ -1,62 +1,57 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json, RemoveNeverElements } from "./utils.cjs";
4
- export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
5
- enumValues: [string, ...string[]];
6
- } ? TColumn['_']['enumValues'] : undefined;
7
- export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
8
- baseColumn: Column | never | undefined;
9
- } ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
3
+ import type { bigintStringModeSchema } from "./column.cjs";
4
+ import type { IsNever, Json, RemoveNeverElements } from "./utils.cjs";
5
+ export type HasBaseColumn<TColumn> = TColumn extends {
6
+ _: {
7
+ baseColumn: Column | undefined;
8
+ };
9
+ } ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
10
10
  export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
11
  readonly [K in TEnumValues[number]]: K;
12
12
  };
13
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
14
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
15
- length: number | undefined;
16
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
17
- dimensions: number;
18
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
19
- size: number | undefined;
20
- }>['size'] : undefined;
21
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
22
16
  };
23
17
  type GetLengthAction<T extends Record<string, any>, TType extends string | ArrayLike<unknown>> = T['fixedLength'] extends true ? v.LengthAction<TType, number, undefined> : v.MaxLengthAction<TType, number, undefined>;
24
- type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], GetEnumValuesFromColumn<T>, GetBaseColumn<T>, ExtractAdditionalProperties<T>>, undefined>;
25
- export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
26
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
27
23
  GetLengthAction<TAdditionalProperties, number[]>
28
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
29
- v.StringSchema<undefined>,
30
- v.RegexAction<string, undefined>,
31
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
32
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
33
- GetArraySchema<TBaseColumn>,
34
- GetLengthAction<TAdditionalProperties, TBaseColumn['_']['data'][]>
35
- ]> : GetArraySchema<TBaseColumn> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? v.EnumSchema<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>, undefined> : TData extends infer TTuple extends [any, ...any[]] ? v.TupleSchema<Assume<{
36
- [K in keyof TTuple]: GetValibotType<TTuple[K], string, string, undefined, undefined, {
37
- noPipe: true;
38
- }>;
39
- }, [
40
- any,
41
- ...any[]
42
- ]>, undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotType<Assume<TData, any[]>[number], string, string, undefined, undefined, {
43
- noPipe: true;
44
- }>, undefined> : TData extends infer TDict extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TDict> : v.ObjectSchema<{
45
- readonly [K in keyof TDict]: GetValibotType<TDict[K], string, string, undefined, undefined, {
46
- noPipe: true;
47
- }>;
48
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
49
35
  v.NumberSchema<undefined>,
50
36
  v.MinValueAction<number, number, undefined>,
51
37
  v.MaxValueAction<number, number, undefined>,
52
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
53
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
54
40
  v.BigintSchema<undefined>,
55
41
  v.MinValueAction<bigint, bigint, undefined>,
56
42
  v.MaxValueAction<bigint, bigint, undefined>
57
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
58
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
59
- type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
60
- type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
61
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
54
+ type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
+ type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
62
57
  export {};
@@ -1,62 +1,57 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json, RemoveNeverElements } from "./utils.mjs";
4
- export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
5
- enumValues: [string, ...string[]];
6
- } ? TColumn['_']['enumValues'] : undefined;
7
- export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
8
- baseColumn: Column | never | undefined;
9
- } ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
3
+ import type { bigintStringModeSchema } from "./column.mjs";
4
+ import type { IsNever, Json, RemoveNeverElements } from "./utils.mjs";
5
+ export type HasBaseColumn<TColumn> = TColumn extends {
6
+ _: {
7
+ baseColumn: Column | undefined;
8
+ };
9
+ } ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
10
10
  export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
11
  readonly [K in TEnumValues[number]]: K;
12
12
  };
13
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
14
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
15
- length: number | undefined;
16
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
17
- dimensions: number;
18
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
19
- size: number | undefined;
20
- }>['size'] : undefined;
21
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
22
16
  };
23
17
  type GetLengthAction<T extends Record<string, any>, TType extends string | ArrayLike<unknown>> = T['fixedLength'] extends true ? v.LengthAction<TType, number, undefined> : v.MaxLengthAction<TType, number, undefined>;
24
- type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], GetEnumValuesFromColumn<T>, GetBaseColumn<T>, ExtractAdditionalProperties<T>>, undefined>;
25
- export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
26
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
27
23
  GetLengthAction<TAdditionalProperties, number[]>
28
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
29
- v.StringSchema<undefined>,
30
- v.RegexAction<string, undefined>,
31
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
32
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
33
- GetArraySchema<TBaseColumn>,
34
- GetLengthAction<TAdditionalProperties, TBaseColumn['_']['data'][]>
35
- ]> : GetArraySchema<TBaseColumn> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? v.EnumSchema<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>, undefined> : TData extends infer TTuple extends [any, ...any[]] ? v.TupleSchema<Assume<{
36
- [K in keyof TTuple]: GetValibotType<TTuple[K], string, string, undefined, undefined, {
37
- noPipe: true;
38
- }>;
39
- }, [
40
- any,
41
- ...any[]
42
- ]>, undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotType<Assume<TData, any[]>[number], string, string, undefined, undefined, {
43
- noPipe: true;
44
- }>, undefined> : TData extends infer TDict extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TDict> : v.ObjectSchema<{
45
- readonly [K in keyof TDict]: GetValibotType<TDict[K], string, string, undefined, undefined, {
46
- noPipe: true;
47
- }>;
48
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
49
35
  v.NumberSchema<undefined>,
50
36
  v.MinValueAction<number, number, undefined>,
51
37
  v.MaxValueAction<number, number, undefined>,
52
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
53
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
54
40
  v.BigintSchema<undefined>,
55
41
  v.MinValueAction<bigint, bigint, undefined>,
56
42
  v.MaxValueAction<bigint, bigint, undefined>
57
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
58
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
59
- type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
60
- type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
61
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
54
+ type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
+ type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
62
57
  export {};
package/column.types.d.ts CHANGED
@@ -1,62 +1,57 @@
1
- import type { Assume, Column } from 'drizzle-orm';
1
+ import type { Assume, Column, ColumnDataConstraint, ColumnDataType, ColumnTypeData, ExtractColumnTypeData } from 'drizzle-orm';
2
2
  import type * as v from 'valibot';
3
- import type { ArrayHasAtLeastOneValue, ColumnIsGeneratedAlwaysAs, IsNever, Json, RemoveNeverElements } from './utils.js';
4
- export type GetEnumValuesFromColumn<TColumn extends Column> = TColumn['_'] extends {
5
- enumValues: [string, ...string[]];
6
- } ? TColumn['_']['enumValues'] : undefined;
7
- export type GetBaseColumn<TColumn extends Column> = TColumn['_'] extends {
8
- baseColumn: Column | never | undefined;
9
- } ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
3
+ import type { bigintStringModeSchema } from './column.js';
4
+ import type { IsNever, Json, RemoveNeverElements } from './utils.js';
5
+ export type HasBaseColumn<TColumn> = TColumn extends {
6
+ _: {
7
+ baseColumn: Column | undefined;
8
+ };
9
+ } ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
10
10
  export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
11
  readonly [K in TEnumValues[number]]: K;
12
12
  };
13
13
  export type ExtractAdditionalProperties<TColumn extends Column> = {
14
- max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
15
- length: number | undefined;
16
- }>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
17
- dimensions: number;
18
- }>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
19
- size: number | undefined;
20
- }>['size'] : undefined;
21
- fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
14
+ max: TColumn['length'];
15
+ fixedLength: TColumn['isLengthExact'] extends true ? true : false;
22
16
  };
23
17
  type GetLengthAction<T extends Record<string, any>, TType extends string | ArrayLike<unknown>> = T['fixedLength'] extends true ? v.LengthAction<TType, number, undefined> : v.MaxLengthAction<TType, number, undefined>;
24
- type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], GetEnumValuesFromColumn<T>, GetBaseColumn<T>, ExtractAdditionalProperties<T>>, undefined>;
25
- export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
18
+ type GetArraySchema<TColumn extends Column, TType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TType['type'], TType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
19
+ baseColumn: Column;
20
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
21
+ export type GetValibotType<TData, TColumnType extends ColumnDataType, TConstraint extends ColumnDataConstraint | undefined, TEnum extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'array' ? TConstraint extends 'vector' | 'halfvector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
26
22
  v.ArraySchema<v.NumberSchema<undefined>, undefined>,
27
23
  GetLengthAction<TAdditionalProperties, number[]>
28
- ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
29
- v.StringSchema<undefined>,
30
- v.RegexAction<string, undefined>,
31
- TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
32
- ]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
33
- GetArraySchema<TBaseColumn>,
34
- GetLengthAction<TAdditionalProperties, TBaseColumn['_']['data'][]>
35
- ]> : GetArraySchema<TBaseColumn> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? v.EnumSchema<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>, undefined> : TData extends infer TTuple extends [any, ...any[]] ? v.TupleSchema<Assume<{
36
- [K in keyof TTuple]: GetValibotType<TTuple[K], string, string, undefined, undefined, {
37
- noPipe: true;
38
- }>;
39
- }, [
40
- any,
41
- ...any[]
42
- ]>, undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotType<Assume<TData, any[]>[number], string, string, undefined, undefined, {
43
- noPipe: true;
44
- }>, undefined> : TData extends infer TDict extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TDict> : v.ObjectSchema<{
45
- readonly [K in keyof TDict]: GetValibotType<TDict[K], string, string, undefined, undefined, {
46
- noPipe: true;
47
- }>;
48
- }, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
24
+ ]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TConstraint extends 'int64vector' ? v.ArraySchema<v.BigintSchema<undefined>, undefined> : TConstraint extends 'geometry' | 'point' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'line' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TConstraint extends 'basecolumn' ? TBaseColumn extends Column ? (GetArraySchema<TBaseColumn> extends infer ArrInternals extends v.BaseSchema<any, any, v.BaseIssue<any>> ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
25
+ v.ArraySchema<ArrInternals, undefined>,
26
+ GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
27
+ ]> : v.ArraySchema<ArrInternals, undefined> : v.AnySchema) : v.ArraySchema<v.AnySchema, undefined> : v.ArraySchema<v.AnySchema, undefined> : TColumnType extends 'object' ? TConstraint extends 'geometry' | 'point' ? v.ObjectSchema<{
28
+ readonly x: v.NumberSchema<undefined>;
29
+ readonly y: v.NumberSchema<undefined>;
30
+ }, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
31
+ readonly a: v.NumberSchema<undefined>;
32
+ readonly b: v.NumberSchema<undefined>;
33
+ readonly c: v.NumberSchema<undefined>;
34
+ }, undefined> : TConstraint extends 'date' ? v.DateSchema<undefined> : TConstraint extends 'buffer' ? v.GenericSchema<Buffer> : TConstraint extends 'json' ? v.GenericSchema<TData extends Record<string, any> ? TData : Json> : v.LooseObjectSchema<{}, undefined> : TColumnType extends 'custom' ? v.AnySchema : TColumnType extends 'number' ? v.SchemaWithPipe<RemoveNeverElements<[
49
35
  v.NumberSchema<undefined>,
50
36
  v.MinValueAction<number, number, undefined>,
51
37
  v.MaxValueAction<number, number, undefined>,
52
- TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? v.IntegerAction<number, undefined> : never
53
- ]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
38
+ TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
39
+ ]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
54
40
  v.BigintSchema<undefined>,
55
41
  v.MinValueAction<bigint, bigint, undefined>,
56
42
  v.MaxValueAction<bigint, bigint, undefined>
57
- ]> : TData extends boolean ? v.BooleanSchema<undefined> : TData extends string ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
43
+ ]> : v.BigintSchema<undefined> : TColumnType extends 'boolean' ? v.BooleanSchema<undefined> : TColumnType extends 'string' ? TConstraint extends 'uuid' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TConstraint extends 'enum' ? v.EnumSchema<{
44
+ readonly [K in Assume<TEnum, string[]>[number]]: K;
45
+ }, undefined> : TConstraint extends 'int64' ? typeof bigintStringModeSchema : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
46
+ v.StringSchema<undefined>,
47
+ v.RegexAction<string, undefined>,
48
+ TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
49
+ ]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
50
+ export type GetValibotTypeFromColumn<TColumn extends Column, TDataType extends ColumnTypeData = ExtractColumnTypeData<TColumn['_']['dataType']>> = GetValibotType<TColumn['_']['data'], TDataType['type'], TDataType['constraint'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_'], {
51
+ baseColumn: Column;
52
+ }>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
58
53
  type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
59
- type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
60
- type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
61
- export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>, ExtractAdditionalProperties<TColumn>> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
54
+ type HandleInsertColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? v.OptionalSchema<TSchema, undefined> : TSchema : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
55
+ type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? v.OptionalSchema<TSchema, undefined> : v.OptionalSchema<v.NullableSchema<TSchema, undefined>, undefined>;
56
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotTypeFromColumn<TColumn> extends infer TSchema extends v.GenericSchema ? TSchema extends v.AnySchema ? v.AnySchema : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : v.AnySchema;
62
57
  export {};