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