drizzle-typebox 1.0.0-beta.9-5a93194 → 1.0.0-beta.9-c26fd2f
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/index.cjs +356 -402
- package/index.cjs.map +1 -1
- package/index.d.cts +122 -6
- package/index.d.mts +122 -6
- package/index.d.ts +122 -6
- package/index.mjs +350 -394
- package/index.mjs.map +1 -1
- package/package.json +2 -3
- package/column.d.cts +0 -10
- package/column.d.mts +0 -10
- package/column.d.ts +0 -10
- package/column.types.d.cts +0 -27
- package/column.types.d.mts +0 -27
- package/column.types.d.ts +0 -27
- package/constants.d.cts +0 -20
- package/constants.d.mts +0 -20
- package/constants.d.ts +0 -20
- package/schema.d.cts +0 -18
- package/schema.d.mts +0 -18
- package/schema.d.ts +0 -18
- package/schema.types.d.cts +0 -24
- package/schema.types.d.mts +0 -24
- package/schema.types.d.ts +0 -24
- package/schema.types.internal.d.cts +0 -22
- package/schema.types.internal.d.mts +0 -22
- package/schema.types.internal.d.ts +0 -22
- package/utils.d.cts +0 -39
- package/utils.d.mts +0 -39
- package/utils.d.ts +0 -39
package/index.cjs
CHANGED
|
@@ -1,452 +1,406 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var typebox = require('@sinclair/typebox');
|
|
4
|
-
var drizzleOrm = require('drizzle-orm');
|
|
1
|
+
let _sinclair_typebox = require("@sinclair/typebox");
|
|
2
|
+
let drizzle_orm = require("drizzle-orm");
|
|
5
3
|
|
|
4
|
+
//#region src/constants.ts
|
|
6
5
|
const CONSTANTS = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
6
|
+
INT8_MIN: -128,
|
|
7
|
+
INT8_MAX: 127,
|
|
8
|
+
INT8_UNSIGNED_MAX: 255,
|
|
9
|
+
INT16_MIN: -32768,
|
|
10
|
+
INT16_MAX: 32767,
|
|
11
|
+
INT16_UNSIGNED_MAX: 65535,
|
|
12
|
+
INT24_MIN: -8388608,
|
|
13
|
+
INT24_MAX: 8388607,
|
|
14
|
+
INT24_UNSIGNED_MAX: 16777215,
|
|
15
|
+
INT32_MIN: -2147483648,
|
|
16
|
+
INT32_MAX: 2147483647,
|
|
17
|
+
INT32_UNSIGNED_MAX: 4294967295,
|
|
18
|
+
INT48_MIN: -0x800000000000,
|
|
19
|
+
INT48_MAX: 0x7fffffffffff,
|
|
20
|
+
INT48_UNSIGNED_MAX: 0xffffffffffff,
|
|
21
|
+
INT64_MIN: -9223372036854775808n,
|
|
22
|
+
INT64_MAX: 9223372036854775807n,
|
|
23
|
+
INT64_UNSIGNED_MAX: 18446744073709551615n
|
|
25
24
|
};
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/column.ts
|
|
28
|
+
const literalSchema = _sinclair_typebox.Type.Union([
|
|
29
|
+
_sinclair_typebox.Type.String(),
|
|
30
|
+
_sinclair_typebox.Type.Number(),
|
|
31
|
+
_sinclair_typebox.Type.Boolean(),
|
|
32
|
+
_sinclair_typebox.Type.Null()
|
|
33
|
+
]);
|
|
34
|
+
const jsonSchema = _sinclair_typebox.Type.Union([
|
|
35
|
+
literalSchema,
|
|
36
|
+
_sinclair_typebox.Type.Array(_sinclair_typebox.Type.Any()),
|
|
37
|
+
_sinclair_typebox.Type.Record(_sinclair_typebox.Type.String(), _sinclair_typebox.Type.Any())
|
|
38
|
+
]);
|
|
39
|
+
_sinclair_typebox.TypeRegistry.Set("Buffer", (_, value) => value instanceof Buffer);
|
|
40
|
+
const bufferSchema = {
|
|
41
|
+
[_sinclair_typebox.Kind]: "Buffer",
|
|
42
|
+
type: "buffer"
|
|
43
|
+
};
|
|
31
44
|
function mapEnumValues(values) {
|
|
32
|
-
|
|
45
|
+
return Object.fromEntries(values.map((value) => [value, value]));
|
|
33
46
|
}
|
|
34
|
-
function columnToSchema(column, t) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
default: {
|
|
67
|
-
schema = t.Any();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return schema;
|
|
47
|
+
function columnToSchema(column, t$2) {
|
|
48
|
+
let schema;
|
|
49
|
+
const dimensions = column.dimensions;
|
|
50
|
+
if (typeof dimensions === "number" && dimensions > 0) return pgArrayColumnToSchema(column, dimensions, t$2);
|
|
51
|
+
const { type, constraint } = (0, drizzle_orm.extractExtendedColumnType)(column);
|
|
52
|
+
switch (type) {
|
|
53
|
+
case "array":
|
|
54
|
+
schema = arrayColumnToSchema(column, constraint, t$2);
|
|
55
|
+
break;
|
|
56
|
+
case "object":
|
|
57
|
+
schema = objectColumnToSchema(column, constraint, t$2);
|
|
58
|
+
break;
|
|
59
|
+
case "number":
|
|
60
|
+
schema = numberColumnToSchema(column, constraint, t$2);
|
|
61
|
+
break;
|
|
62
|
+
case "bigint":
|
|
63
|
+
schema = bigintColumnToSchema(column, constraint, t$2);
|
|
64
|
+
break;
|
|
65
|
+
case "boolean":
|
|
66
|
+
schema = t$2.Boolean();
|
|
67
|
+
break;
|
|
68
|
+
case "string":
|
|
69
|
+
schema = stringColumnToSchema(column, constraint, t$2);
|
|
70
|
+
break;
|
|
71
|
+
case "custom":
|
|
72
|
+
schema = t$2.Any();
|
|
73
|
+
break;
|
|
74
|
+
default: schema = t$2.Any();
|
|
75
|
+
}
|
|
76
|
+
return schema;
|
|
71
77
|
}
|
|
72
|
-
function numberColumnToSchema(column, constraint, t) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
case 'unsigned': {
|
|
164
|
-
min = 0;
|
|
165
|
-
max = Number.MAX_SAFE_INTEGER;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
default: {
|
|
169
|
-
min = Number.MIN_SAFE_INTEGER;
|
|
170
|
-
max = Number.MAX_SAFE_INTEGER;
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
const key = integer ? 'Integer' : 'Number';
|
|
175
|
-
return t[key]({
|
|
176
|
-
minimum: min,
|
|
177
|
-
maximum: max,
|
|
178
|
-
});
|
|
78
|
+
function numberColumnToSchema(column, constraint, t$2) {
|
|
79
|
+
let min;
|
|
80
|
+
let max;
|
|
81
|
+
let integer = false;
|
|
82
|
+
switch (constraint) {
|
|
83
|
+
case "int8":
|
|
84
|
+
min = CONSTANTS.INT8_MIN;
|
|
85
|
+
max = CONSTANTS.INT8_MAX;
|
|
86
|
+
integer = true;
|
|
87
|
+
break;
|
|
88
|
+
case "uint8":
|
|
89
|
+
min = 0;
|
|
90
|
+
max = CONSTANTS.INT8_UNSIGNED_MAX;
|
|
91
|
+
integer = true;
|
|
92
|
+
break;
|
|
93
|
+
case "int16":
|
|
94
|
+
min = CONSTANTS.INT16_MIN;
|
|
95
|
+
max = CONSTANTS.INT16_MAX;
|
|
96
|
+
integer = true;
|
|
97
|
+
break;
|
|
98
|
+
case "uint16":
|
|
99
|
+
min = 0;
|
|
100
|
+
max = CONSTANTS.INT16_UNSIGNED_MAX;
|
|
101
|
+
integer = true;
|
|
102
|
+
break;
|
|
103
|
+
case "int24":
|
|
104
|
+
min = CONSTANTS.INT24_MIN;
|
|
105
|
+
max = CONSTANTS.INT24_MAX;
|
|
106
|
+
integer = true;
|
|
107
|
+
break;
|
|
108
|
+
case "uint24":
|
|
109
|
+
min = 0;
|
|
110
|
+
max = CONSTANTS.INT24_UNSIGNED_MAX;
|
|
111
|
+
integer = true;
|
|
112
|
+
break;
|
|
113
|
+
case "int32":
|
|
114
|
+
min = CONSTANTS.INT32_MIN;
|
|
115
|
+
max = CONSTANTS.INT32_MAX;
|
|
116
|
+
integer = true;
|
|
117
|
+
break;
|
|
118
|
+
case "uint32":
|
|
119
|
+
min = 0;
|
|
120
|
+
max = CONSTANTS.INT32_UNSIGNED_MAX;
|
|
121
|
+
integer = true;
|
|
122
|
+
break;
|
|
123
|
+
case "int53":
|
|
124
|
+
min = Number.MIN_SAFE_INTEGER;
|
|
125
|
+
max = Number.MAX_SAFE_INTEGER;
|
|
126
|
+
integer = true;
|
|
127
|
+
break;
|
|
128
|
+
case "uint53":
|
|
129
|
+
min = 0;
|
|
130
|
+
max = Number.MAX_SAFE_INTEGER;
|
|
131
|
+
integer = true;
|
|
132
|
+
break;
|
|
133
|
+
case "float":
|
|
134
|
+
min = CONSTANTS.INT24_MIN;
|
|
135
|
+
max = CONSTANTS.INT24_MAX;
|
|
136
|
+
break;
|
|
137
|
+
case "ufloat":
|
|
138
|
+
min = 0;
|
|
139
|
+
max = CONSTANTS.INT24_UNSIGNED_MAX;
|
|
140
|
+
break;
|
|
141
|
+
case "double":
|
|
142
|
+
min = CONSTANTS.INT48_MIN;
|
|
143
|
+
max = CONSTANTS.INT48_MAX;
|
|
144
|
+
break;
|
|
145
|
+
case "udouble":
|
|
146
|
+
min = 0;
|
|
147
|
+
max = CONSTANTS.INT48_UNSIGNED_MAX;
|
|
148
|
+
break;
|
|
149
|
+
case "year":
|
|
150
|
+
min = 1901;
|
|
151
|
+
max = 2155;
|
|
152
|
+
integer = true;
|
|
153
|
+
break;
|
|
154
|
+
case "unsigned":
|
|
155
|
+
min = 0;
|
|
156
|
+
max = Number.MAX_SAFE_INTEGER;
|
|
157
|
+
break;
|
|
158
|
+
default:
|
|
159
|
+
min = Number.MIN_SAFE_INTEGER;
|
|
160
|
+
max = Number.MAX_SAFE_INTEGER;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
return t$2[integer ? "Integer" : "Number"]({
|
|
164
|
+
minimum: min,
|
|
165
|
+
maximum: max
|
|
166
|
+
});
|
|
179
167
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
if (bigint < CONSTANTS.INT64_MIN || bigint > CONSTANTS.INT64_MAX) {
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
return true;
|
|
168
|
+
_sinclair_typebox.TypeRegistry.Set("BigIntStringMode", (_, value) => {
|
|
169
|
+
if (typeof value !== "string" || !/^-?\d+$/.test(value)) return false;
|
|
170
|
+
const bigint = BigInt(value);
|
|
171
|
+
if (bigint < CONSTANTS.INT64_MIN || bigint > CONSTANTS.INT64_MAX) return false;
|
|
172
|
+
return true;
|
|
189
173
|
});
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (bigint < 0 || bigint > CONSTANTS.INT64_MAX) {
|
|
196
|
-
return false;
|
|
197
|
-
}
|
|
198
|
-
return true;
|
|
174
|
+
_sinclair_typebox.TypeRegistry.Set("UnsignedBigIntStringMode", (_, value) => {
|
|
175
|
+
if (typeof value !== "string" || !/^\d+$/.test(value)) return false;
|
|
176
|
+
const bigint = BigInt(value);
|
|
177
|
+
if (bigint < 0 || bigint > CONSTANTS.INT64_MAX) return false;
|
|
178
|
+
return true;
|
|
199
179
|
});
|
|
200
180
|
/** @internal */
|
|
201
181
|
const bigintStringModeSchema = {
|
|
202
|
-
|
|
203
|
-
|
|
182
|
+
[_sinclair_typebox.Kind]: "BigIntStringMode",
|
|
183
|
+
type: "string"
|
|
204
184
|
};
|
|
205
185
|
/** @internal */
|
|
206
186
|
const unsignedBigintStringModeSchema = {
|
|
207
|
-
|
|
208
|
-
|
|
187
|
+
[_sinclair_typebox.Kind]: "UnsignedBigIntStringMode",
|
|
188
|
+
type: "string"
|
|
209
189
|
};
|
|
210
|
-
function
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
190
|
+
function pgArrayColumnToSchema(column, dimensions, t$2) {
|
|
191
|
+
const [baseType, baseConstraint] = column.dataType.split(" ");
|
|
192
|
+
let baseSchema;
|
|
193
|
+
switch (baseType) {
|
|
194
|
+
case "number":
|
|
195
|
+
baseSchema = numberColumnToSchema(column, baseConstraint, t$2);
|
|
196
|
+
break;
|
|
197
|
+
case "bigint":
|
|
198
|
+
baseSchema = bigintColumnToSchema(column, baseConstraint, t$2);
|
|
199
|
+
break;
|
|
200
|
+
case "boolean":
|
|
201
|
+
baseSchema = t$2.Boolean();
|
|
202
|
+
break;
|
|
203
|
+
case "string":
|
|
204
|
+
baseSchema = stringColumnToSchema(column, baseConstraint, t$2);
|
|
205
|
+
break;
|
|
206
|
+
case "object":
|
|
207
|
+
baseSchema = objectColumnToSchema(column, baseConstraint, t$2);
|
|
208
|
+
break;
|
|
209
|
+
case "array":
|
|
210
|
+
baseSchema = arrayColumnToSchema(column, baseConstraint, t$2);
|
|
211
|
+
break;
|
|
212
|
+
default: baseSchema = t$2.Any();
|
|
213
|
+
}
|
|
214
|
+
let schema = t$2.Array(baseSchema);
|
|
215
|
+
for (let i = 1; i < dimensions; i++) schema = t$2.Array(schema);
|
|
216
|
+
return schema;
|
|
217
|
+
}
|
|
218
|
+
function arrayColumnToSchema(column, constraint, t$2) {
|
|
219
|
+
switch (constraint) {
|
|
220
|
+
case "geometry":
|
|
221
|
+
case "point": return t$2.Tuple([t$2.Number(), t$2.Number()]);
|
|
222
|
+
case "line": return t$2.Tuple([
|
|
223
|
+
t$2.Number(),
|
|
224
|
+
t$2.Number(),
|
|
225
|
+
t$2.Number()
|
|
226
|
+
]);
|
|
227
|
+
case "vector":
|
|
228
|
+
case "halfvector": {
|
|
229
|
+
const length = column.length;
|
|
230
|
+
const sizeParam = length ? {
|
|
231
|
+
minItems: length,
|
|
232
|
+
maxItems: length
|
|
233
|
+
} : void 0;
|
|
234
|
+
return t$2.Array(t$2.Number(), sizeParam);
|
|
235
|
+
}
|
|
236
|
+
case "int64vector": {
|
|
237
|
+
const length = column.length;
|
|
238
|
+
const sizeParam = length ? {
|
|
239
|
+
minItems: length,
|
|
240
|
+
maxItems: length
|
|
241
|
+
} : void 0;
|
|
242
|
+
return t$2.Array(t$2.BigInt({
|
|
243
|
+
minimum: CONSTANTS.INT64_MIN,
|
|
244
|
+
maximum: CONSTANTS.INT64_MAX
|
|
245
|
+
}), sizeParam);
|
|
246
|
+
}
|
|
247
|
+
case "basecolumn": {
|
|
248
|
+
const baseColumn = column.baseColumn;
|
|
249
|
+
if (baseColumn) {
|
|
250
|
+
const size = column.length;
|
|
251
|
+
const sizeParam = size ? {
|
|
252
|
+
minItems: size,
|
|
253
|
+
maxItems: size
|
|
254
|
+
} : void 0;
|
|
255
|
+
return t$2.Array(columnToSchema(baseColumn, t$2), sizeParam);
|
|
256
|
+
}
|
|
257
|
+
return t$2.Array(t$2.Any());
|
|
258
|
+
}
|
|
259
|
+
default: return t$2.Array(t$2.Any());
|
|
260
|
+
}
|
|
259
261
|
}
|
|
260
|
-
function objectColumnToSchema(column, constraint, t) {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
278
|
-
case 'line': {
|
|
279
|
-
return t.Object({
|
|
280
|
-
a: t.Number(),
|
|
281
|
-
b: t.Number(),
|
|
282
|
-
c: t.Number(),
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
default: {
|
|
286
|
-
return t.Object({});
|
|
287
|
-
}
|
|
288
|
-
}
|
|
262
|
+
function objectColumnToSchema(column, constraint, t$2) {
|
|
263
|
+
switch (constraint) {
|
|
264
|
+
case "buffer": return bufferSchema;
|
|
265
|
+
case "date": return t$2.Date();
|
|
266
|
+
case "geometry":
|
|
267
|
+
case "point": return t$2.Object({
|
|
268
|
+
x: t$2.Number(),
|
|
269
|
+
y: t$2.Number()
|
|
270
|
+
});
|
|
271
|
+
case "json": return jsonSchema;
|
|
272
|
+
case "line": return t$2.Object({
|
|
273
|
+
a: t$2.Number(),
|
|
274
|
+
b: t$2.Number(),
|
|
275
|
+
c: t$2.Number()
|
|
276
|
+
});
|
|
277
|
+
default: return t$2.Object({});
|
|
278
|
+
}
|
|
289
279
|
}
|
|
290
|
-
function bigintColumnToSchema(column, constraint, t) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
options.minimum = min;
|
|
308
|
-
}
|
|
309
|
-
if (max !== undefined) {
|
|
310
|
-
options.maximum = max;
|
|
311
|
-
}
|
|
312
|
-
return t.BigInt(Object.keys(options).length > 0 ? options : undefined);
|
|
280
|
+
function bigintColumnToSchema(column, constraint, t$2) {
|
|
281
|
+
let min;
|
|
282
|
+
let max;
|
|
283
|
+
switch (constraint) {
|
|
284
|
+
case "int64":
|
|
285
|
+
min = CONSTANTS.INT64_MIN;
|
|
286
|
+
max = CONSTANTS.INT64_MAX;
|
|
287
|
+
break;
|
|
288
|
+
case "uint64":
|
|
289
|
+
min = 0n;
|
|
290
|
+
max = CONSTANTS.INT64_UNSIGNED_MAX;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
const options = {};
|
|
294
|
+
if (min !== void 0) options.minimum = min;
|
|
295
|
+
if (max !== void 0) options.maximum = max;
|
|
296
|
+
return t$2.BigInt(Object.keys(options).length > 0 ? options : void 0);
|
|
313
297
|
}
|
|
314
|
-
function stringColumnToSchema(column, constraint, t) {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
if (constraint === 'int64') {
|
|
333
|
-
return bigintStringModeSchema;
|
|
334
|
-
}
|
|
335
|
-
if (constraint === 'uint64') {
|
|
336
|
-
return unsignedBigintStringModeSchema;
|
|
337
|
-
}
|
|
338
|
-
const options = {};
|
|
339
|
-
if (length !== undefined && isLengthExact) {
|
|
340
|
-
options.minLength = length;
|
|
341
|
-
options.maxLength = length;
|
|
342
|
-
}
|
|
343
|
-
else if (length !== undefined) {
|
|
344
|
-
options.maxLength = length;
|
|
345
|
-
}
|
|
346
|
-
return regex
|
|
347
|
-
? t.RegExp(regex, Object.keys(options).length > 0 ? options : undefined)
|
|
348
|
-
: t.String(Object.keys(options).length > 0 ? options : undefined);
|
|
298
|
+
function stringColumnToSchema(column, constraint, t$2) {
|
|
299
|
+
const { name: columnName, length, isLengthExact } = column;
|
|
300
|
+
let regex;
|
|
301
|
+
if (constraint === "binary") regex = /^[01]*$/;
|
|
302
|
+
if (constraint === "uuid") return t$2.String({ format: "uuid" });
|
|
303
|
+
if (constraint === "enum") {
|
|
304
|
+
const enumValues = column.enumValues;
|
|
305
|
+
if (!enumValues) throw new Error(`Column "${(0, drizzle_orm.getTableName)((0, drizzle_orm.getColumnTable)(column))}"."${columnName}" is of 'enum' type, but lacks enum values`);
|
|
306
|
+
return t$2.Enum(mapEnumValues(enumValues));
|
|
307
|
+
}
|
|
308
|
+
if (constraint === "int64") return bigintStringModeSchema;
|
|
309
|
+
if (constraint === "uint64") return unsignedBigintStringModeSchema;
|
|
310
|
+
const options = {};
|
|
311
|
+
if (length !== void 0 && isLengthExact) {
|
|
312
|
+
options.minLength = length;
|
|
313
|
+
options.maxLength = length;
|
|
314
|
+
} else if (length !== void 0) options.maxLength = length;
|
|
315
|
+
return regex ? t$2.RegExp(regex, Object.keys(options).length > 0 ? options : void 0) : t$2.String(Object.keys(options).length > 0 ? options : void 0);
|
|
349
316
|
}
|
|
350
317
|
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region src/utils.ts
|
|
351
320
|
function isColumnType(column, columnTypes) {
|
|
352
|
-
|
|
321
|
+
return columnTypes.includes(column.columnType);
|
|
353
322
|
}
|
|
354
323
|
function isWithEnum(column) {
|
|
355
|
-
|
|
324
|
+
return "enumValues" in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
|
|
356
325
|
}
|
|
357
326
|
const isPgEnum = isWithEnum;
|
|
358
327
|
|
|
328
|
+
//#endregion
|
|
329
|
+
//#region src/schema.ts
|
|
359
330
|
function getColumns(tableLike) {
|
|
360
|
-
|
|
331
|
+
return (0, drizzle_orm.isTable)(tableLike) ? (0, drizzle_orm.getTableColumns)(tableLike) : (0, drizzle_orm.getViewSelectedFields)(tableLike);
|
|
361
332
|
}
|
|
362
333
|
function handleColumns(columns, refinements, conditions, factory) {
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
if (conditions.nullable(column)) {
|
|
386
|
-
columnSchemas[key] = typebox.Type.Union([columnSchemas[key], typebox.Type.Null()]);
|
|
387
|
-
}
|
|
388
|
-
if (conditions.optional(column)) {
|
|
389
|
-
columnSchemas[key] = typebox.Type.Optional(columnSchemas[key]);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
return typebox.Type.Object(columnSchemas);
|
|
334
|
+
const columnSchemas = {};
|
|
335
|
+
for (const [key, selected] of Object.entries(columns)) {
|
|
336
|
+
if (!(0, drizzle_orm.is)(selected, drizzle_orm.Column) && !(0, drizzle_orm.is)(selected, drizzle_orm.SQL) && !(0, drizzle_orm.is)(selected, drizzle_orm.SQL.Aliased) && typeof selected === "object") {
|
|
337
|
+
columnSchemas[key] = handleColumns((0, drizzle_orm.isTable)(selected) || (0, drizzle_orm.isView)(selected) ? getColumns(selected) : selected, refinements[key] ?? {}, conditions, factory);
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
const refinement = refinements[key];
|
|
341
|
+
if (refinement !== void 0 && typeof refinement !== "function") {
|
|
342
|
+
columnSchemas[key] = refinement;
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
const column = (0, drizzle_orm.is)(selected, drizzle_orm.Column) ? selected : void 0;
|
|
346
|
+
const schema = column ? columnToSchema(column, factory?.typeboxInstance ?? _sinclair_typebox.Type) : _sinclair_typebox.Type.Any();
|
|
347
|
+
const refined = typeof refinement === "function" ? refinement(schema) : schema;
|
|
348
|
+
if (conditions.never(column)) continue;
|
|
349
|
+
else columnSchemas[key] = refined;
|
|
350
|
+
if (column) {
|
|
351
|
+
if (conditions.nullable(column)) columnSchemas[key] = _sinclair_typebox.Type.Union([columnSchemas[key], _sinclair_typebox.Type.Null()]);
|
|
352
|
+
if (conditions.optional(column)) columnSchemas[key] = _sinclair_typebox.Type.Optional(columnSchemas[key]);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return _sinclair_typebox.Type.Object(columnSchemas);
|
|
394
356
|
}
|
|
395
357
|
function handleEnum(enum_, factory) {
|
|
396
|
-
|
|
397
|
-
return typebox$1.Enum(mapEnumValues(enum_.enumValues));
|
|
358
|
+
return (factory?.typeboxInstance ?? _sinclair_typebox.Type).Enum(mapEnumValues(enum_.enumValues));
|
|
398
359
|
}
|
|
399
360
|
const selectConditions = {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
361
|
+
never: () => false,
|
|
362
|
+
optional: () => false,
|
|
363
|
+
nullable: (column) => !column.notNull
|
|
403
364
|
};
|
|
404
365
|
const insertConditions = {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
nullable: (column) => !column.notNull,
|
|
366
|
+
never: (column) => column?.generated?.type === "always" || column?.generatedIdentity?.type === "always" || "identity" in (column ?? {}) && typeof column?.identity !== "undefined",
|
|
367
|
+
optional: (column) => !column.notNull || column.notNull && column.hasDefault,
|
|
368
|
+
nullable: (column) => !column.notNull
|
|
409
369
|
};
|
|
410
370
|
const updateConditions = {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
nullable: (column) => !column.notNull,
|
|
371
|
+
never: (column) => column?.generated?.type === "always" || column?.generatedIdentity?.type === "always" || "identity" in (column ?? {}) && typeof column?.identity !== "undefined",
|
|
372
|
+
optional: () => true,
|
|
373
|
+
nullable: (column) => !column.notNull
|
|
415
374
|
};
|
|
416
375
|
const createSelectSchema = (entity, refine) => {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}
|
|
420
|
-
const columns = getColumns(entity);
|
|
421
|
-
return handleColumns(columns, refine ?? {}, selectConditions);
|
|
376
|
+
if (isPgEnum(entity)) return handleEnum(entity);
|
|
377
|
+
return handleColumns(getColumns(entity), refine ?? {}, selectConditions);
|
|
422
378
|
};
|
|
423
379
|
const createInsertSchema = (entity, refine) => {
|
|
424
|
-
|
|
425
|
-
return handleColumns(columns, refine ?? {}, insertConditions);
|
|
380
|
+
return handleColumns(getColumns(entity), refine ?? {}, insertConditions);
|
|
426
381
|
};
|
|
427
382
|
const createUpdateSchema = (entity, refine) => {
|
|
428
|
-
|
|
429
|
-
return handleColumns(columns, refine ?? {}, updateConditions);
|
|
383
|
+
return handleColumns(getColumns(entity), refine ?? {}, updateConditions);
|
|
430
384
|
};
|
|
431
385
|
function createSchemaFactory(options) {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
return { createSelectSchema, createInsertSchema, createUpdateSchema };
|
|
386
|
+
const createSelectSchema$1 = (entity, refine) => {
|
|
387
|
+
if (isPgEnum(entity)) return handleEnum(entity, options);
|
|
388
|
+
return handleColumns(getColumns(entity), refine ?? {}, selectConditions, options);
|
|
389
|
+
};
|
|
390
|
+
const createInsertSchema$1 = (entity, refine) => {
|
|
391
|
+
return handleColumns(getColumns(entity), refine ?? {}, insertConditions, options);
|
|
392
|
+
};
|
|
393
|
+
const createUpdateSchema$1 = (entity, refine) => {
|
|
394
|
+
return handleColumns(getColumns(entity), refine ?? {}, updateConditions, options);
|
|
395
|
+
};
|
|
396
|
+
return {
|
|
397
|
+
createSelectSchema: createSelectSchema$1,
|
|
398
|
+
createInsertSchema: createInsertSchema$1,
|
|
399
|
+
createUpdateSchema: createUpdateSchema$1
|
|
400
|
+
};
|
|
448
401
|
}
|
|
449
402
|
|
|
403
|
+
//#endregion
|
|
450
404
|
exports.bufferSchema = bufferSchema;
|
|
451
405
|
exports.createInsertSchema = createInsertSchema;
|
|
452
406
|
exports.createSchemaFactory = createSchemaFactory;
|
|
@@ -460,4 +414,4 @@ exports.isPgEnum = isPgEnum;
|
|
|
460
414
|
exports.isWithEnum = isWithEnum;
|
|
461
415
|
exports.jsonSchema = jsonSchema;
|
|
462
416
|
exports.literalSchema = literalSchema;
|
|
463
|
-
//# sourceMappingURL=index.cjs.map
|
|
417
|
+
//# sourceMappingURL=index.cjs.map
|