drizzle-typebox 0.1.1 → 0.2.0-1abaaf8

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/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  `drizzle-typebox` is a plugin for [Drizzle ORM](https://github.com/drizzle-team/drizzle-orm) that allows you to generate [@sinclair/typebox](https://github.com/sinclairzx81/typebox) schemas from Drizzle ORM schemas.
2
2
 
3
- | Database | Insert schema | Select schema |
4
- | :--------- | :-----------: | :-----------: |
5
- | PostgreSQL | ✅ | ✅ |
6
- | MySQL | ✅ | ✅ |
7
- | SQLite | ✅ | ✅ |
3
+ **Features**
4
+
5
+ - Create a select schema for tables, views and enums.
6
+ - Create insert and update schemas for tables.
7
+ - Supports all dialects: PostgreSQL, MySQL and SQLite.
8
8
 
9
9
  # Usage
10
10
 
@@ -25,6 +25,9 @@ const users = pgTable('users', {
25
25
  // Schema for inserting a user - can be used to validate API requests
26
26
  const insertUserSchema = createInsertSchema(users);
27
27
 
28
+ // Schema for updating a user - can be used to validate API requests
29
+ const updateUserSchema = createUpdateSchema(users);
30
+
28
31
  // Schema for selecting a user - can be used to validate API responses
29
32
  const selectUserSchema = createSelectSchema(users);
30
33
 
@@ -35,7 +38,7 @@ const insertUserSchema = createInsertSchema(users, {
35
38
 
36
39
  // Refining the fields - useful if you want to change the fields before they become nullable/optional in the final schema
37
40
  const insertUserSchema = createInsertSchema(users, {
38
- id: (schema) => Type.Number({ minimum: 0 }),
41
+ id: (schema) => Type.Number({ ...schema, minimum: 0 }),
39
42
  role: Type.String(),
40
43
  });
41
44
 
package/column.d.cts ADDED
@@ -0,0 +1,7 @@
1
+ import type { BufferSchema, JsonSchema } from "./utils.cjs";
2
+ export declare const literalSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
3
+ export declare const jsonSchema: JsonSchema;
4
+ export declare const bufferSchema: BufferSchema;
5
+ export declare function mapEnumValues(values: string[]): {
6
+ [k: string]: string;
7
+ };
package/column.d.mts ADDED
@@ -0,0 +1,7 @@
1
+ import type { BufferSchema, JsonSchema } from "./utils.mjs";
2
+ export declare const literalSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
3
+ export declare const jsonSchema: JsonSchema;
4
+ export declare const bufferSchema: BufferSchema;
5
+ export declare function mapEnumValues(values: string[]): {
6
+ [k: string]: string;
7
+ };
package/column.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { BufferSchema, JsonSchema } from './utils.js';
2
+ export declare const literalSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TNull]>;
3
+ export declare const jsonSchema: JsonSchema;
4
+ export declare const bufferSchema: BufferSchema;
5
+ export declare function mapEnumValues(values: string[]): {
6
+ [k: string]: string;
7
+ };
@@ -0,0 +1,22 @@
1
+ import type * as t from '@sinclair/typebox';
2
+ import type { Assume, Column } from 'drizzle-orm';
3
+ import type { ArrayHasAtLeastOneValue, BufferSchema, ColumnIsGeneratedAlwaysAs, IsNever, JsonSchema } 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;
10
+ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
+ [K in TEnumValues[number]]: K;
12
+ };
13
+ export type GetTypeboxType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TColumnType extends 'MySqlTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SQLiteInteger' | 'MySqlYear' ? t.TInteger : TColumnType extends 'PgBinaryVector' ? t.TRegExp : TBaseColumn extends Column ? t.TArray<GetTypeboxType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], TBaseColumn['_']['columnType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? t.TEnum<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>> : TData extends infer TTuple extends [any, ...any[]] ? t.TTuple<Assume<{
14
+ [K in keyof TTuple]: GetTypeboxType<TTuple[K], string, string, undefined, undefined>;
15
+ }, [any, ...any[]]>> : TData extends Date ? t.TDate : TData extends Buffer ? BufferSchema : TDataType extends 'array' ? t.TArray<GetTypeboxType<Assume<TData, any[]>[number], string, string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? t.TObject<{
16
+ [K in keyof TDict]: GetTypeboxType<TDict[K], string, string, undefined, undefined>;
17
+ }> : TDataType extends 'json' ? JsonSchema : TData extends number ? t.TNumber : TData extends bigint ? t.TBigInt : TData extends boolean ? t.TBoolean : TData extends string ? t.TString : t.TAny;
18
+ type HandleSelectColumn<TSchema extends t.TSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : t.Union<[TSchema, t.TNull]>;
19
+ type HandleInsertColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? t.TOptional<TSchema> : TSchema : t.TOptional<t.Union<[TSchema, t.TNull]>>;
20
+ type HandleUpdateColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? t.TOptional<TSchema> : t.TOptional<t.Union<[TSchema, t.TNull]>>;
21
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetTypeboxType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends t.TSchema ? TSchema extends t.TAny ? t.TAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : t.TAny;
22
+ export {};
@@ -0,0 +1,22 @@
1
+ import type * as t from '@sinclair/typebox';
2
+ import type { Assume, Column } from 'drizzle-orm';
3
+ import type { ArrayHasAtLeastOneValue, BufferSchema, ColumnIsGeneratedAlwaysAs, IsNever, JsonSchema } 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;
10
+ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
+ [K in TEnumValues[number]]: K;
12
+ };
13
+ export type GetTypeboxType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TColumnType extends 'MySqlTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SQLiteInteger' | 'MySqlYear' ? t.TInteger : TColumnType extends 'PgBinaryVector' ? t.TRegExp : TBaseColumn extends Column ? t.TArray<GetTypeboxType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], TBaseColumn['_']['columnType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? t.TEnum<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>> : TData extends infer TTuple extends [any, ...any[]] ? t.TTuple<Assume<{
14
+ [K in keyof TTuple]: GetTypeboxType<TTuple[K], string, string, undefined, undefined>;
15
+ }, [any, ...any[]]>> : TData extends Date ? t.TDate : TData extends Buffer ? BufferSchema : TDataType extends 'array' ? t.TArray<GetTypeboxType<Assume<TData, any[]>[number], string, string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? t.TObject<{
16
+ [K in keyof TDict]: GetTypeboxType<TDict[K], string, string, undefined, undefined>;
17
+ }> : TDataType extends 'json' ? JsonSchema : TData extends number ? t.TNumber : TData extends bigint ? t.TBigInt : TData extends boolean ? t.TBoolean : TData extends string ? t.TString : t.TAny;
18
+ type HandleSelectColumn<TSchema extends t.TSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : t.Union<[TSchema, t.TNull]>;
19
+ type HandleInsertColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? t.TOptional<TSchema> : TSchema : t.TOptional<t.Union<[TSchema, t.TNull]>>;
20
+ type HandleUpdateColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? t.TOptional<TSchema> : t.TOptional<t.Union<[TSchema, t.TNull]>>;
21
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetTypeboxType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends t.TSchema ? TSchema extends t.TAny ? t.TAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : t.TAny;
22
+ export {};
@@ -0,0 +1,22 @@
1
+ import type * as t from '@sinclair/typebox';
2
+ import type { Assume, Column } from 'drizzle-orm';
3
+ import type { ArrayHasAtLeastOneValue, BufferSchema, ColumnIsGeneratedAlwaysAs, IsNever, JsonSchema } 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;
10
+ export type EnumValuesToEnum<TEnumValues extends [string, ...string[]]> = {
11
+ [K in TEnumValues[number]]: K;
12
+ };
13
+ export type GetTypeboxType<TData, TDataType extends string, TColumnType extends string, TEnumValues extends [string, ...string[]] | undefined, TBaseColumn extends Column | undefined> = TColumnType extends 'MySqlTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SQLiteInteger' | 'MySqlYear' ? t.TInteger : TColumnType extends 'PgBinaryVector' ? t.TRegExp : TBaseColumn extends Column ? t.TArray<GetTypeboxType<TBaseColumn['_']['data'], TBaseColumn['_']['dataType'], TBaseColumn['_']['columnType'], GetEnumValuesFromColumn<TBaseColumn>, GetBaseColumn<TBaseColumn>>> : ArrayHasAtLeastOneValue<TEnumValues> extends true ? t.TEnum<EnumValuesToEnum<Assume<TEnumValues, [string, ...string[]]>>> : TData extends infer TTuple extends [any, ...any[]] ? t.TTuple<Assume<{
14
+ [K in keyof TTuple]: GetTypeboxType<TTuple[K], string, string, undefined, undefined>;
15
+ }, [any, ...any[]]>> : TData extends Date ? t.TDate : TData extends Buffer ? BufferSchema : TDataType extends 'array' ? t.TArray<GetTypeboxType<Assume<TData, any[]>[number], string, string, undefined, undefined>> : TData extends infer TDict extends Record<string, any> ? t.TObject<{
16
+ [K in keyof TDict]: GetTypeboxType<TDict[K], string, string, undefined, undefined>;
17
+ }> : TDataType extends 'json' ? JsonSchema : TData extends number ? t.TNumber : TData extends bigint ? t.TBigInt : TData extends boolean ? t.TBoolean : TData extends string ? t.TString : t.TAny;
18
+ type HandleSelectColumn<TSchema extends t.TSchema, TColumn extends Column> = TColumn['_']['notNull'] extends true ? TSchema : t.Union<[TSchema, t.TNull]>;
19
+ type HandleInsertColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? t.TOptional<TSchema> : TSchema : t.TOptional<t.Union<[TSchema, t.TNull]>>;
20
+ type HandleUpdateColumn<TSchema extends t.TSchema, TColumn extends Column> = ColumnIsGeneratedAlwaysAs<TColumn> extends true ? never : TColumn['_']['notNull'] extends true ? t.TOptional<TSchema> : t.TOptional<t.Union<[TSchema, t.TNull]>>;
21
+ export type HandleColumn<TType extends 'select' | 'insert' | 'update', TColumn extends Column> = GetTypeboxType<TColumn['_']['data'], TColumn['_']['dataType'], TColumn['_']['columnType'], GetEnumValuesFromColumn<TColumn>, GetBaseColumn<TColumn>> extends infer TSchema extends t.TSchema ? TSchema extends t.TAny ? t.TAny : TType extends 'select' ? HandleSelectColumn<TSchema, TColumn> : TType extends 'insert' ? HandleInsertColumn<TSchema, TColumn> : TType extends 'update' ? HandleUpdateColumn<TSchema, TColumn> : TSchema : t.TAny;
22
+ export {};
@@ -0,0 +1,20 @@
1
+ export declare const CONSTANTS: {
2
+ INT8_MIN: number;
3
+ INT8_MAX: number;
4
+ INT8_UNSIGNED_MAX: number;
5
+ INT16_MIN: number;
6
+ INT16_MAX: number;
7
+ INT16_UNSIGNED_MAX: number;
8
+ INT24_MIN: number;
9
+ INT24_MAX: number;
10
+ INT24_UNSIGNED_MAX: number;
11
+ INT32_MIN: number;
12
+ INT32_MAX: number;
13
+ INT32_UNSIGNED_MAX: number;
14
+ INT48_MIN: number;
15
+ INT48_MAX: number;
16
+ INT48_UNSIGNED_MAX: number;
17
+ INT64_MIN: bigint;
18
+ INT64_MAX: bigint;
19
+ INT64_UNSIGNED_MAX: bigint;
20
+ };
@@ -0,0 +1,20 @@
1
+ export declare const CONSTANTS: {
2
+ INT8_MIN: number;
3
+ INT8_MAX: number;
4
+ INT8_UNSIGNED_MAX: number;
5
+ INT16_MIN: number;
6
+ INT16_MAX: number;
7
+ INT16_UNSIGNED_MAX: number;
8
+ INT24_MIN: number;
9
+ INT24_MAX: number;
10
+ INT24_UNSIGNED_MAX: number;
11
+ INT32_MIN: number;
12
+ INT32_MAX: number;
13
+ INT32_UNSIGNED_MAX: number;
14
+ INT48_MIN: number;
15
+ INT48_MAX: number;
16
+ INT48_UNSIGNED_MAX: number;
17
+ INT64_MIN: bigint;
18
+ INT64_MAX: bigint;
19
+ INT64_UNSIGNED_MAX: bigint;
20
+ };
package/constants.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ export declare const CONSTANTS: {
2
+ INT8_MIN: number;
3
+ INT8_MAX: number;
4
+ INT8_UNSIGNED_MAX: number;
5
+ INT16_MIN: number;
6
+ INT16_MAX: number;
7
+ INT16_UNSIGNED_MAX: number;
8
+ INT24_MIN: number;
9
+ INT24_MAX: number;
10
+ INT24_UNSIGNED_MAX: number;
11
+ INT32_MIN: number;
12
+ INT32_MAX: number;
13
+ INT32_UNSIGNED_MAX: number;
14
+ INT48_MIN: number;
15
+ INT48_MAX: number;
16
+ INT48_UNSIGNED_MAX: number;
17
+ INT64_MIN: bigint;
18
+ INT64_MAX: bigint;
19
+ INT64_UNSIGNED_MAX: bigint;
20
+ };
package/index.cjs CHANGED
@@ -1,2 +1,326 @@
1
- "use strict";var e=require("@sinclair/typebox"),t=require("drizzle-orm"),r=require("drizzle-orm/mysql-core"),n=require("drizzle-orm/pg-core"),a=require("drizzle-orm/sqlite-core");const i=e.Type.Union([e.Type.String(),e.Type.Number(),e.Type.Boolean(),e.Type.Null()]),s=e.Type.Union([i,e.Type.Array(e.Type.Any()),e.Type.Record(e.Type.String(),e.Type.Any())]),o=t=>e.Type.Union([t,e.Type.Null()]);const y=/^[\dA-Fa-f]{8}(?:-[\dA-Fa-f]{4}){3}-[\dA-Fa-f]{12}$/;function l(i){let o;if(function(e){return"enumValues"in e&&Array.isArray(e.enumValues)&&e.enumValues.length>0}(i)&&(o=i.enumValues?.length?e.Type.Union(i.enumValues.map((t=>e.Type.Literal(t)))):e.Type.String()),!o)if("custom"===i.dataType)o=e.Type.Any();else if("json"===i.dataType)o=s;else if("array"===i.dataType)o=e.Type.Array(l(i.baseColumn));else if("number"===i.dataType)o=e.Type.Number();else if("bigint"===i.dataType)o=e.Type.BigInt();else if("boolean"===i.dataType)o=e.Type.Boolean();else if("date"===i.dataType)o=e.Type.Date();else if("string"===i.dataType){const s=e.Type.String();(t.is(i,n.PgChar)||t.is(i,n.PgVarchar)||t.is(i,r.MySqlVarChar)||t.is(i,r.MySqlVarBinary)||t.is(i,r.MySqlChar)||t.is(i,a.SQLiteText))&&"number"==typeof i.length&&(s.maxLength=i.length),o=s}else t.is(i,n.PgUUID)&&(o=e.Type.RegEx(y));return o||(o=e.Type.Any()),o}exports.Nullable=o,exports.createInsertSchema=function(r,n){const a=t.getTableColumns(r),i=Object.entries(a);let s=Object.fromEntries(i.map((([e,t])=>[e,l(t)])));n&&(s=Object.assign(s,Object.fromEntries(Object.entries(n).map((([e,t])=>[e,"function"==typeof t?t(s):t])))));for(const[t,r]of i)r.notNull?r.hasDefault&&(s[t]=e.Type.Optional(s[t])):s[t]=e.Type.Optional(o(s[t]));return e.Type.Object(s)},exports.createSelectSchema=function(r,n){const a=t.getTableColumns(r),i=Object.entries(a);let s=Object.fromEntries(i.map((([e,t])=>[e,l(t)])));n&&(s=Object.assign(s,Object.fromEntries(Object.entries(n).map((([e,t])=>[e,"function"==typeof t?t(s):t])))));for(const[e,t]of i)t.notNull||(s[e]=o(s[e]));return e.Type.Object(s)},exports.jsonSchema=s;
1
+ 'use strict';
2
+
3
+ var typebox = require('@sinclair/typebox');
4
+ var drizzleOrm = require('drizzle-orm');
5
+
6
+ const CONSTANTS = {
7
+ INT8_MIN: -128,
8
+ INT8_MAX: 127,
9
+ INT8_UNSIGNED_MAX: 255,
10
+ INT16_MIN: -32768,
11
+ INT16_MAX: 32767,
12
+ INT16_UNSIGNED_MAX: 65535,
13
+ INT24_MIN: -8388608,
14
+ INT24_MAX: 8388607,
15
+ INT24_UNSIGNED_MAX: 16777215,
16
+ INT32_MIN: -2147483648,
17
+ INT32_MAX: 2147483647,
18
+ INT32_UNSIGNED_MAX: 4294967295,
19
+ INT48_MIN: -140737488355328,
20
+ INT48_MAX: 140737488355327,
21
+ INT48_UNSIGNED_MAX: 281474976710655,
22
+ INT64_MIN: -9223372036854775808n,
23
+ INT64_MAX: 9223372036854775807n,
24
+ INT64_UNSIGNED_MAX: 18446744073709551615n,
25
+ };
26
+
27
+ function isColumnType(column, columnTypes) {
28
+ return columnTypes.includes(column.columnType);
29
+ }
30
+ function isWithEnum(column) {
31
+ return 'enumValues' in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
32
+ }
33
+ const isPgEnum = isWithEnum;
34
+
35
+ const literalSchema = typebox.Type.Union([typebox.Type.String(), typebox.Type.Number(), typebox.Type.Boolean(), typebox.Type.Null()]);
36
+ const jsonSchema = typebox.Type.Recursive((self) => typebox.Type.Union([literalSchema, typebox.Type.Array(self), typebox.Type.Record(typebox.Type.String(), self)]));
37
+ typebox.TypeRegistry.Set('Buffer', (_, value) => value instanceof Buffer); // eslint-disable-line no-instanceof/no-instanceof
38
+ const bufferSchema = { [typebox.Kind]: 'Buffer', type: 'buffer' };
39
+ function mapEnumValues(values) {
40
+ return Object.fromEntries(values.map((value) => [value, value]));
41
+ }
42
+ /** @internal */
43
+ function columnToSchema(column, t) {
44
+ let schema;
45
+ if (isWithEnum(column)) {
46
+ schema = column.enumValues.length ? t.Enum(mapEnumValues(column.enumValues)) : t.String();
47
+ }
48
+ if (!schema) {
49
+ // Handle specific types
50
+ if (isColumnType(column, ['PgGeometry', 'PgPointTuple'])) {
51
+ schema = t.Tuple([t.Number(), t.Number()]);
52
+ }
53
+ else if (isColumnType(column, ['PgGeometryObject', 'PgPointObject'])) {
54
+ schema = t.Object({ x: t.Number(), y: t.Number() });
55
+ }
56
+ else if (isColumnType(column, ['PgHalfVector', 'PgVector'])) {
57
+ schema = t.Array(t.Number(), column.dimensions
58
+ ? {
59
+ minItems: column.dimensions,
60
+ maxItems: column.dimensions,
61
+ }
62
+ : undefined);
63
+ }
64
+ else if (isColumnType(column, ['PgLine'])) {
65
+ schema = t.Tuple([t.Number(), t.Number(), t.Number()]);
66
+ }
67
+ else if (isColumnType(column, ['PgLineABC'])) {
68
+ schema = t.Object({
69
+ a: t.Number(),
70
+ b: t.Number(),
71
+ c: t.Number(),
72
+ });
73
+ } // Handle other types
74
+ else if (isColumnType(column, ['PgArray'])) {
75
+ schema = t.Array(columnToSchema(column.baseColumn, t), column.size
76
+ ? {
77
+ minItems: column.size,
78
+ maxItems: column.size,
79
+ }
80
+ : undefined);
81
+ }
82
+ else if (column.dataType === 'array') {
83
+ schema = t.Array(t.Any());
84
+ }
85
+ else if (column.dataType === 'number') {
86
+ schema = numberColumnToSchema(column, t);
87
+ }
88
+ else if (column.dataType === 'bigint') {
89
+ schema = bigintColumnToSchema(column, t);
90
+ }
91
+ else if (column.dataType === 'boolean') {
92
+ schema = t.Boolean();
93
+ }
94
+ else if (column.dataType === 'date') {
95
+ schema = t.Date();
96
+ }
97
+ else if (column.dataType === 'string') {
98
+ schema = stringColumnToSchema(column, t);
99
+ }
100
+ else if (column.dataType === 'json') {
101
+ schema = jsonSchema;
102
+ }
103
+ else if (column.dataType === 'custom') {
104
+ schema = t.Any();
105
+ }
106
+ else if (column.dataType === 'buffer') {
107
+ schema = bufferSchema;
108
+ }
109
+ }
110
+ if (!schema) {
111
+ schema = t.Any();
112
+ }
113
+ return schema;
114
+ }
115
+ function numberColumnToSchema(column, t) {
116
+ let unsigned = column.getSQLType().includes('unsigned');
117
+ let min;
118
+ let max;
119
+ let integer = false;
120
+ if (isColumnType(column, ['MySqlTinyInt'])) {
121
+ min = unsigned ? 0 : CONSTANTS.INT8_MIN;
122
+ max = unsigned ? CONSTANTS.INT8_UNSIGNED_MAX : CONSTANTS.INT8_MAX;
123
+ integer = true;
124
+ }
125
+ else if (isColumnType(column, [
126
+ 'PgSmallInt',
127
+ 'PgSmallSerial',
128
+ 'MySqlSmallInt',
129
+ ])) {
130
+ min = unsigned ? 0 : CONSTANTS.INT16_MIN;
131
+ max = unsigned ? CONSTANTS.INT16_UNSIGNED_MAX : CONSTANTS.INT16_MAX;
132
+ integer = true;
133
+ }
134
+ else if (isColumnType(column, [
135
+ 'PgReal',
136
+ 'MySqlFloat',
137
+ 'MySqlMediumInt',
138
+ ])) {
139
+ min = unsigned ? 0 : CONSTANTS.INT24_MIN;
140
+ max = unsigned ? CONSTANTS.INT24_UNSIGNED_MAX : CONSTANTS.INT24_MAX;
141
+ integer = isColumnType(column, ['MySqlMediumInt']);
142
+ }
143
+ else if (isColumnType(column, ['PgInteger', 'PgSerial', 'MySqlInt'])) {
144
+ min = unsigned ? 0 : CONSTANTS.INT32_MIN;
145
+ max = unsigned ? CONSTANTS.INT32_UNSIGNED_MAX : CONSTANTS.INT32_MAX;
146
+ integer = true;
147
+ }
148
+ else if (isColumnType(column, [
149
+ 'PgDoublePrecision',
150
+ 'MySqlReal',
151
+ 'MySqlDouble',
152
+ 'SQLiteReal',
153
+ ])) {
154
+ min = unsigned ? 0 : CONSTANTS.INT48_MIN;
155
+ max = unsigned ? CONSTANTS.INT48_UNSIGNED_MAX : CONSTANTS.INT48_MAX;
156
+ }
157
+ else if (isColumnType(column, ['PgBigInt53', 'PgBigSerial53', 'MySqlBigInt53', 'MySqlSerial', 'SQLiteInteger'])) {
158
+ unsigned = unsigned || isColumnType(column, ['MySqlSerial']);
159
+ min = unsigned ? 0 : Number.MIN_SAFE_INTEGER;
160
+ max = Number.MAX_SAFE_INTEGER;
161
+ integer = true;
162
+ }
163
+ else if (isColumnType(column, ['MySqlYear'])) {
164
+ min = 1901;
165
+ max = 2155;
166
+ integer = true;
167
+ }
168
+ else {
169
+ min = Number.MIN_SAFE_INTEGER;
170
+ max = Number.MAX_SAFE_INTEGER;
171
+ }
172
+ const key = integer ? 'Integer' : 'Number';
173
+ return t[key]({
174
+ minimum: min,
175
+ maximum: max,
176
+ });
177
+ }
178
+ function bigintColumnToSchema(column, t) {
179
+ const unsigned = column.getSQLType().includes('unsigned');
180
+ const min = unsigned ? 0n : CONSTANTS.INT64_MIN;
181
+ const max = unsigned ? CONSTANTS.INT64_UNSIGNED_MAX : CONSTANTS.INT64_MAX;
182
+ return t.BigInt({
183
+ minimum: min,
184
+ maximum: max,
185
+ });
186
+ }
187
+ function stringColumnToSchema(column, t) {
188
+ if (isColumnType(column, ['PgUUID'])) {
189
+ return t.String({ format: 'uuid' });
190
+ }
191
+ else if (isColumnType(column, [
192
+ 'PgBinaryVector',
193
+ ])) {
194
+ return t.RegExp(/^[01]+$/, column.dimensions ? { maxLength: column.dimensions } : undefined);
195
+ }
196
+ let max;
197
+ let fixed = false;
198
+ if (isColumnType(column, ['PgVarchar', 'SQLiteText'])) {
199
+ max = column.length;
200
+ }
201
+ else if (isColumnType(column, ['MySqlVarChar'])) {
202
+ max = column.length ?? CONSTANTS.INT16_UNSIGNED_MAX;
203
+ }
204
+ else if (isColumnType(column, ['MySqlText'])) {
205
+ if (column.textType === 'longtext') {
206
+ max = CONSTANTS.INT32_UNSIGNED_MAX;
207
+ }
208
+ else if (column.textType === 'mediumtext') {
209
+ max = CONSTANTS.INT24_UNSIGNED_MAX;
210
+ }
211
+ else if (column.textType === 'text') {
212
+ max = CONSTANTS.INT16_UNSIGNED_MAX;
213
+ }
214
+ else {
215
+ max = CONSTANTS.INT8_UNSIGNED_MAX;
216
+ }
217
+ }
218
+ if (isColumnType(column, ['PgChar', 'MySqlChar'])) {
219
+ max = column.length;
220
+ fixed = true;
221
+ }
222
+ const options = {};
223
+ if (max !== undefined && fixed) {
224
+ options.minLength = max;
225
+ options.maxLength = max;
226
+ }
227
+ else if (max !== undefined) {
228
+ options.maxLength = max;
229
+ }
230
+ return t.String(Object.keys(options).length > 0 ? options : undefined);
231
+ }
232
+
233
+ function getColumns(tableLike) {
234
+ return drizzleOrm.isTable(tableLike) ? drizzleOrm.getTableColumns(tableLike) : drizzleOrm.getViewSelectedFields(tableLike);
235
+ }
236
+ function handleColumns(columns, refinements, conditions, factory) {
237
+ const columnSchemas = {};
238
+ for (const [key, selected] of Object.entries(columns)) {
239
+ if (!drizzleOrm.is(selected, drizzleOrm.Column) && !drizzleOrm.is(selected, drizzleOrm.SQL) && !drizzleOrm.is(selected, drizzleOrm.SQL.Aliased) && typeof selected === 'object') {
240
+ const columns = drizzleOrm.isTable(selected) || drizzleOrm.isView(selected) ? getColumns(selected) : selected;
241
+ columnSchemas[key] = handleColumns(columns, refinements[key] ?? {}, conditions, factory);
242
+ continue;
243
+ }
244
+ const refinement = refinements[key];
245
+ if (refinement !== undefined && typeof refinement !== 'function') {
246
+ columnSchemas[key] = refinement;
247
+ continue;
248
+ }
249
+ const column = drizzleOrm.is(selected, drizzleOrm.Column) ? selected : undefined;
250
+ const schema = column ? columnToSchema(column, factory?.typeboxInstance ?? typebox.Type) : typebox.Type.Any();
251
+ const refined = typeof refinement === 'function' ? refinement(schema) : schema;
252
+ if (conditions.never(column)) {
253
+ continue;
254
+ }
255
+ else {
256
+ columnSchemas[key] = refined;
257
+ }
258
+ if (column) {
259
+ if (conditions.nullable(column)) {
260
+ columnSchemas[key] = typebox.Type.Union([columnSchemas[key], typebox.Type.Null()]);
261
+ }
262
+ if (conditions.optional(column)) {
263
+ columnSchemas[key] = typebox.Type.Optional(columnSchemas[key]);
264
+ }
265
+ }
266
+ }
267
+ return typebox.Type.Object(columnSchemas);
268
+ }
269
+ function handleEnum(enum_, factory) {
270
+ const typebox$1 = factory?.typeboxInstance ?? typebox.Type;
271
+ return typebox$1.Enum(mapEnumValues(enum_.enumValues));
272
+ }
273
+ const selectConditions = {
274
+ never: () => false,
275
+ optional: () => false,
276
+ nullable: (column) => !column.notNull,
277
+ };
278
+ const insertConditions = {
279
+ never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
280
+ optional: (column) => !column.notNull || (column.notNull && column.hasDefault),
281
+ nullable: (column) => !column.notNull,
282
+ };
283
+ const updateConditions = {
284
+ never: (column) => column?.generated?.type === 'always' || column?.generatedIdentity?.type === 'always',
285
+ optional: () => true,
286
+ nullable: (column) => !column.notNull,
287
+ };
288
+ const createSelectSchema = (entity, refine) => {
289
+ if (isPgEnum(entity)) {
290
+ return handleEnum(entity);
291
+ }
292
+ const columns = getColumns(entity);
293
+ return handleColumns(columns, refine ?? {}, selectConditions);
294
+ };
295
+ const createInsertSchema = (entity, refine) => {
296
+ const columns = getColumns(entity);
297
+ return handleColumns(columns, refine ?? {}, insertConditions);
298
+ };
299
+ const createUpdateSchema = (entity, refine) => {
300
+ const columns = getColumns(entity);
301
+ return handleColumns(columns, refine ?? {}, updateConditions);
302
+ };
303
+ function createSchemaFactory(options) {
304
+ const createSelectSchema = (entity, refine) => {
305
+ if (isPgEnum(entity)) {
306
+ return handleEnum(entity, options);
307
+ }
308
+ const columns = getColumns(entity);
309
+ return handleColumns(columns, refine ?? {}, selectConditions, options);
310
+ };
311
+ const createInsertSchema = (entity, refine) => {
312
+ const columns = getColumns(entity);
313
+ return handleColumns(columns, refine ?? {}, insertConditions, options);
314
+ };
315
+ const createUpdateSchema = (entity, refine) => {
316
+ const columns = getColumns(entity);
317
+ return handleColumns(columns, refine ?? {}, updateConditions, options);
318
+ };
319
+ return { createSelectSchema, createInsertSchema, createUpdateSchema };
320
+ }
321
+
322
+ exports.createInsertSchema = createInsertSchema;
323
+ exports.createSchemaFactory = createSchemaFactory;
324
+ exports.createSelectSchema = createSelectSchema;
325
+ exports.createUpdateSchema = createUpdateSchema;
2
326
  //# sourceMappingURL=index.cjs.map
package/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":[null],"names":["literalSchema","Type","Union","String","Number","Boolean","Null","jsonSchema","Array","Any","Record","Nullable","schema","uuidPattern","mapColumnToSchema","column","type","isArray","enumValues","length","isWithEnum","map","value","Literal","dataType","baseColumn","BigInt","Date","sType","is","PgChar","PgVarchar","MySqlVarChar","MySqlVarBinary","MySqlChar","SQLiteText","maxLength","PgUUID","RegEx","table","refine","columns","getTableColumns","columnEntries","Object","entries","schemaEntries","fromEntries","name","assign","refineColumn","notNull","hasDefault","Optional"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/utils.ts","../src/column.ts","../src/schema.ts"],"sourcesContent":[null,null,null,null],"names":["t","TypeRegistry","Kind","isTable","getTableColumns","getViewSelectedFields","is","Column","SQL","isView","typebox"],"mappings":"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"}
package/index.d.cts CHANGED
@@ -1,45 +1,2 @@
1
- import type { TAny, TArray, TBigInt, TBoolean, TDate, TLiteral, TNull, TNumber, TObject, TOptional, TSchema, TString, TUnion } from '@sinclair/typebox';
2
- import { type Assume, type DrizzleTypeError, type Equal, type Simplify, type Table, type Column } from 'drizzle-orm';
3
- type TUnionLiterals<T extends string[]> = T extends readonly [
4
- infer U extends string,
5
- ...infer Rest extends string[]
6
- ] ? [TLiteral<U>, ...TUnionLiterals<Rest>] : [];
7
- type Json = typeof jsonSchema;
8
- export declare const jsonSchema: TUnion<[TUnion<[TString, TNumber, TBoolean, TNull]>, TArray<TAny>, import("@sinclair/typebox").TRecord<TString, TAny>]>;
9
- type TNullable<TType extends TSchema> = TUnion<[TType, TNull]>;
10
- type MapInsertColumnToTypebox<TColumn extends Column, TType extends TSchema> = TColumn['_']['notNull'] extends false ? TOptional<TNullable<TType>> : TColumn['_']['hasDefault'] extends true ? TOptional<TType> : TType;
11
- type MapSelectColumnToTypebox<TColumn extends Column, TType extends TSchema> = TColumn['_']['notNull'] extends false ? TNullable<TType> : TType;
12
- type MapColumnToTypebox<TColumn extends Column, TType extends TSchema, TMode extends 'insert' | 'select'> = TMode extends 'insert' ? MapInsertColumnToTypebox<TColumn, TType> : MapSelectColumnToTypebox<TColumn, TType>;
13
- type MaybeOptional<TColumn extends Column, TType extends TSchema, TMode extends 'insert' | 'select', TNoOptional extends boolean> = TNoOptional extends true ? TType : MapColumnToTypebox<TColumn, TType, TMode>;
14
- type GetTypeboxType<TColumn extends Column> = TColumn['_']['dataType'] extends infer TDataType ? TDataType extends 'custom' ? TAny : TDataType extends 'json' ? Json : TColumn extends {
15
- enumValues: [string, ...string[]];
16
- } ? Equal<TColumn['enumValues'], [string, ...string[]]> extends true ? TString : TUnion<TUnionLiterals<TColumn['enumValues']>> : TDataType extends 'array' ? TArray<GetTypeboxType<Assume<TColumn['_'], {
17
- baseColumn: Column;
18
- }>['baseColumn']>> : TDataType extends 'bigint' ? TBigInt : TDataType extends 'number' ? TNumber : TDataType extends 'string' ? TString : TDataType extends 'boolean' ? TBoolean : TDataType extends 'date' ? TDate : TAny : never;
19
- type ValueOrUpdater<T, TUpdaterArg> = T | ((arg: TUpdaterArg) => T);
20
- type UnwrapValueOrUpdater<T> = T extends ValueOrUpdater<infer U, any> ? U : never;
21
- export type Refine<TTable extends Table, TMode extends 'select' | 'insert'> = {
22
- [K in keyof TTable['_']['columns']]?: ValueOrUpdater<TSchema, TMode extends 'select' ? BuildSelectSchema<TTable, {}, true> : BuildInsertSchema<TTable, {}, true>>;
23
- };
24
- export type BuildInsertSchema<TTable extends Table, TRefine extends Refine<TTable, 'insert'> | {}, TNoOptional extends boolean = false> = TTable['_']['columns'] extends infer TColumns extends Record<string, Column<any>> ? {
25
- [K in keyof TColumns & string]: MaybeOptional<TColumns[K], K extends keyof TRefine ? Assume<UnwrapValueOrUpdater<TRefine[K]>, TSchema> : GetTypeboxType<TColumns[K]>, 'insert', TNoOptional>;
26
- } : never;
27
- export type BuildSelectSchema<TTable extends Table, TRefine extends Refine<TTable, 'select'>, TNoOptional extends boolean = false> = Simplify<{
28
- [K in keyof TTable['_']['columns']]: MaybeOptional<TTable['_']['columns'][K], K extends keyof TRefine ? Assume<UnwrapValueOrUpdater<TRefine[K]>, TSchema> : GetTypeboxType<TTable['_']['columns'][K]>, 'select', TNoOptional>;
29
- }>;
30
- export declare const Nullable: <T extends TSchema>(schema: T) => TUnion<[T, TNull]>;
31
- export declare function createInsertSchema<TTable extends Table, TRefine extends Refine<TTable, 'insert'> = Refine<TTable, 'insert'>>(table: TTable,
32
- /**
33
- * @param refine Refine schema fields
34
- */
35
- refine?: {
36
- [K in keyof TRefine]: K extends keyof TTable['_']['columns'] ? TRefine[K] : DrizzleTypeError<`Column '${K & string}' does not exist in table '${TTable['_']['name']}'`>;
37
- }): TObject<BuildInsertSchema<TTable, Equal<TRefine, Refine<TTable, 'insert'>> extends true ? {} : TRefine>>;
38
- export declare function createSelectSchema<TTable extends Table, TRefine extends Refine<TTable, 'select'> = Refine<TTable, 'select'>>(table: TTable,
39
- /**
40
- * @param refine Refine schema fields
41
- */
42
- refine?: {
43
- [K in keyof TRefine]: K extends keyof TTable['_']['columns'] ? TRefine[K] : DrizzleTypeError<`Column '${K & string}' does not exist in table '${TTable['_']['name']}'`>;
44
- }): TObject<BuildSelectSchema<TTable, Equal<TRefine, Refine<TTable, 'select'>> extends true ? {} : TRefine>>;
45
- export {};
1
+ export * from "./schema.cjs";
2
+ export * from "./schema.types.cjs";