drizzle-typebox 1.0.0-beta.6-9514357 → 1.0.0-beta.6-051f3cd
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 +355 -445
- 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 +348 -436
- 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 -31
- package/column.types.d.mts +0 -31
- package/column.types.d.ts +0 -31
- 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,496 +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
|
-
schema = stringColumnToSchema(column, constraint, t);
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
case 'custom': {
|
|
68
|
-
schema = t.Any();
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
default: {
|
|
72
|
-
schema = t.Any();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
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;
|
|
76
77
|
}
|
|
77
|
-
function numberColumnToSchema(column, constraint, t) {
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
case 'unsigned': {
|
|
169
|
-
min = 0;
|
|
170
|
-
max = Number.MAX_SAFE_INTEGER;
|
|
171
|
-
break;
|
|
172
|
-
}
|
|
173
|
-
default: {
|
|
174
|
-
min = Number.MIN_SAFE_INTEGER;
|
|
175
|
-
max = Number.MAX_SAFE_INTEGER;
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
const key = integer ? 'Integer' : 'Number';
|
|
180
|
-
return t[key]({
|
|
181
|
-
minimum: min,
|
|
182
|
-
maximum: max,
|
|
183
|
-
});
|
|
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
|
+
});
|
|
184
167
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if (bigint < CONSTANTS.INT64_MIN || bigint > CONSTANTS.INT64_MAX) {
|
|
191
|
-
return false;
|
|
192
|
-
}
|
|
193
|
-
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;
|
|
194
173
|
});
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
if (bigint < 0 || bigint > CONSTANTS.INT64_MAX) {
|
|
201
|
-
return false;
|
|
202
|
-
}
|
|
203
|
-
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;
|
|
204
179
|
});
|
|
205
180
|
/** @internal */
|
|
206
181
|
const bigintStringModeSchema = {
|
|
207
|
-
|
|
208
|
-
|
|
182
|
+
[_sinclair_typebox.Kind]: "BigIntStringMode",
|
|
183
|
+
type: "string"
|
|
209
184
|
};
|
|
210
185
|
/** @internal */
|
|
211
186
|
const unsignedBigintStringModeSchema = {
|
|
212
|
-
|
|
213
|
-
|
|
187
|
+
[_sinclair_typebox.Kind]: "UnsignedBigIntStringMode",
|
|
188
|
+
type: "string"
|
|
214
189
|
};
|
|
215
|
-
function pgArrayColumnToSchema(column, dimensions, t) {
|
|
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
|
-
// Wrap in arrays based on dimensions
|
|
244
|
-
// Note: For PG arrays, column.length is the base type's length (e.g., varchar(10)), not array size
|
|
245
|
-
let schema = t.Array(baseSchema);
|
|
246
|
-
for (let i = 1; i < dimensions; i++) {
|
|
247
|
-
schema = t.Array(schema);
|
|
248
|
-
}
|
|
249
|
-
return schema;
|
|
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;
|
|
250
217
|
}
|
|
251
|
-
function arrayColumnToSchema(column, constraint, t) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
: undefined;
|
|
295
|
-
return t.Array(columnToSchema(baseColumn, t), sizeParam);
|
|
296
|
-
}
|
|
297
|
-
return t.Array(t.Any());
|
|
298
|
-
}
|
|
299
|
-
default: {
|
|
300
|
-
return t.Array(t.Any());
|
|
301
|
-
}
|
|
302
|
-
}
|
|
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
|
+
}
|
|
303
261
|
}
|
|
304
|
-
function objectColumnToSchema(column, constraint, t) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
case 'line': {
|
|
323
|
-
return t.Object({
|
|
324
|
-
a: t.Number(),
|
|
325
|
-
b: t.Number(),
|
|
326
|
-
c: t.Number(),
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
default: {
|
|
330
|
-
return t.Object({});
|
|
331
|
-
}
|
|
332
|
-
}
|
|
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
|
+
}
|
|
333
279
|
}
|
|
334
|
-
function bigintColumnToSchema(column, constraint, t) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
options.minimum = min;
|
|
352
|
-
}
|
|
353
|
-
if (max !== undefined) {
|
|
354
|
-
options.maximum = max;
|
|
355
|
-
}
|
|
356
|
-
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);
|
|
357
297
|
}
|
|
358
|
-
function stringColumnToSchema(column, constraint, t) {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
if (constraint === 'int64') {
|
|
377
|
-
return bigintStringModeSchema;
|
|
378
|
-
}
|
|
379
|
-
if (constraint === 'uint64') {
|
|
380
|
-
return unsignedBigintStringModeSchema;
|
|
381
|
-
}
|
|
382
|
-
const options = {};
|
|
383
|
-
if (length !== undefined && isLengthExact) {
|
|
384
|
-
options.minLength = length;
|
|
385
|
-
options.maxLength = length;
|
|
386
|
-
}
|
|
387
|
-
else if (length !== undefined) {
|
|
388
|
-
options.maxLength = length;
|
|
389
|
-
}
|
|
390
|
-
return regex
|
|
391
|
-
? t.RegExp(regex, Object.keys(options).length > 0 ? options : undefined)
|
|
392
|
-
: 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);
|
|
393
316
|
}
|
|
394
317
|
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region src/utils.ts
|
|
395
320
|
function isColumnType(column, columnTypes) {
|
|
396
|
-
|
|
321
|
+
return columnTypes.includes(column.columnType);
|
|
397
322
|
}
|
|
398
323
|
function isWithEnum(column) {
|
|
399
|
-
|
|
324
|
+
return "enumValues" in column && Array.isArray(column.enumValues) && column.enumValues.length > 0;
|
|
400
325
|
}
|
|
401
326
|
const isPgEnum = isWithEnum;
|
|
402
327
|
|
|
328
|
+
//#endregion
|
|
329
|
+
//#region src/schema.ts
|
|
403
330
|
function getColumns(tableLike) {
|
|
404
|
-
|
|
331
|
+
return (0, drizzle_orm.isTable)(tableLike) ? (0, drizzle_orm.getTableColumns)(tableLike) : (0, drizzle_orm.getViewSelectedFields)(tableLike);
|
|
405
332
|
}
|
|
406
333
|
function handleColumns(columns, refinements, conditions, factory) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
if (conditions.nullable(column)) {
|
|
430
|
-
columnSchemas[key] = typebox.Type.Union([columnSchemas[key], typebox.Type.Null()]);
|
|
431
|
-
}
|
|
432
|
-
if (conditions.optional(column)) {
|
|
433
|
-
columnSchemas[key] = typebox.Type.Optional(columnSchemas[key]);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
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);
|
|
438
356
|
}
|
|
439
357
|
function handleEnum(enum_, factory) {
|
|
440
|
-
|
|
441
|
-
return typebox$1.Enum(mapEnumValues(enum_.enumValues));
|
|
358
|
+
return (factory?.typeboxInstance ?? _sinclair_typebox.Type).Enum(mapEnumValues(enum_.enumValues));
|
|
442
359
|
}
|
|
443
360
|
const selectConditions = {
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
361
|
+
never: () => false,
|
|
362
|
+
optional: () => false,
|
|
363
|
+
nullable: (column) => !column.notNull
|
|
447
364
|
};
|
|
448
365
|
const insertConditions = {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
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
|
|
453
369
|
};
|
|
454
370
|
const updateConditions = {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
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
|
|
459
374
|
};
|
|
460
375
|
const createSelectSchema = (entity, refine) => {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
const columns = getColumns(entity);
|
|
465
|
-
return handleColumns(columns, refine ?? {}, selectConditions);
|
|
376
|
+
if (isPgEnum(entity)) return handleEnum(entity);
|
|
377
|
+
return handleColumns(getColumns(entity), refine ?? {}, selectConditions);
|
|
466
378
|
};
|
|
467
379
|
const createInsertSchema = (entity, refine) => {
|
|
468
|
-
|
|
469
|
-
return handleColumns(columns, refine ?? {}, insertConditions);
|
|
380
|
+
return handleColumns(getColumns(entity), refine ?? {}, insertConditions);
|
|
470
381
|
};
|
|
471
382
|
const createUpdateSchema = (entity, refine) => {
|
|
472
|
-
|
|
473
|
-
return handleColumns(columns, refine ?? {}, updateConditions);
|
|
383
|
+
return handleColumns(getColumns(entity), refine ?? {}, updateConditions);
|
|
474
384
|
};
|
|
475
385
|
function createSchemaFactory(options) {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
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
|
+
};
|
|
492
401
|
}
|
|
493
402
|
|
|
403
|
+
//#endregion
|
|
494
404
|
exports.bufferSchema = bufferSchema;
|
|
495
405
|
exports.createInsertSchema = createInsertSchema;
|
|
496
406
|
exports.createSchemaFactory = createSchemaFactory;
|
|
@@ -504,4 +414,4 @@ exports.isPgEnum = isPgEnum;
|
|
|
504
414
|
exports.isWithEnum = isWithEnum;
|
|
505
415
|
exports.jsonSchema = jsonSchema;
|
|
506
416
|
exports.literalSchema = literalSchema;
|
|
507
|
-
//# sourceMappingURL=index.cjs.map
|
|
417
|
+
//# sourceMappingURL=index.cjs.map
|