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