drizzle-valibot 0.4.2-69a2ca0 → 0.4.2-7cb6516
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 +1 -1
- package/column.d.mts +1 -1
- package/column.d.ts +1 -1
- package/column.types.d.cts +33 -32
- package/column.types.d.mts +33 -32
- package/column.types.d.ts +33 -32
- package/index.cjs +165 -216
- package/index.cjs.map +1 -1
- package/index.mjs +165 -216
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/schema.types.d.cts +4 -4
- package/schema.types.d.mts +4 -4
- package/schema.types.d.ts +4 -4
- package/schema.types.internal.d.cts +2 -2
- package/schema.types.internal.d.mts +2 -2
- package/schema.types.internal.d.ts +2 -2
- package/utils.d.cts +3 -7
- package/utils.d.mts +3 -7
- package/utils.d.ts +3 -7
package/column.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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 {
|
|
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>;
|
package/column.types.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Assume, Column
|
|
1
|
+
import type { Assume, Column } from 'drizzle-orm';
|
|
2
2
|
import type * as v from 'valibot';
|
|
3
|
-
import type { IsNever, Json, RemoveNeverElements } from "./utils.cjs";
|
|
3
|
+
import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from "./utils.cjs";
|
|
4
4
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
5
|
_: {
|
|
6
6
|
baseColumn: Column | undefined;
|
|
@@ -10,47 +10,48 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
10
|
readonly [K in TEnumValues[number]]: K;
|
|
11
11
|
};
|
|
12
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
13
|
+
max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
|
|
14
|
+
length: number | undefined;
|
|
15
|
+
}>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
|
|
16
|
+
dimensions: number;
|
|
17
|
+
}>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
|
|
18
|
+
size: number | undefined;
|
|
19
|
+
}>['size'] : undefined;
|
|
20
|
+
fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
|
|
15
21
|
};
|
|
16
22
|
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>;
|
|
17
|
-
type GetArraySchema<
|
|
18
|
-
|
|
19
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
20
|
-
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<[
|
|
23
|
+
type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], T['_']['enumValues'], HasBaseColumn<T> extends true ? Assume<T['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<T>>, undefined>;
|
|
24
|
+
export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
21
25
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
22
26
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
23
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
24
|
-
v.
|
|
25
|
-
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
28
|
+
v.StringSchema<undefined>,
|
|
29
|
+
v.RegexAction<string, undefined>,
|
|
30
|
+
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
31
|
+
]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
32
|
+
GetArraySchema<Assume<TBaseColumn, Column>>,
|
|
33
|
+
GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
|
|
34
|
+
]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
|
|
35
|
+
readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
|
|
36
|
+
}, undefined> : TColumnType extends 'PgGeometry' | 'PgPointTuple' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TColumnType extends 'PgLine' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotPrimitiveType<Assume<TData, any[]>[number], '', {
|
|
37
|
+
noPipe: true;
|
|
38
|
+
}>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
|
|
39
|
+
readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
|
|
40
|
+
noPipe: true;
|
|
41
|
+
}>;
|
|
42
|
+
}, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
|
|
43
|
+
type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
|
|
34
44
|
v.NumberSchema<undefined>,
|
|
35
45
|
v.MinValueAction<number, number, undefined>,
|
|
36
46
|
v.MaxValueAction<number, number, undefined>,
|
|
37
|
-
|
|
38
|
-
]>> :
|
|
47
|
+
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
|
|
48
|
+
]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
|
|
39
49
|
v.BigintSchema<undefined>,
|
|
40
50
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
41
51
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
42
|
-
]> :
|
|
43
|
-
readonly [K in Assume<TEnum, string[]>[number]]: K;
|
|
44
|
-
}, undefined> : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
45
|
-
v.StringSchema<undefined>,
|
|
46
|
-
v.RegexAction<string, undefined>,
|
|
47
|
-
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
48
|
-
]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
|
|
49
|
-
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['_'], {
|
|
50
|
-
baseColumn: Column;
|
|
51
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
52
|
+
]> : 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;
|
|
52
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
53
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>;
|
|
54
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>;
|
|
55
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
56
|
+
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, 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;
|
|
56
57
|
export {};
|
package/column.types.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Assume, Column
|
|
1
|
+
import type { Assume, Column } from 'drizzle-orm';
|
|
2
2
|
import type * as v from 'valibot';
|
|
3
|
-
import type { IsNever, Json, RemoveNeverElements } from "./utils.mjs";
|
|
3
|
+
import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from "./utils.mjs";
|
|
4
4
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
5
|
_: {
|
|
6
6
|
baseColumn: Column | undefined;
|
|
@@ -10,47 +10,48 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
10
|
readonly [K in TEnumValues[number]]: K;
|
|
11
11
|
};
|
|
12
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
13
|
+
max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
|
|
14
|
+
length: number | undefined;
|
|
15
|
+
}>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
|
|
16
|
+
dimensions: number;
|
|
17
|
+
}>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
|
|
18
|
+
size: number | undefined;
|
|
19
|
+
}>['size'] : undefined;
|
|
20
|
+
fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
|
|
15
21
|
};
|
|
16
22
|
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>;
|
|
17
|
-
type GetArraySchema<
|
|
18
|
-
|
|
19
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
20
|
-
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<[
|
|
23
|
+
type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], T['_']['enumValues'], HasBaseColumn<T> extends true ? Assume<T['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<T>>, undefined>;
|
|
24
|
+
export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
21
25
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
22
26
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
23
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
24
|
-
v.
|
|
25
|
-
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
28
|
+
v.StringSchema<undefined>,
|
|
29
|
+
v.RegexAction<string, undefined>,
|
|
30
|
+
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
31
|
+
]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
32
|
+
GetArraySchema<Assume<TBaseColumn, Column>>,
|
|
33
|
+
GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
|
|
34
|
+
]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
|
|
35
|
+
readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
|
|
36
|
+
}, undefined> : TColumnType extends 'PgGeometry' | 'PgPointTuple' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TColumnType extends 'PgLine' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotPrimitiveType<Assume<TData, any[]>[number], '', {
|
|
37
|
+
noPipe: true;
|
|
38
|
+
}>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
|
|
39
|
+
readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
|
|
40
|
+
noPipe: true;
|
|
41
|
+
}>;
|
|
42
|
+
}, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
|
|
43
|
+
type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
|
|
34
44
|
v.NumberSchema<undefined>,
|
|
35
45
|
v.MinValueAction<number, number, undefined>,
|
|
36
46
|
v.MaxValueAction<number, number, undefined>,
|
|
37
|
-
|
|
38
|
-
]>> :
|
|
47
|
+
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
|
|
48
|
+
]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
|
|
39
49
|
v.BigintSchema<undefined>,
|
|
40
50
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
41
51
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
42
|
-
]> :
|
|
43
|
-
readonly [K in Assume<TEnum, string[]>[number]]: K;
|
|
44
|
-
}, undefined> : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
45
|
-
v.StringSchema<undefined>,
|
|
46
|
-
v.RegexAction<string, undefined>,
|
|
47
|
-
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
48
|
-
]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
|
|
49
|
-
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['_'], {
|
|
50
|
-
baseColumn: Column;
|
|
51
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
52
|
+
]> : 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;
|
|
52
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
53
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>;
|
|
54
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>;
|
|
55
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
56
|
+
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, 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;
|
|
56
57
|
export {};
|
package/column.types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Assume, Column
|
|
1
|
+
import type { Assume, Column } from 'drizzle-orm';
|
|
2
2
|
import type * as v from 'valibot';
|
|
3
|
-
import type { IsNever, Json, RemoveNeverElements } from './utils.js';
|
|
3
|
+
import type { IsEnumDefined, IsNever, Json, RemoveNeverElements } from './utils.js';
|
|
4
4
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
5
|
_: {
|
|
6
6
|
baseColumn: Column | undefined;
|
|
@@ -10,47 +10,48 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
10
|
readonly [K in TEnumValues[number]]: K;
|
|
11
11
|
};
|
|
12
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
13
|
+
max: TColumn['_']['columnType'] extends 'PgVarchar' | 'SQLiteText' | 'PgChar' | 'MySqlChar' | 'SingleStoreChar' ? Assume<TColumn['_'], {
|
|
14
|
+
length: number | undefined;
|
|
15
|
+
}>['length'] : TColumn['_']['columnType'] extends 'MySqlText' | 'MySqlVarChar' | 'SingleStoreText' | 'SingleStoreVarChar' ? number : TColumn['_']['columnType'] extends 'PgBinaryVector' | 'PgHalfVector' | 'PgVector' ? Assume<TColumn['_'], {
|
|
16
|
+
dimensions: number;
|
|
17
|
+
}>['dimensions'] : TColumn['_']['columnType'] extends 'PgArray' ? Assume<TColumn['_'], {
|
|
18
|
+
size: number | undefined;
|
|
19
|
+
}>['size'] : undefined;
|
|
20
|
+
fixedLength: TColumn['_']['columnType'] extends 'PgChar' | 'PgHalfVector' | 'PgVector' | 'PgArray' | 'MySqlChar' | 'SingleStoreChar' ? true : false;
|
|
15
21
|
};
|
|
16
22
|
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>;
|
|
17
|
-
type GetArraySchema<
|
|
18
|
-
|
|
19
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
20
|
-
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<[
|
|
23
|
+
type GetArraySchema<T extends Column> = v.ArraySchema<GetValibotType<T['_']['data'], T['_']['dataType'], T['_']['columnType'], T['_']['enumValues'], HasBaseColumn<T> extends true ? Assume<T['_']['baseColumn'], Column> : undefined, ExtractAdditionalProperties<T>>, undefined>;
|
|
24
|
+
export type GetValibotType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends string[] | undefined, TBaseColumn extends Column | undefined, TAdditionalProperties extends Record<string, any>> = TColumnType extends 'PgHalfVector' | 'PgVector' ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
21
25
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
22
26
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
23
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
24
|
-
v.
|
|
25
|
-
|
|
26
|
-
]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
readonly
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> : TColumnType extends 'PgUUID' ? v.SchemaWithPipe<[v.StringSchema<undefined>, v.UuidAction<string, undefined>]> : TColumnType extends 'PgBinaryVector' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
28
|
+
v.StringSchema<undefined>,
|
|
29
|
+
v.RegexAction<string, undefined>,
|
|
30
|
+
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
31
|
+
]>> : TBaseColumn extends Column ? TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[
|
|
32
|
+
GetArraySchema<Assume<TBaseColumn, Column>>,
|
|
33
|
+
GetLengthAction<TAdditionalProperties, Assume<TBaseColumn, Column>['_']['data'][]>
|
|
34
|
+
]> : GetArraySchema<Assume<TBaseColumn, Column>> : IsEnumDefined<TEnumValues> extends true ? v.EnumSchema<{
|
|
35
|
+
readonly [K in Assume<TEnumValues, [string, ...string[]]>[number]]: K;
|
|
36
|
+
}, undefined> : TColumnType extends 'PgGeometry' | 'PgPointTuple' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TColumnType extends 'PgLine' ? v.TupleSchema<[v.NumberSchema<undefined>, v.NumberSchema<undefined>, v.NumberSchema<undefined>], undefined> : TData extends Date ? v.DateSchema<undefined> : TData extends Buffer ? v.GenericSchema<Buffer> : TDataType extends 'array' ? v.ArraySchema<GetValibotPrimitiveType<Assume<TData, any[]>[number], '', {
|
|
37
|
+
noPipe: true;
|
|
38
|
+
}>, undefined> : TData extends Record<string, any> ? TColumnType extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? v.GenericSchema<TData> : v.ObjectSchema<{
|
|
39
|
+
readonly [K in keyof TData]: GetValibotPrimitiveType<TData[K], '', {
|
|
40
|
+
noPipe: true;
|
|
41
|
+
}>;
|
|
42
|
+
}, undefined> : TDataType extends 'json' ? v.GenericSchema<Json> : GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties>;
|
|
43
|
+
type GetValibotPrimitiveType<TData, TColumnType, TAdditionalProperties extends Record<string, any>> = TData extends number ? TAdditionalProperties['noPipe'] extends true ? v.NumberSchema<undefined> : v.SchemaWithPipe<RemoveNeverElements<[
|
|
34
44
|
v.NumberSchema<undefined>,
|
|
35
45
|
v.MinValueAction<number, number, undefined>,
|
|
36
46
|
v.MaxValueAction<number, number, undefined>,
|
|
37
|
-
|
|
38
|
-
]>> :
|
|
47
|
+
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
|
|
48
|
+
]>> : TData extends bigint ? TAdditionalProperties['noPipe'] extends true ? v.BigintSchema<undefined> : v.SchemaWithPipe<[
|
|
39
49
|
v.BigintSchema<undefined>,
|
|
40
50
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
41
51
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
42
|
-
]> :
|
|
43
|
-
readonly [K in Assume<TEnum, string[]>[number]]: K;
|
|
44
|
-
}, undefined> : TConstraint extends 'binary' ? v.SchemaWithPipe<RemoveNeverElements<[
|
|
45
|
-
v.StringSchema<undefined>,
|
|
46
|
-
v.RegexAction<string, undefined>,
|
|
47
|
-
TAdditionalProperties['max'] extends number ? GetLengthAction<TAdditionalProperties, string> : never
|
|
48
|
-
]>> : TAdditionalProperties['max'] extends number ? v.SchemaWithPipe<[v.StringSchema<undefined>, GetLengthAction<TAdditionalProperties, string>]> : v.StringSchema<undefined> : v.AnySchema;
|
|
49
|
-
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['_'], {
|
|
50
|
-
baseColumn: Column;
|
|
51
|
-
}>['baseColumn'] : undefined, ExtractAdditionalProperties<TColumn>>;
|
|
52
|
+
]> : 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;
|
|
52
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
53
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>;
|
|
54
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>;
|
|
55
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
56
|
+
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetValibotType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], TColumn['_']['enumValues'], HasBaseColumn<TColumn> extends true ? Assume<TColumn['_']['baseColumn'], Column> : undefined, 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;
|
|
56
57
|
export {};
|