drizzle-valibot 0.4.2-e8ab855 → 0.4.2-ec2e97b
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 -33
- package/column.types.d.mts +33 -33
- package/column.types.d.ts +33 -33
- package/index.cjs +239 -168
- package/index.cjs.map +1 -1
- package/index.mjs +239 -168
- package/index.mjs.map +1 -1
- package/package.json +72 -72
- package/schema.types.d.cts +6 -5
- package/schema.types.d.mts +6 -5
- package/schema.types.d.ts +6 -5
- package/schema.types.internal.d.cts +3 -3
- package/schema.types.internal.d.mts +3 -3
- package/schema.types.internal.d.ts +3 -3
- package/utils.d.cts +7 -3
- package/utils.d.mts +7 -3
- package/utils.d.ts +7 -3
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,6 +1,7 @@
|
|
|
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 {
|
|
3
|
+
import type { bigintStringModeSchema } from "./column.cjs";
|
|
4
|
+
import type { IsNever, Json, RemoveNeverElements } from "./utils.cjs";
|
|
4
5
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
6
|
_: {
|
|
6
7
|
baseColumn: Column | undefined;
|
|
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
11
|
readonly [K in TEnumValues[number]]: K;
|
|
11
12
|
};
|
|
12
13
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
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;
|
|
14
|
+
max: TColumn['length'];
|
|
15
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
21
16
|
};
|
|
22
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>;
|
|
23
|
-
type GetArraySchema<
|
|
24
|
-
|
|
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<[
|
|
25
22
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
26
23
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
27
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
28
|
-
v.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
readonly
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
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<[
|
|
44
35
|
v.NumberSchema<undefined>,
|
|
45
36
|
v.MinValueAction<number, number, undefined>,
|
|
46
37
|
v.MaxValueAction<number, number, undefined>,
|
|
47
|
-
|
|
48
|
-
]>> :
|
|
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<[
|
|
49
40
|
v.BigintSchema<undefined>,
|
|
50
41
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
51
42
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
52
|
-
]> :
|
|
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>>;
|
|
53
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
54
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
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> =
|
|
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;
|
|
57
57
|
export {};
|
package/column.types.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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 {
|
|
3
|
+
import type { bigintStringModeSchema } from "./column.mjs";
|
|
4
|
+
import type { IsNever, Json, RemoveNeverElements } from "./utils.mjs";
|
|
4
5
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
6
|
_: {
|
|
6
7
|
baseColumn: Column | undefined;
|
|
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
11
|
readonly [K in TEnumValues[number]]: K;
|
|
11
12
|
};
|
|
12
13
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
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;
|
|
14
|
+
max: TColumn['length'];
|
|
15
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
21
16
|
};
|
|
22
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>;
|
|
23
|
-
type GetArraySchema<
|
|
24
|
-
|
|
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<[
|
|
25
22
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
26
23
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
27
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
28
|
-
v.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
readonly
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
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<[
|
|
44
35
|
v.NumberSchema<undefined>,
|
|
45
36
|
v.MinValueAction<number, number, undefined>,
|
|
46
37
|
v.MaxValueAction<number, number, undefined>,
|
|
47
|
-
|
|
48
|
-
]>> :
|
|
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<[
|
|
49
40
|
v.BigintSchema<undefined>,
|
|
50
41
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
51
42
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
52
|
-
]> :
|
|
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>>;
|
|
53
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
54
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
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> =
|
|
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;
|
|
57
57
|
export {};
|
package/column.types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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 {
|
|
3
|
+
import type { bigintStringModeSchema } from './column.js';
|
|
4
|
+
import type { IsNever, Json, RemoveNeverElements } from './utils.js';
|
|
4
5
|
export type HasBaseColumn<TColumn> = TColumn extends {
|
|
5
6
|
_: {
|
|
6
7
|
baseColumn: Column | undefined;
|
|
@@ -10,48 +11,47 @@ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
|
|
|
10
11
|
readonly [K in TEnumValues[number]]: K;
|
|
11
12
|
};
|
|
12
13
|
export type ExtractAdditionalProperties<TColumn extends Column> = {
|
|
13
|
-
max: TColumn['
|
|
14
|
-
|
|
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;
|
|
14
|
+
max: TColumn['length'];
|
|
15
|
+
fixedLength: TColumn['isLengthExact'] extends true ? true : false;
|
|
21
16
|
};
|
|
22
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>;
|
|
23
|
-
type GetArraySchema<
|
|
24
|
-
|
|
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<[
|
|
25
22
|
v.ArraySchema<v.NumberSchema<undefined>, undefined>,
|
|
26
23
|
GetLengthAction<TAdditionalProperties, number[]>
|
|
27
|
-
]> : v.ArraySchema<v.NumberSchema<undefined>, undefined> :
|
|
28
|
-
v.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
readonly
|
|
36
|
-
|
|
37
|
-
|
|
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<[
|
|
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<[
|
|
44
35
|
v.NumberSchema<undefined>,
|
|
45
36
|
v.MinValueAction<number, number, undefined>,
|
|
46
37
|
v.MaxValueAction<number, number, undefined>,
|
|
47
|
-
|
|
48
|
-
]>> :
|
|
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<[
|
|
49
40
|
v.BigintSchema<undefined>,
|
|
50
41
|
v.MinValueAction<bigint, bigint, undefined>,
|
|
51
42
|
v.MaxValueAction<bigint, bigint, undefined>
|
|
52
|
-
]> :
|
|
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>>;
|
|
53
53
|
type HandleSelectColumn<TSchema extends v.GenericSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : v.NullableSchema<TSchema, undefined>;
|
|
54
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
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> =
|
|
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;
|
|
57
57
|
export {};
|