drizzle-valibot 0.4.1 → 0.4.2-2acab7f
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 +39 -45
- package/column.types.d.mts +39 -45
- package/column.types.d.ts +39 -45
- package/index.cjs +216 -165
- package/index.cjs.map +1 -1
- package/index.mjs +216 -165
- package/index.mjs.map +1 -1
- package/package.json +5 -5
- 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 +11 -13
- package/schema.types.internal.d.mts +11 -13
- package/schema.types.internal.d.ts +11 -13
- package/utils.d.cts +8 -4
- package/utils.d.mts +8 -4
- package/utils.d.ts +8 -4
package/column.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
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
|
|
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
|
|
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,62 +1,56 @@
|
|
|
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 {
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
|
3
|
+
import type { IsNever, Json, RemoveNeverElements } from "./utils.cjs";
|
|
4
|
+
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
|
+
_: {
|
|
6
|
+
baseColumn: Column | undefined;
|
|
7
|
+
};
|
|
8
|
+
} ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
|
|
10
9
|
export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
11
10
|
readonly [K in TEnumValues[number]]: K;
|
|
12
11
|
};
|
|
13
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
14
|
-
max: TColumn['
|
|
15
|
-
|
|
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;
|
|
13
|
+
max: TColumn['length'];
|
|
14
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
22
15
|
};
|
|
23
16
|
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<
|
|
25
|
-
|
|
17
|
+
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['_'], {
|
|
18
|
+
baseColumn: Column;
|
|
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<[
|
|
26
21
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
27
22
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
28
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
29
|
-
v.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
23
|
+
]> : v.ArraySchema<v.NumberSchema<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<[
|
|
24
|
+
v.ArraySchema<ArrInternals, undefined>,
|
|
25
|
+
GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
|
|
26
|
+
]> : 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<{
|
|
27
|
+
readonly x: v.NumberSchema<undefined>;
|
|
28
|
+
readonly y: v.NumberSchema<undefined>;
|
|
29
|
+
}, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
|
|
30
|
+
readonly a: v.NumberSchema<undefined>;
|
|
31
|
+
readonly b: v.NumberSchema<undefined>;
|
|
32
|
+
readonly c: v.NumberSchema<undefined>;
|
|
33
|
+
}, 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
34
|
v.NumberSchema<undefined>,
|
|
50
35
|
v.MinValueAction<number, number, undefined>,
|
|
51
36
|
v.MaxValueAction<number, number, undefined>,
|
|
52
|
-
|
|
53
|
-
]>> :
|
|
37
|
+
TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
|
|
38
|
+
]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
|
|
54
39
|
v.BigintSchema<undefined>,
|
|
55
40
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
56
41
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
57
|
-
]> :
|
|
42
|
+
]> : 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<{
|
|
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>>;
|
|
58
52
|
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> =
|
|
60
|
-
type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> =
|
|
61
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
53
|
+
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
|
+
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> = 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
56
|
export {};
|
package/column.types.d.mts
CHANGED
|
@@ -1,62 +1,56 @@
|
|
|
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 {
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
|
3
|
+
import type { IsNever, Json, RemoveNeverElements } from "./utils.mjs";
|
|
4
|
+
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
|
+
_: {
|
|
6
|
+
baseColumn: Column | undefined;
|
|
7
|
+
};
|
|
8
|
+
} ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
|
|
10
9
|
export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
11
10
|
readonly [K in TEnumValues[number]]: K;
|
|
12
11
|
};
|
|
13
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
14
|
-
max: TColumn['
|
|
15
|
-
|
|
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;
|
|
13
|
+
max: TColumn['length'];
|
|
14
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
22
15
|
};
|
|
23
16
|
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<
|
|
25
|
-
|
|
17
|
+
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['_'], {
|
|
18
|
+
baseColumn: Column;
|
|
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<[
|
|
26
21
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
27
22
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
28
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
29
|
-
v.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
23
|
+
]> : v.ArraySchema<v.NumberSchema<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<[
|
|
24
|
+
v.ArraySchema<ArrInternals, undefined>,
|
|
25
|
+
GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
|
|
26
|
+
]> : 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<{
|
|
27
|
+
readonly x: v.NumberSchema<undefined>;
|
|
28
|
+
readonly y: v.NumberSchema<undefined>;
|
|
29
|
+
}, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
|
|
30
|
+
readonly a: v.NumberSchema<undefined>;
|
|
31
|
+
readonly b: v.NumberSchema<undefined>;
|
|
32
|
+
readonly c: v.NumberSchema<undefined>;
|
|
33
|
+
}, 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
34
|
v.NumberSchema<undefined>,
|
|
50
35
|
v.MinValueAction<number, number, undefined>,
|
|
51
36
|
v.MaxValueAction<number, number, undefined>,
|
|
52
|
-
|
|
53
|
-
]>> :
|
|
37
|
+
TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
|
|
38
|
+
]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
|
|
54
39
|
v.BigintSchema<undefined>,
|
|
55
40
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
56
41
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
57
|
-
]> :
|
|
42
|
+
]> : 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<{
|
|
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>>;
|
|
58
52
|
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> =
|
|
60
|
-
type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> =
|
|
61
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
53
|
+
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
|
+
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> = 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
56
|
export {};
|
package/column.types.d.ts
CHANGED
|
@@ -1,62 +1,56 @@
|
|
|
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 {
|
|
4
|
-
export type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} ? IsNever<TColumn['_']['baseColumn']> extends false ? TColumn['_']['baseColumn'] : undefined : undefined;
|
|
3
|
+
import type { IsNever, Json, RemoveNeverElements } from './utils.js';
|
|
4
|
+
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
|
+
_: {
|
|
6
|
+
baseColumn: Column | undefined;
|
|
7
|
+
};
|
|
8
|
+
} ? IsNever<TColumn['_']['baseColumn']> extends false ? true : false : false;
|
|
10
9
|
export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
11
10
|
readonly [K in TEnumValues[number]]: K;
|
|
12
11
|
};
|
|
13
12
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
14
|
-
max: TColumn['
|
|
15
|
-
|
|
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;
|
|
13
|
+
max: TColumn['length'];
|
|
14
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
22
15
|
};
|
|
23
16
|
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<
|
|
25
|
-
|
|
17
|
+
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['_'], {
|
|
18
|
+
baseColumn: Column;
|
|
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<[
|
|
26
21
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
27
22
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
28
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
29
|
-
v.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
23
|
+
]> : v.ArraySchema<v.NumberSchema<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<[
|
|
24
|
+
v.ArraySchema<ArrInternals, undefined>,
|
|
25
|
+
GetLengthAction<TAdditionalProperties, Assume<TData, string | ArrayLike<unknown>>>
|
|
26
|
+
]> : 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<{
|
|
27
|
+
readonly x: v.NumberSchema<undefined>;
|
|
28
|
+
readonly y: v.NumberSchema<undefined>;
|
|
29
|
+
}, undefined> : TConstraint extends 'line' ? v.ObjectSchema<{
|
|
30
|
+
readonly a: v.NumberSchema<undefined>;
|
|
31
|
+
readonly b: v.NumberSchema<undefined>;
|
|
32
|
+
readonly c: v.NumberSchema<undefined>;
|
|
33
|
+
}, 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
34
|
v.NumberSchema<undefined>,
|
|
50
35
|
v.MinValueAction<number, number, undefined>,
|
|
51
36
|
v.MaxValueAction<number, number, undefined>,
|
|
52
|
-
|
|
53
|
-
]>> :
|
|
37
|
+
TConstraint extends 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'year' ? v.IntegerAction<number, undefined> : never
|
|
38
|
+
]>> : TColumnType extends 'bigint' ? TConstraint extends 'int64' | 'uint64' ? v.SchemaWithPipe<[
|
|
54
39
|
v.BigintSchema<undefined>,
|
|
55
40
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
56
41
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
57
|
-
]> :
|
|
42
|
+
]> : 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<{
|
|
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>>;
|
|
58
52
|
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> =
|
|
60
|
-
type HandleUpdateColumn<TSchema extends v.GenericSchema, TColumn extends Column> =
|
|
61
|
-
export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> =
|
|
53
|
+
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
|
+
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> = 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
56
|
export {};
|