orchid-orm-schema-to-zod 0.3.90 → 0.3.92
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/dist/index.d.ts +34 -21
- package/dist/index.js +82 -85
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +83 -86
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pqb from 'pqb';
|
|
2
2
|
import { ColumnsShape, ColumnType, EnumColumn, ArrayColumn, JSONColumn, VirtualColumn } from 'pqb';
|
|
3
|
-
import { JSONDiscriminatedUnion,
|
|
3
|
+
import { JSONDiscriminatedUnion, JSONType, ColumnTypeBase, JSONUnion, JSONArray, JSONEnum, JSONLiteral, JSONNativeEnum, JSONTuple, JSONTupleItems, JSONObject, JSONObjectShape, UnknownKeysParam, JSONRecord, JSONString, JSONNumber, JSONIntersection } from 'orchid-core';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { Buffer } from 'node:buffer';
|
|
6
6
|
|
|
@@ -19,26 +19,39 @@ type SchemaToZod<T extends ColumnTypeBase, D = T['dataType']> = T['data']['isNul
|
|
|
19
19
|
data: Omit<T['data'], 'isNullable'> & {
|
|
20
20
|
isNullable: false;
|
|
21
21
|
};
|
|
22
|
-
}>> : D extends NumberType ? z.ZodNumber : D extends BigIntType | StringType | TimeType | GeometryType | NetworkType | BitStringType | FullTextSearchType | UUIDType ? z.ZodString : D extends ByteaType ? z.ZodType<Buffer> : D extends DateTimeType ? z.ZodDate : D extends 'interval' ? typeof interval : D extends 'boolean' ? z.ZodBoolean : T extends EnumColumn<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
}>> : D extends NumberType ? z.ZodNumber : D extends BigIntType | StringType | TimeType | GeometryType | NetworkType | BitStringType | FullTextSearchType | UUIDType ? z.ZodString : D extends ByteaType ? z.ZodType<Buffer> : D extends DateTimeType ? z.ZodDate : D extends 'interval' ? typeof interval : D extends 'boolean' ? z.ZodBoolean : T extends EnumColumn<any, any> ? z.ZodEnum<T['options']> : T extends ArrayColumn<any> ? z.ZodArray<SchemaToZod<T['data']['item']>> : T extends JSONColumn<JSONType> ? JsonToZod<T['data']['schema']> : T extends VirtualColumn ? z.ZodNever : never;
|
|
23
|
+
declare module 'orchid-core' {
|
|
24
|
+
interface JSONType {
|
|
25
|
+
zod: z.ZodTypeAny;
|
|
26
|
+
}
|
|
27
|
+
interface JSONUnknown {
|
|
28
|
+
zod: z.ZodUnknown;
|
|
29
|
+
}
|
|
30
|
+
interface JSONBoolean {
|
|
31
|
+
zod: z.ZodBoolean;
|
|
32
|
+
}
|
|
33
|
+
interface JSONNull {
|
|
34
|
+
zod: z.ZodNull;
|
|
35
|
+
}
|
|
36
|
+
interface JSONNumber {
|
|
37
|
+
zod: z.ZodNumber;
|
|
38
|
+
}
|
|
39
|
+
interface JSONString {
|
|
40
|
+
zod: z.ZodString;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
type JsonToZod<T extends JSONType> = T['data']['nullable'] extends true ? z.ZodNullable<JsonNotNullableToZod<T>> : JsonNotNullableToZod<T>;
|
|
44
|
+
type JsonNotNullableToZod<T extends JSONType> = T['data']['optional'] extends true ? z.ZodOptional<JsonNotOptionalToZod<T>> : JsonNotOptionalToZod<T>;
|
|
45
|
+
type JsonNotOptionalToZod<T extends JSONType> = T extends JSONUnion<any> ? z.ZodUnion<MapUnionArgs<T['data']['types']>> : T extends JSONArray<JSONType> ? z.ZodArray<JsonToZod<T['data']['item']>> : T extends JSONEnum<any, any> ? z.ZodEnum<T['data']['options']> : T extends JSONLiteral<any> ? z.ZodLiteral<T['data']['value']> : T extends JSONNativeEnum<any> ? z.ZodNativeEnum<T['data']['enum']> : T extends JSONTuple<JSONTupleItems, JSONType | undefined> ? z.ZodTuple<MapJsonTuple<T['data']['items']>, T['data']['rest'] extends JSONType ? JsonToZod<T['data']['rest']> : null> : T extends JSONObject<JSONObjectShape, UnknownKeysParam> ? z.ZodObject<{
|
|
46
|
+
[K in keyof T['data']['shape']]: JsonToZod<T['data']['shape'][K]>;
|
|
47
|
+
}, T['data']['unknownKeys'], JsonToZod<T['data']['catchAll']>> : T extends JSONRecord<JSONString | JSONNumber, JSONType> ? T['data']['key'] extends JSONString ? z.ZodRecord<z.ZodString, JsonToZod<T['data']['value']>> : z.ZodRecord<z.ZodNumber, JsonToZod<T['data']['value']>> : T extends JSONIntersection<JSONType, JSONType> ? z.ZodIntersection<JsonToZod<T['data']['left']>, JsonToZod<T['data']['right']>> : T extends JSONDiscriminatedUnion<string, any> ? MapDiscriminatedUnion<T> : T['zod'];
|
|
48
|
+
type MapDiscriminatedUnion<T extends JSONDiscriminatedUnion<string, any>, Options = MapJsonTuple<T['data']['types']>> = z.ZodDiscriminatedUnion<T['data']['discriminator'], Options extends z.ZodDiscriminatedUnionOption<T['data']['discriminator']>[] ? Options : never>;
|
|
49
|
+
type MapUnionArgs<T extends unknown[]> = T extends [
|
|
50
|
+
infer F extends JSONType,
|
|
51
|
+
infer S extends JSONType,
|
|
52
|
+
...infer Tail
|
|
53
|
+
] ? [JsonToZod<F>, JsonToZod<S>, ...MapJsonTuple<Tail>] : never;
|
|
54
|
+
type MapJsonTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail] ? [Head extends JSONType ? JsonToZod<Head> : never, ...MapJsonTuple<Tail>] : [];
|
|
42
55
|
type TableToZod<T extends new () => {
|
|
43
56
|
columns: {
|
|
44
57
|
shape: ColumnsShape;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var pqb = require('pqb');
|
|
4
|
+
var orchidCore = require('orchid-core');
|
|
4
5
|
var zod = require('zod');
|
|
5
6
|
var node_buffer = require('node:buffer');
|
|
6
7
|
|
|
@@ -47,17 +48,20 @@ const typeHandler = (fn) => {
|
|
|
47
48
|
}
|
|
48
49
|
return { message: invalid_type_error != null ? invalid_type_error : ctx.defaultError };
|
|
49
50
|
};
|
|
50
|
-
column.chain
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
const chain = column instanceof pqb.ColumnType ? column.chain : column.data.chain;
|
|
52
|
+
if (chain) {
|
|
53
|
+
for (const item of chain) {
|
|
54
|
+
if (item[0] === "transform") {
|
|
55
|
+
type = type.transform(item[1]);
|
|
56
|
+
} else if (item[0] === "to") {
|
|
57
|
+
type = zod.z.preprocess(item[1], itemToZod(item[2]));
|
|
58
|
+
} else if (item[0] === "refine") {
|
|
59
|
+
type = type.refine(item[1], { message: errors == null ? void 0 : errors.refine });
|
|
60
|
+
} else if (item[0] === "superRefine") {
|
|
61
|
+
type = type.superRefine(item[1]);
|
|
62
|
+
}
|
|
59
63
|
}
|
|
60
|
-
}
|
|
64
|
+
}
|
|
61
65
|
if ("nullable" in column.data && column.data.nullable || column.data.isNullable) {
|
|
62
66
|
if ("optional" in column.data && column.data.optional) {
|
|
63
67
|
type = type.nullish();
|
|
@@ -200,10 +204,13 @@ const interval = zod.z.object({
|
|
|
200
204
|
}).strict();
|
|
201
205
|
const handleInterval = typeHandler(() => interval);
|
|
202
206
|
const handleBoolean = typeHandler(() => zod.z.boolean());
|
|
203
|
-
const handleEnum = typeHandler(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
const handleEnum = typeHandler(
|
|
208
|
+
(column) => {
|
|
209
|
+
const enumColumn = column;
|
|
210
|
+
const options = enumColumn instanceof pqb.EnumColumn ? enumColumn.options : enumColumn.data.options;
|
|
211
|
+
return zod.z.enum(options);
|
|
212
|
+
}
|
|
213
|
+
);
|
|
207
214
|
const handleBitString = typeHandler((_, errors) => {
|
|
208
215
|
return zod.z.string().regex(/[10]/g, { message: errors == null ? void 0 : errors.invalidType });
|
|
209
216
|
});
|
|
@@ -214,10 +221,10 @@ const arrayParams = ["min", "max", "length"];
|
|
|
214
221
|
const handleArray = typeHandler(
|
|
215
222
|
(array, errors) => {
|
|
216
223
|
let type;
|
|
217
|
-
if (
|
|
218
|
-
type = zod.z.array(jsonItemToZod(array.element));
|
|
219
|
-
} else {
|
|
224
|
+
if (array instanceof pqb.ColumnType) {
|
|
220
225
|
type = zod.z.array(columnToZod(array.data.item));
|
|
226
|
+
} else {
|
|
227
|
+
type = zod.z.array(jsonItemToZod(array.data.item));
|
|
221
228
|
}
|
|
222
229
|
arrayParams.forEach((key) => {
|
|
223
230
|
const value = array.data[key];
|
|
@@ -234,10 +241,41 @@ const handleJson = typeHandler((column) => {
|
|
|
234
241
|
return jsonItemToZod(type);
|
|
235
242
|
});
|
|
236
243
|
const jsonItemToZod = (type) => {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
244
|
+
if (type instanceof orchidCore.JSONUnknown) {
|
|
245
|
+
return handleUnknown(type);
|
|
246
|
+
} else if (type instanceof orchidCore.JSONBoolean) {
|
|
247
|
+
return handleBoolean(type);
|
|
248
|
+
} else if (type instanceof orchidCore.JSONNull) {
|
|
249
|
+
return handleNull(type);
|
|
250
|
+
} else if (type instanceof orchidCore.JSONNumber) {
|
|
251
|
+
return handleNumber(type);
|
|
252
|
+
} else if (type instanceof orchidCore.JSONString) {
|
|
253
|
+
return handleString(type);
|
|
254
|
+
} else if (type instanceof orchidCore.JSONArray) {
|
|
255
|
+
return handleArray(type);
|
|
256
|
+
} else if (type instanceof orchidCore.JSONObject) {
|
|
257
|
+
return handleObject(type);
|
|
258
|
+
} else if (type instanceof orchidCore.JSONLiteral) {
|
|
259
|
+
return handleLiteral(type);
|
|
260
|
+
} else if (type instanceof orchidCore.JSONDiscriminatedUnion) {
|
|
261
|
+
return handleDiscriminatedUnion(type);
|
|
262
|
+
} else if (type instanceof orchidCore.JSONEnum) {
|
|
263
|
+
return handleEnum(type);
|
|
264
|
+
} else if (type instanceof orchidCore.JSONIntersection) {
|
|
265
|
+
return handleIntersection(type);
|
|
266
|
+
} else if (type instanceof orchidCore.JSONLazy) {
|
|
267
|
+
return handleLazy(type);
|
|
268
|
+
} else if (type instanceof orchidCore.JSONNativeEnum) {
|
|
269
|
+
return handleNativeEnum(type);
|
|
270
|
+
} else if (type instanceof orchidCore.JSONRecord) {
|
|
271
|
+
return handleRecord(type);
|
|
272
|
+
} else if (type instanceof orchidCore.JSONTuple) {
|
|
273
|
+
return handleTuple(type);
|
|
274
|
+
} else if (type instanceof orchidCore.JSONUnion) {
|
|
275
|
+
return handleUnion(type);
|
|
276
|
+
} else {
|
|
277
|
+
throw new Error(`Cannot parse column ${type.constructor.name}`);
|
|
278
|
+
}
|
|
241
279
|
};
|
|
242
280
|
const itemToZod = (item) => {
|
|
243
281
|
return item instanceof pqb.ColumnType ? columnToZod(item) : jsonItemToZod(item);
|
|
@@ -286,116 +324,75 @@ const converters = {
|
|
|
286
324
|
array: handleArray,
|
|
287
325
|
jsonb: handleJson
|
|
288
326
|
};
|
|
289
|
-
const handleAny = typeHandler(() => zod.z.any());
|
|
290
|
-
const handleNaN = typeHandler(() => zod.z.nan());
|
|
291
327
|
const handleNever = typeHandler(() => zod.z.never());
|
|
292
328
|
const handleNull = typeHandler(() => zod.z.null());
|
|
293
329
|
const handleUnknown = typeHandler(() => zod.z.unknown());
|
|
294
|
-
const handleInstanceOf = typeHandler(
|
|
295
|
-
(type) => zod.z.instanceof(type.class)
|
|
296
|
-
);
|
|
297
330
|
const handleLiteral = typeHandler((type) => {
|
|
298
|
-
return zod.z.literal(type.value);
|
|
299
|
-
});
|
|
300
|
-
const handleMap = typeHandler((type) => {
|
|
301
|
-
const { keyType, valueType } = type;
|
|
302
|
-
return zod.z.map(jsonItemToZod(keyType), jsonItemToZod(valueType));
|
|
303
|
-
});
|
|
304
|
-
const setParams = ["min", "max", "size"];
|
|
305
|
-
const handleSet = typeHandler((column, errors) => {
|
|
306
|
-
const { valueType } = column;
|
|
307
|
-
let type = zod.z.set(jsonItemToZod(valueType));
|
|
308
|
-
setParams.forEach((key) => {
|
|
309
|
-
const value = column.data[key];
|
|
310
|
-
if (value !== void 0) {
|
|
311
|
-
type = type[key](value, { message: errors == null ? void 0 : errors[key] });
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
return type;
|
|
331
|
+
return zod.z.literal(type.data.value);
|
|
315
332
|
});
|
|
316
333
|
const handleNativeEnum = typeHandler((type) => {
|
|
317
|
-
return zod.z.nativeEnum(type.enum);
|
|
334
|
+
return zod.z.nativeEnum(type.data.enum);
|
|
318
335
|
});
|
|
319
336
|
const handleTuple = typeHandler((column) => {
|
|
320
337
|
let type = zod.z.tuple(
|
|
321
|
-
column.items.map((item) => jsonItemToZod(item))
|
|
338
|
+
column.data.items.map((item) => jsonItemToZod(item))
|
|
322
339
|
);
|
|
323
|
-
if (column.
|
|
324
|
-
type = type.rest(jsonItemToZod(column.
|
|
340
|
+
if (column.data.rest) {
|
|
341
|
+
type = type.rest(jsonItemToZod(column.data.rest));
|
|
325
342
|
}
|
|
326
343
|
return type;
|
|
327
344
|
});
|
|
328
345
|
const handleObject = typeHandler(
|
|
329
346
|
(type, errors) => {
|
|
330
347
|
const shape = {};
|
|
331
|
-
for (const key in type.shape) {
|
|
332
|
-
shape[key] = jsonItemToZod(type.shape[key]);
|
|
348
|
+
for (const key in type.data.shape) {
|
|
349
|
+
shape[key] = jsonItemToZod(type.data.shape[key]);
|
|
333
350
|
}
|
|
334
351
|
let object = zod.z.object(shape);
|
|
335
|
-
if (type.unknownKeys === "passthrough") {
|
|
352
|
+
if (type.data.unknownKeys === "passthrough") {
|
|
336
353
|
object = object.passthrough();
|
|
337
|
-
} else if (type.unknownKeys === "strict") {
|
|
354
|
+
} else if (type.data.unknownKeys === "strict") {
|
|
338
355
|
object = object.strict(errors == null ? void 0 : errors.strict);
|
|
339
356
|
}
|
|
340
|
-
if (type.
|
|
341
|
-
object = object.catchall(jsonItemToZod(type.
|
|
357
|
+
if (type.data.catchAll) {
|
|
358
|
+
object = object.catchall(jsonItemToZod(type.data.catchAll));
|
|
342
359
|
}
|
|
343
360
|
return object;
|
|
344
361
|
}
|
|
345
362
|
);
|
|
346
363
|
const handleRecord = typeHandler(
|
|
347
364
|
(type) => {
|
|
348
|
-
return zod.z.record(
|
|
365
|
+
return zod.z.record(
|
|
366
|
+
jsonItemToZod(type.data.key),
|
|
367
|
+
jsonItemToZod(type.data.value)
|
|
368
|
+
);
|
|
349
369
|
}
|
|
350
370
|
);
|
|
351
371
|
const handleUnion = typeHandler(
|
|
352
372
|
(type) => {
|
|
353
|
-
return zod.z.union(type.types.map(jsonItemToZod));
|
|
373
|
+
return zod.z.union(type.data.types.map(jsonItemToZod));
|
|
354
374
|
}
|
|
355
375
|
);
|
|
356
376
|
const handleIntersection = typeHandler(
|
|
357
377
|
(type) => {
|
|
358
|
-
return zod.z.intersection(
|
|
378
|
+
return zod.z.intersection(
|
|
379
|
+
jsonItemToZod(type.data.left),
|
|
380
|
+
jsonItemToZod(type.data.right)
|
|
381
|
+
);
|
|
359
382
|
}
|
|
360
383
|
);
|
|
361
384
|
const handleDiscriminatedUnion = typeHandler(
|
|
362
385
|
(type) => {
|
|
363
386
|
return zod.z.discriminatedUnion(
|
|
364
|
-
type.discriminator,
|
|
387
|
+
type.data.discriminator,
|
|
365
388
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
366
|
-
[...type.
|
|
389
|
+
[...type.data.types].map(jsonItemToZod)
|
|
367
390
|
);
|
|
368
391
|
}
|
|
369
392
|
);
|
|
370
393
|
const handleLazy = typeHandler((type) => {
|
|
371
|
-
return zod.z.lazy(() => jsonItemToZod(type.
|
|
394
|
+
return zod.z.lazy(() => jsonItemToZod(type.getType()));
|
|
372
395
|
});
|
|
373
|
-
const jsonConverters = {
|
|
374
|
-
any: handleAny,
|
|
375
|
-
bigint: handleBigInt,
|
|
376
|
-
boolean: handleBoolean,
|
|
377
|
-
date: handleDate,
|
|
378
|
-
nan: handleNaN,
|
|
379
|
-
never: handleNever,
|
|
380
|
-
null: handleNull,
|
|
381
|
-
number: handleNumber,
|
|
382
|
-
string: handleString,
|
|
383
|
-
unknown: handleUnknown,
|
|
384
|
-
array: handleArray,
|
|
385
|
-
enum: handleEnum,
|
|
386
|
-
instanceOf: handleInstanceOf,
|
|
387
|
-
literal: handleLiteral,
|
|
388
|
-
map: handleMap,
|
|
389
|
-
set: handleSet,
|
|
390
|
-
nativeEnum: handleNativeEnum,
|
|
391
|
-
tuple: handleTuple,
|
|
392
|
-
object: handleObject,
|
|
393
|
-
record: handleRecord,
|
|
394
|
-
union: handleUnion,
|
|
395
|
-
intersection: handleIntersection,
|
|
396
|
-
discriminatedUnion: handleDiscriminatedUnion,
|
|
397
|
-
lazy: handleLazy
|
|
398
|
-
};
|
|
399
396
|
|
|
400
397
|
exports.columnToZod = columnToZod;
|
|
401
398
|
exports.instanceToZod = instanceToZod;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/main.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\n VirtualColumn,\n} from 'pqb';\nimport {\n JSONTypeAny,\n Primitive,\n JSONArray,\n JSONEnum,\n JSONInstanceOf,\n JSONLiteral,\n JSONMap,\n EnumLike,\n JSONNativeEnum,\n JSONDate,\n JSONNumber,\n JSONString,\n JSONSet,\n JSONTuple,\n JSONObject,\n UnknownKeysParam,\n JSONDiscriminatedObject,\n JSONDiscriminatedUnion,\n JSONRecord,\n JSONRecordKeyType,\n JSONIntersection,\n JSONUnion,\n JSONLazy,\n EmptyObject,\n ColumnTypeBase,\n} from 'orchid-core';\nimport { z, ZodErrorMap, ZodTypeAny } from 'zod';\nimport { Buffer } from 'node:buffer';\n\ntype NumberType =\n | 'smallint'\n | 'integer'\n | 'real'\n | 'smallserial'\n | 'serial'\n | 'money';\n\ntype BigIntType =\n | 'bigint'\n | 'numeric'\n | 'decimal'\n | 'double precision'\n | 'bigserial';\n\ntype StringType = 'varchar' | 'char' | 'text' | 'string' | 'xml' | 'json';\n\ntype DateTimeType = 'date' | 'timestamp' | 'timestamptz';\n\ntype TimeType = 'time' | 'time with time zone';\n\ntype GeometryType =\n | 'point'\n | 'line'\n | 'lseg'\n | 'box'\n | 'path'\n | 'polygon'\n | 'circle';\n\ntype NetworkType = 'cidr' | 'inet' | 'macaddr' | 'macaddr8';\n\ntype BitStringType = 'bit' | 'bit varying';\n\ntype FullTextSearchType = 'tsvector' | 'tsquery';\n\ntype UUIDType = 'uuid';\n\ntype ByteaType = 'bytea';\n\ntype SchemaToZod<\n T extends ColumnTypeBase,\n D = T['dataType'],\n> = T['data']['isNullable'] extends true\n ? z.ZodNullable<\n SchemaToZod<\n Omit<T, 'data'> & {\n data: Omit<T['data'], 'isNullable'> & { isNullable: false };\n }\n >\n >\n : D extends NumberType\n ? z.ZodNumber\n : D extends\n | BigIntType\n | StringType\n | TimeType\n | GeometryType\n | NetworkType\n | BitStringType\n | FullTextSearchType\n | UUIDType\n ? z.ZodString\n : D extends ByteaType\n ? z.ZodType<Buffer>\n : D extends DateTimeType\n ? z.ZodDate\n : D extends 'interval'\n ? typeof interval\n : D extends 'boolean'\n ? z.ZodBoolean\n : T extends EnumColumn<string, infer U>\n ? z.ZodEnum<U>\n : T extends ArrayColumn<infer U>\n ? z.ZodArray<SchemaToZod<U>>\n : T extends JSONColumn\n ? JsonToZod<T['data']['schema']>\n : T extends VirtualColumn\n ? z.ZodNever\n : never;\n\ntype JsonToZod<T extends JSONTypeAny, D = T['dataType']> = T extends {\n types: [JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]];\n}\n ? z.ZodUnion<MapJsonTuple<T['types']>>\n : T['data'] extends {\n nullable: true;\n }\n ? T['data'] extends { optional: true }\n ? z.ZodNullable<\n z.ZodOptional<\n JsonToZod<\n Omit<T, 'data'> & { data: Omit<T['data'], 'nullable' | 'optional'> }\n >\n >\n >\n : z.ZodNullable<\n JsonToZod<Omit<T, 'data'> & { data: Omit<T['data'], 'nullable'> }>\n >\n : T['data'] extends { optional: true }\n ? z.ZodOptional<\n JsonToZod<Omit<T, 'data'> & { data: Omit<T['data'], 'optional'> }>\n >\n : D extends 'bigint'\n ? z.ZodString\n : D extends 'boolean'\n ? z.ZodBoolean\n : D extends 'date'\n ? z.ZodDate\n : D extends 'nan'\n ? z.ZodNaN\n : D extends 'never'\n ? z.ZodNever\n : D extends 'null'\n ? z.ZodNull\n : D extends 'number'\n ? z.ZodNumber\n : D extends 'string'\n ? z.ZodString\n : D extends 'unknown'\n ? z.ZodUnknown\n : T extends JSONArray<infer U>\n ? z.ZodArray<JsonToZod<U>>\n : T extends JSONEnum<string, infer U>\n ? z.ZodEnum<U>\n : T extends JSONInstanceOf<infer U>\n ? z.ZodType<InstanceType<U>, z.ZodTypeDef, InstanceType<U>>\n : T extends JSONLiteral<infer U>\n ? z.ZodLiteral<U>\n : T extends JSONMap<infer K, infer V>\n ? z.ZodMap<JsonToZod<K>, JsonToZod<V>>\n : T extends JSONSet<infer U>\n ? z.ZodSet<JsonToZod<U>>\n : T extends JSONNativeEnum<infer U>\n ? z.ZodNativeEnum<U>\n : T extends JSONTuple<infer U, infer R>\n ? z.ZodTuple<MapJsonTuple<U>, R extends JSONTypeAny ? JsonToZod<R> : null>\n : T extends JSONObject<Record<string, JSONTypeAny>, UnknownKeysParam>\n ? z.ZodObject<\n { [K in keyof T['shape']]: JsonToZod<T['shape'][K]> },\n T['unknownKeys'],\n JsonToZod<T['catchAllType']>\n >\n : T extends JSONRecord<JSONRecordKeyType, JSONTypeAny>\n ? z.ZodRecord<\n JsonToZod<T['keyType']> extends z.ZodType<\n string | number | symbol,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n >\n ? JsonToZod<T['keyType']>\n : never,\n JsonToZod<T['valueType']>\n >\n : T extends JSONIntersection<JSONTypeAny, JSONTypeAny>\n ? z.ZodIntersection<JsonToZod<T['left']>, JsonToZod<T['right']>>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, Primitive, any>\n ? MapDiscriminatedUnion<T>\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\n\nexport type MapDiscriminatedUnion<\n T extends JSONDiscriminatedUnion<string, Primitive, any>,\n Options = MapJsonTuple<T['_options']>,\n> = z.ZodDiscriminatedUnion<\n T['discriminator'],\n Options extends z.ZodDiscriminatedUnionOption<T['discriminator']>[]\n ? Options\n : never\n>;\n\ntype MapJsonTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail]\n ? [Head extends JSONTypeAny ? JsonToZod<Head> : never, ...MapJsonTuple<Tail>]\n : [];\n\nexport type TableToZod<\n T extends new () => { columns: { shape: ColumnsShape } },\n> = InstanceToZod<InstanceType<T>['columns']>;\n\nexport const tableToZod = <\n T extends new () => { columns: { shape: ColumnsShape } },\n>(\n table: T,\n): TableToZod<T> => {\n return instanceToZod(new table().columns) as unknown as TableToZod<T>;\n};\n\nexport type InstanceToZod<T extends { shape: ColumnsShape }> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends { shape: ColumnsShape }>({\n shape,\n}: T): InstanceToZod<T> => {\n const result = {} as z.ZodRawShape;\n for (const key in shape) {\n const column = shape[key];\n if (!(column instanceof VirtualColumn)) {\n result[key as keyof typeof result] = columnToZod(column);\n }\n }\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const columnToZod = <T extends ColumnType>(\n column: T,\n): SchemaToZod<T> => {\n const dataType = column.data.as?.dataType || column.dataType;\n const converter = converters[dataType];\n if (!converter) {\n if (column instanceof VirtualColumn) {\n return handleNever(column) as SchemaToZod<T>;\n }\n throw new Error(`Cannot parse column ${dataType}`);\n }\n return converter(column) as SchemaToZod<T>;\n};\n\nconst typeHandler = <Type extends ColumnType | JSONTypeAny>(\n fn: (column: Type, errors?: Record<string, string>) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type, column.data.errors);\n\n const { errors } = column.data;\n const { required_error, invalid_type_error } = {\n required_error: errors?.required,\n invalid_type_error: errors?.invalidType,\n };\n\n // copy-pasted from Zod source, may break in future\n type._def.errorMap = ((iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError };\n if (ctx.data === undefined) {\n return { message: required_error ?? ctx.defaultError };\n }\n return { message: invalid_type_error ?? ctx.defaultError };\n }) as ZodErrorMap;\n\n column.chain.forEach((item) => {\n if (item[0] === 'transform') {\n type = type.transform(item[1]);\n } else if (item[0] === 'to') {\n type = z.preprocess(item[1], itemToZod(item[2]));\n } else if (item[0] === 'refine') {\n type = type.refine(item[1], { message: errors?.refine });\n } else if (item[0] === 'superRefine') {\n type = type.superRefine(item[1]);\n }\n });\n\n if (\n ('nullable' in column.data && column.data.nullable) ||\n (column as ColumnType).data.isNullable\n ) {\n if ('optional' in column.data && column.data.optional) {\n type = type.nullish();\n } else {\n type = type.nullable();\n }\n } else if ('optional' in column.data && column.data.optional) {\n type = type.optional();\n }\n\n if (column instanceof ColumnType) {\n if (column.data.validationDefault !== undefined) {\n type = type.default(column.data.validationDefault);\n }\n } else if (column.data.default !== undefined) {\n type = type.default(column.data.default);\n }\n\n return type;\n };\n};\n\nconst stringParams = [\n 'min',\n 'max',\n 'length',\n 'regex',\n 'includes',\n 'startsWith',\n 'endsWith',\n];\n\nconst stringEmptyParams = [\n 'email',\n 'url',\n 'emoji',\n 'uuid',\n 'cuid',\n 'cuid2',\n 'ulid',\n 'trim',\n 'toLowerCase',\n 'toUpperCase',\n];\n\nconst stringObjectParams = ['datetime', 'ip'];\n\nconst handleString = typeHandler((column: TextColumn | JSONString, errors) => {\n let type = z.string();\n const data = column.data;\n\n stringParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'email']({ message: errors?.[key] });\n }\n });\n\n stringObjectParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'datetime'](value as EmptyObject);\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = type.length(maxChars, { message: errors?.length });\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'step'];\n\nconst numberEmptyParams = ['finite', 'safe'];\n\nconst handleNumber = typeHandler(\n (column: NumberColumn | JSONNumber, errors) => {\n let type = z.number();\n numberParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n numberEmptyParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'finite']({ message: errors?.[key] });\n }\n });\n\n if ((column.data as Record<'int', boolean>).int) {\n type = type.int({ message: errors?.int });\n }\n\n return type;\n },\n);\n\nconst handleBigInt = typeHandler((_, errors) => {\n return z.string().refine(\n (value) => {\n try {\n BigInt(value);\n return true;\n } catch (_) {\n return false;\n }\n },\n {\n message: errors?.invalidType || 'Failed to parse bigint',\n },\n );\n});\n\nconst handleBuffer = typeHandler(() => {\n return z.instanceof(Buffer);\n});\n\nconst dateParams = ['min', 'max'];\nconst handleDate = typeHandler((column: DateColumn | JSONDate, errors) => {\n let type = z.date();\n dateParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as Date, { message: errors?.[key] });\n }\n });\n\n return z.preprocess(\n (val) =>\n typeof val === 'string' || typeof val === 'number' ? new Date(val) : val,\n type,\n );\n});\n\nconst handleTime = typeHandler((_, errors) => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: errors?.invalidType || 'Invalid time',\n },\n );\n});\n\nconst interval = z\n .object({\n years: z.number().optional(),\n months: z.number().optional(),\n days: z.number().optional(),\n hours: z.number().optional(),\n seconds: z.number().optional(),\n })\n .strict();\n\nconst handleInterval = typeHandler(() => interval);\n\nconst handleBoolean = typeHandler(() => z.boolean());\n\nconst handleEnum = typeHandler((column: EnumColumn | JSONEnum) => {\n const enumColumn = column as\n | EnumColumn<string, [string, ...string[]]>\n | JSONEnum<string, [string, ...string[]]>;\n return z.enum(enumColumn.options);\n});\n\nconst handleBitString = typeHandler((_, errors) => {\n return z.string().regex(/[10]/g, { message: errors?.invalidType });\n});\n\nconst handleUUID = typeHandler((_, errors) => {\n return z.string().uuid({ message: errors?.invalidType });\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>, errors) => {\n let type: z.ZodArray<z.ZodTypeAny>;\n if ('element' in array) {\n type = z.array(jsonItemToZod(array.element));\n } else {\n type = z.array(columnToZod(array.data.item));\n }\n\n arrayParams.forEach((key) => {\n const value = (array.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\n column.data.errors = column.data.schema.data.errors;\n return jsonItemToZod(type);\n});\n\nconst jsonItemToZod = (type: JSONTypeAny) => {\n const converter = jsonConverters[type.dataType];\n if (!converter) throw new Error(`Cannot parse column ${type.dataType}`);\n return converter(type);\n};\n\nconst itemToZod = (item: ColumnType | JSONTypeAny) => {\n return item instanceof ColumnType ? columnToZod(item) : jsonItemToZod(item);\n};\n\nconst converters: Record<string, (column: ColumnType) => z.ZodType> = {\n varchar: handleString,\n char: handleString,\n text: handleString,\n smallint: handleNumber,\n integer: handleNumber,\n real: handleNumber,\n smallserial: handleNumber,\n serial: handleNumber,\n money: handleNumber,\n bigint: handleBigInt,\n decimal: handleBigInt,\n 'double precision': handleBigInt,\n bigserial: handleBigInt,\n bytea: handleBuffer,\n date: handleDate,\n timestamp: handleDate,\n timestamptz: handleDate,\n time: handleTime,\n timetz: handleTime,\n interval: handleInterval,\n boolean: handleBoolean,\n enum: handleEnum,\n point: handleString,\n line: handleString,\n lseg: handleString,\n box: handleString,\n path: handleString,\n polygon: handleString,\n circle: handleString,\n cidr: handleString,\n inet: handleString,\n macaddr: handleString,\n macaddr8: handleString,\n bit: handleBitString,\n 'bit varying': handleBitString,\n tsvector: handleString,\n tsquery: handleString,\n xml: handleString,\n json: handleString,\n uuid: handleUUID,\n array: handleArray,\n jsonb: handleJson,\n};\n\nconst handleAny = typeHandler(() => z.any());\n\nconst handleNaN = typeHandler(() => z.nan());\n\nconst handleNever = typeHandler(() => z.never());\n\nconst handleNull = typeHandler(() => z.null());\n\nconst handleUnknown = typeHandler(() => z.unknown());\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => EmptyObject>) => z.instanceof(type.class),\n);\n\nconst handleLiteral = typeHandler((type: JSONTypeAny) => {\n return z.literal((type as JSONLiteral<string>).value);\n});\n\nconst handleMap = typeHandler((type: JSONMap<JSONTypeAny, JSONTypeAny>) => {\n const { keyType, valueType } = type;\n return z.map(jsonItemToZod(keyType), jsonItemToZod(valueType));\n});\n\nconst setParams = ['min', 'max', 'size'];\nconst handleSet = typeHandler((column: JSONSet<JSONTypeAny>, errors) => {\n const { valueType } = column;\n let type = z.set(jsonItemToZod(valueType));\n setParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n return type;\n});\n\nconst handleNativeEnum = typeHandler((type: JSONTypeAny) => {\n return z.nativeEnum((type as JSONNativeEnum<EnumLike>).enum);\n});\n\nconst handleTuple = typeHandler((column: JSONTuple) => {\n let type: z.ZodTuple<[], ZodTypeAny | null> = z.tuple(\n column.items.map((item) => jsonItemToZod(item)) as [],\n );\n if (column.restType) {\n type = type.rest(jsonItemToZod(column.restType));\n }\n return type;\n});\n\nconst handleObject = typeHandler(\n (type: JSONObject<Record<string, JSONTypeAny>, UnknownKeysParam>, errors) => {\n const shape: Record<string, z.ZodTypeAny> = {};\n for (const key in type.shape) {\n shape[key] = jsonItemToZod(type.shape[key]);\n }\n\n let object: z.ZodObject<z.ZodRawShape, UnknownKeysParam, z.ZodTypeAny> =\n z.object(shape);\n\n if (type.unknownKeys === 'passthrough') {\n object = object.passthrough();\n } else if (type.unknownKeys === 'strict') {\n object = object.strict(errors?.strict);\n }\n\n if (type.catchAllType) {\n object = object.catchall(jsonItemToZod(type.catchAllType));\n }\n\n return object;\n },\n);\n\nconst handleRecord = typeHandler(\n (type: JSONRecord<JSONRecordKeyType, JSONTypeAny>) => {\n return z.record(jsonItemToZod(type.keyType), jsonItemToZod(type.valueType));\n },\n);\n\nconst handleUnion = typeHandler(\n (type: JSONUnion<[JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]]>) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.union(type.types.map(jsonItemToZod) as any);\n },\n);\n\nconst handleIntersection = typeHandler(\n (type: JSONIntersection<JSONTypeAny, JSONTypeAny>) => {\n return z.intersection(jsonItemToZod(type.left), jsonItemToZod(type.right));\n },\n);\n\nconst handleDiscriminatedUnion = typeHandler(\n (\n type: JSONDiscriminatedUnion<\n string,\n Primitive,\n JSONDiscriminatedObject<string, Primitive>[]\n >,\n ) => {\n return z.discriminatedUnion(\n type.discriminator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...type.options.values()].map(jsonItemToZod) as any,\n );\n },\n);\n\nconst handleLazy = typeHandler((type: JSONLazy<JSONTypeAny>) => {\n return z.lazy(() => jsonItemToZod(type.getter()));\n});\n\nconst jsonConverters: Record<string, (type: JSONTypeAny) => z.ZodType> = {\n any: handleAny,\n bigint: handleBigInt,\n boolean: handleBoolean,\n date: handleDate,\n nan: handleNaN,\n never: handleNever,\n null: handleNull,\n number: handleNumber,\n string: handleString,\n unknown: handleUnknown,\n array: handleArray,\n enum: handleEnum,\n instanceOf: handleInstanceOf,\n literal: handleLiteral,\n map: handleMap,\n set: handleSet,\n nativeEnum: handleNativeEnum,\n tuple: handleTuple,\n object: handleObject,\n record: handleRecord,\n union: handleUnion,\n intersection: handleIntersection,\n discriminatedUnion: handleDiscriminatedUnion,\n lazy: handleLazy,\n};\n"],"names":["VirtualColumn","z","ColumnType","_","Buffer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/main.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\n VirtualColumn,\n} from 'pqb';\nimport {\n JSONArray,\n JSONEnum,\n JSONLiteral,\n EnumLike,\n JSONNativeEnum,\n JSONNumber,\n JSONString,\n JSONTuple,\n JSONObject,\n UnknownKeysParam,\n JSONDiscriminatedUnion,\n JSONRecord,\n JSONIntersection,\n JSONUnion,\n JSONLazy,\n EmptyObject,\n ColumnTypeBase,\n JSONType,\n JSONBoolean,\n JSONNull,\n JSONUnknown,\n JSONTupleItems,\n JSONObjectShape,\n JSONDiscriminatedUnionArg,\n} from 'orchid-core';\nimport { z, ZodErrorMap, ZodTypeAny } from 'zod';\nimport { Buffer } from 'node:buffer';\n\ntype NumberType =\n | 'smallint'\n | 'integer'\n | 'real'\n | 'smallserial'\n | 'serial'\n | 'money';\n\ntype BigIntType =\n | 'bigint'\n | 'numeric'\n | 'decimal'\n | 'double precision'\n | 'bigserial';\n\ntype StringType = 'varchar' | 'char' | 'text' | 'string' | 'xml' | 'json';\n\ntype DateTimeType = 'date' | 'timestamp' | 'timestamptz';\n\ntype TimeType = 'time' | 'time with time zone';\n\ntype GeometryType =\n | 'point'\n | 'line'\n | 'lseg'\n | 'box'\n | 'path'\n | 'polygon'\n | 'circle';\n\ntype NetworkType = 'cidr' | 'inet' | 'macaddr' | 'macaddr8';\n\ntype BitStringType = 'bit' | 'bit varying';\n\ntype FullTextSearchType = 'tsvector' | 'tsquery';\n\ntype UUIDType = 'uuid';\n\ntype ByteaType = 'bytea';\n\ntype SchemaToZod<\n T extends ColumnTypeBase,\n D = T['dataType'],\n> = T['data']['isNullable'] extends true\n ? z.ZodNullable<\n SchemaToZod<\n Omit<T, 'data'> & {\n data: Omit<T['data'], 'isNullable'> & { isNullable: false };\n }\n >\n >\n : D extends NumberType\n ? z.ZodNumber\n : D extends\n | BigIntType\n | StringType\n | TimeType\n | GeometryType\n | NetworkType\n | BitStringType\n | FullTextSearchType\n | UUIDType\n ? z.ZodString\n : D extends ByteaType\n ? z.ZodType<Buffer>\n : D extends DateTimeType\n ? z.ZodDate\n : D extends 'interval'\n ? typeof interval\n : D extends 'boolean'\n ? z.ZodBoolean\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends EnumColumn<any, any>\n ? z.ZodEnum<T['options']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends ArrayColumn<any>\n ? z.ZodArray<SchemaToZod<T['data']['item']>>\n : T extends JSONColumn<JSONType>\n ? JsonToZod<T['data']['schema']>\n : T extends VirtualColumn\n ? z.ZodNever\n : never;\n\ndeclare module 'orchid-core' {\n interface JSONType {\n zod: z.ZodTypeAny;\n }\n\n interface JSONUnknown {\n zod: z.ZodUnknown;\n }\n\n interface JSONBoolean {\n zod: z.ZodBoolean;\n }\n\n interface JSONNull {\n zod: z.ZodNull;\n }\n\n interface JSONNumber {\n zod: z.ZodNumber;\n }\n\n interface JSONString {\n zod: z.ZodString;\n }\n}\n\ntype JsonToZod<T extends JSONType> = T['data']['nullable'] extends true\n ? z.ZodNullable<JsonNotNullableToZod<T>>\n : JsonNotNullableToZod<T>;\n\ntype JsonNotNullableToZod<T extends JSONType> =\n T['data']['optional'] extends true\n ? z.ZodOptional<JsonNotOptionalToZod<T>>\n : JsonNotOptionalToZod<T>;\n\ntype JsonNotOptionalToZod<T extends JSONType> =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONUnion<any>\n ? z.ZodUnion<MapUnionArgs<T['data']['types']>>\n : T extends JSONArray<JSONType>\n ? z.ZodArray<JsonToZod<T['data']['item']>>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONEnum<any, any>\n ? z.ZodEnum<T['data']['options']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONLiteral<any>\n ? z.ZodLiteral<T['data']['value']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONNativeEnum<any>\n ? z.ZodNativeEnum<T['data']['enum']>\n : T extends JSONTuple<JSONTupleItems, JSONType | undefined>\n ? z.ZodTuple<\n MapJsonTuple<T['data']['items']>,\n T['data']['rest'] extends JSONType ? JsonToZod<T['data']['rest']> : null\n >\n : T extends JSONObject<JSONObjectShape, UnknownKeysParam>\n ? z.ZodObject<\n { [K in keyof T['data']['shape']]: JsonToZod<T['data']['shape'][K]> },\n T['data']['unknownKeys'],\n JsonToZod<T['data']['catchAll']>\n >\n : T extends JSONRecord<JSONString | JSONNumber, JSONType>\n ? T['data']['key'] extends JSONString\n ? z.ZodRecord<z.ZodString, JsonToZod<T['data']['value']>>\n : z.ZodRecord<z.ZodNumber, JsonToZod<T['data']['value']>>\n : T extends JSONIntersection<JSONType, JSONType>\n ? z.ZodIntersection<\n JsonToZod<T['data']['left']>,\n JsonToZod<T['data']['right']>\n >\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, any>\n ? MapDiscriminatedUnion<T>\n : T['zod'];\n\nexport type MapDiscriminatedUnion<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, any>,\n Options = MapJsonTuple<T['data']['types']>,\n> = z.ZodDiscriminatedUnion<\n T['data']['discriminator'],\n Options extends z.ZodDiscriminatedUnionOption<T['data']['discriminator']>[]\n ? Options\n : never\n>;\n\ntype MapUnionArgs<T extends unknown[]> = T extends [\n infer F extends JSONType,\n infer S extends JSONType,\n ...infer Tail,\n]\n ? [JsonToZod<F>, JsonToZod<S>, ...MapJsonTuple<Tail>]\n : never;\n\ntype MapJsonTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail]\n ? [Head extends JSONType ? JsonToZod<Head> : never, ...MapJsonTuple<Tail>]\n : [];\n\nexport type TableToZod<\n T extends new () => { columns: { shape: ColumnsShape } },\n> = InstanceToZod<InstanceType<T>['columns']>;\n\nexport const tableToZod = <\n T extends new () => { columns: { shape: ColumnsShape } },\n>(\n table: T,\n): TableToZod<T> => {\n return instanceToZod(new table().columns) as unknown as TableToZod<T>;\n};\n\nexport type InstanceToZod<T extends { shape: ColumnsShape }> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends { shape: ColumnsShape }>({\n shape,\n}: T): InstanceToZod<T> => {\n const result = {} as z.ZodRawShape;\n for (const key in shape) {\n const column = shape[key];\n if (!(column instanceof VirtualColumn)) {\n result[key as keyof typeof result] = columnToZod(column);\n }\n }\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const columnToZod = <T extends ColumnType>(\n column: T,\n): SchemaToZod<T> => {\n const dataType = column.data.as?.dataType || column.dataType;\n const converter = converters[dataType];\n if (!converter) {\n if (column instanceof VirtualColumn) {\n return handleNever(column) as SchemaToZod<T>;\n }\n throw new Error(`Cannot parse column ${dataType}`);\n }\n return converter(column) as SchemaToZod<T>;\n};\n\nconst typeHandler = <Type extends ColumnType | JSONType>(\n fn: (column: Type, errors?: Record<string, string>) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONType): z.ZodTypeAny => {\n let type = fn(column as Type, column.data.errors);\n\n const { errors } = column.data;\n const { required_error, invalid_type_error } = {\n required_error: errors?.required,\n invalid_type_error: errors?.invalidType,\n };\n\n // copy-pasted from Zod source, may break in future\n type._def.errorMap = ((iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError };\n if (ctx.data === undefined) {\n return { message: required_error ?? ctx.defaultError };\n }\n return { message: invalid_type_error ?? ctx.defaultError };\n }) as ZodErrorMap;\n\n const chain =\n column instanceof ColumnType ? column.chain : column.data.chain;\n if (chain) {\n for (const item of chain) {\n if (item[0] === 'transform') {\n type = type.transform(item[1]);\n } else if (item[0] === 'to') {\n type = z.preprocess(item[1], itemToZod(item[2]));\n } else if (item[0] === 'refine') {\n type = type.refine(item[1], { message: errors?.refine });\n } else if (item[0] === 'superRefine') {\n type = type.superRefine(item[1]);\n }\n }\n }\n\n if (\n ('nullable' in column.data && column.data.nullable) ||\n (column as ColumnType).data.isNullable\n ) {\n if ('optional' in column.data && column.data.optional) {\n type = type.nullish();\n } else {\n type = type.nullable();\n }\n } else if ('optional' in column.data && column.data.optional) {\n type = type.optional();\n }\n\n if (column instanceof ColumnType) {\n if (column.data.validationDefault !== undefined) {\n type = type.default(column.data.validationDefault);\n }\n } else if (column.data.default !== undefined) {\n type = type.default(column.data.default);\n }\n\n return type;\n };\n};\n\nconst stringParams = [\n 'min',\n 'max',\n 'length',\n 'regex',\n 'includes',\n 'startsWith',\n 'endsWith',\n];\n\nconst stringEmptyParams = [\n 'email',\n 'url',\n 'emoji',\n 'uuid',\n 'cuid',\n 'cuid2',\n 'ulid',\n 'trim',\n 'toLowerCase',\n 'toUpperCase',\n];\n\nconst stringObjectParams = ['datetime', 'ip'];\n\nconst handleString = typeHandler((column: TextColumn | JSONString, errors) => {\n let type = z.string();\n const data = column.data;\n\n stringParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'email']({ message: errors?.[key] });\n }\n });\n\n stringObjectParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'datetime'](value as EmptyObject);\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = type.length(maxChars, { message: errors?.length });\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'step'];\n\nconst numberEmptyParams = ['finite', 'safe'];\n\nconst handleNumber = typeHandler(\n (column: NumberColumn | JSONNumber, errors) => {\n let type = z.number();\n numberParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n numberEmptyParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'finite']({ message: errors?.[key] });\n }\n });\n\n if ((column.data as Record<'int', boolean>).int) {\n type = type.int({ message: errors?.int });\n }\n\n return type;\n },\n);\n\nconst handleBigInt = typeHandler((_, errors) => {\n return z.string().refine(\n (value) => {\n try {\n BigInt(value);\n return true;\n } catch (_) {\n return false;\n }\n },\n {\n message: errors?.invalidType || 'Failed to parse bigint',\n },\n );\n});\n\nconst handleBuffer = typeHandler(() => {\n return z.instanceof(Buffer);\n});\n\nconst dateParams = ['min', 'max'];\nconst handleDate = typeHandler((column: DateColumn, errors) => {\n let type = z.date();\n dateParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as Date, { message: errors?.[key] });\n }\n });\n\n return z.preprocess(\n (val) =>\n typeof val === 'string' || typeof val === 'number' ? new Date(val) : val,\n type,\n );\n});\n\nconst handleTime = typeHandler((_, errors) => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: errors?.invalidType || 'Invalid time',\n },\n );\n});\n\nconst interval = z\n .object({\n years: z.number().optional(),\n months: z.number().optional(),\n days: z.number().optional(),\n hours: z.number().optional(),\n seconds: z.number().optional(),\n })\n .strict();\n\nconst handleInterval = typeHandler(() => interval);\n\nconst handleBoolean = typeHandler(() => z.boolean());\n\nconst handleEnum = typeHandler(\n (column: EnumColumn | JSONEnum<string, [string, ...string[]]>) => {\n const enumColumn = column as\n | EnumColumn<string, [string, ...string[]]>\n | JSONEnum<string, [string, ...string[]]>;\n\n const options =\n enumColumn instanceof EnumColumn\n ? enumColumn.options\n : enumColumn.data.options;\n\n return z.enum(options);\n },\n);\n\nconst handleBitString = typeHandler((_, errors) => {\n return z.string().regex(/[10]/g, { message: errors?.invalidType });\n});\n\nconst handleUUID = typeHandler((_, errors) => {\n return z.string().uuid({ message: errors?.invalidType });\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONType>, errors) => {\n let type: z.ZodArray<z.ZodTypeAny>;\n if (array instanceof ColumnType) {\n type = z.array(columnToZod(array.data.item));\n } else {\n type = z.array(jsonItemToZod(array.data.item));\n }\n\n arrayParams.forEach((key) => {\n const value = (array.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\n column.data.errors = column.data.schema.data.errors;\n return jsonItemToZod(type);\n});\n\nconst jsonItemToZod = (type: JSONType): z.ZodTypeAny => {\n if (type instanceof JSONUnknown) {\n return handleUnknown(type);\n } else if (type instanceof JSONBoolean) {\n return handleBoolean(type);\n } else if (type instanceof JSONNull) {\n return handleNull(type);\n } else if (type instanceof JSONNumber) {\n return handleNumber(type);\n } else if (type instanceof JSONString) {\n return handleString(type);\n } else if (type instanceof JSONArray) {\n return handleArray(type);\n } else if (type instanceof JSONObject) {\n return handleObject(type);\n } else if (type instanceof JSONLiteral) {\n return handleLiteral(type);\n } else if (type instanceof JSONDiscriminatedUnion) {\n return handleDiscriminatedUnion(type);\n } else if (type instanceof JSONEnum) {\n return handleEnum(type);\n } else if (type instanceof JSONIntersection) {\n return handleIntersection(type);\n } else if (type instanceof JSONLazy) {\n return handleLazy(type);\n } else if (type instanceof JSONNativeEnum) {\n return handleNativeEnum(type);\n } else if (type instanceof JSONRecord) {\n return handleRecord(type);\n } else if (type instanceof JSONTuple) {\n return handleTuple(type);\n } else if (type instanceof JSONUnion) {\n return handleUnion(type);\n } else {\n throw new Error(`Cannot parse column ${type.constructor.name}`);\n }\n};\n\nconst itemToZod = (item: ColumnType | JSONType) => {\n return item instanceof ColumnType ? columnToZod(item) : jsonItemToZod(item);\n};\n\nconst converters: Record<string, (column: ColumnType) => z.ZodType> = {\n varchar: handleString,\n char: handleString,\n text: handleString,\n smallint: handleNumber,\n integer: handleNumber,\n real: handleNumber,\n smallserial: handleNumber,\n serial: handleNumber,\n money: handleNumber,\n bigint: handleBigInt,\n decimal: handleBigInt,\n 'double precision': handleBigInt,\n bigserial: handleBigInt,\n bytea: handleBuffer,\n date: handleDate,\n timestamp: handleDate,\n timestamptz: handleDate,\n time: handleTime,\n timetz: handleTime,\n interval: handleInterval,\n boolean: handleBoolean,\n enum: handleEnum,\n point: handleString,\n line: handleString,\n lseg: handleString,\n box: handleString,\n path: handleString,\n polygon: handleString,\n circle: handleString,\n cidr: handleString,\n inet: handleString,\n macaddr: handleString,\n macaddr8: handleString,\n bit: handleBitString,\n 'bit varying': handleBitString,\n tsvector: handleString,\n tsquery: handleString,\n xml: handleString,\n json: handleString,\n uuid: handleUUID,\n array: handleArray,\n jsonb: handleJson,\n};\n\nconst handleNever = typeHandler(() => z.never());\n\nconst handleNull = typeHandler(() => z.null());\n\nconst handleUnknown = typeHandler(() => z.unknown());\n\nconst handleLiteral = typeHandler((type: JSONType) => {\n return z.literal((type as JSONLiteral<string>).data.value);\n});\n\nconst handleNativeEnum = typeHandler((type: JSONType) => {\n return z.nativeEnum((type as JSONNativeEnum<EnumLike>).data.enum);\n});\n\nconst handleTuple = typeHandler((column: JSONTuple<JSONTupleItems>) => {\n let type: z.ZodTuple<[], ZodTypeAny | null> = z.tuple(\n column.data.items.map((item) => jsonItemToZod(item)) as [],\n );\n if (column.data.rest) {\n type = type.rest(jsonItemToZod(column.data.rest));\n }\n return type;\n});\n\nconst handleObject = typeHandler(\n (type: JSONObject<Record<string, JSONType>, UnknownKeysParam>, errors) => {\n const shape: Record<string, z.ZodTypeAny> = {};\n for (const key in type.data.shape) {\n shape[key] = jsonItemToZod(type.data.shape[key]);\n }\n\n let object: z.ZodObject<z.ZodRawShape, UnknownKeysParam, z.ZodTypeAny> =\n z.object(shape);\n\n if (type.data.unknownKeys === 'passthrough') {\n object = object.passthrough();\n } else if (type.data.unknownKeys === 'strict') {\n object = object.strict(errors?.strict);\n }\n\n if (type.data.catchAll) {\n object = object.catchall(jsonItemToZod(type.data.catchAll));\n }\n\n return object;\n },\n);\n\nconst handleRecord = typeHandler(\n (type: JSONRecord<JSONString | JSONNumber, JSONType>) => {\n return z.record(\n jsonItemToZod(type.data.key),\n jsonItemToZod(type.data.value),\n );\n },\n);\n\nconst handleUnion = typeHandler(\n (type: JSONUnion<[JSONType, JSONType, ...JSONType[]]>) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.union(type.data.types.map(jsonItemToZod) as any);\n },\n);\n\nconst handleIntersection = typeHandler(\n (type: JSONIntersection<JSONType, JSONType>) => {\n return z.intersection(\n jsonItemToZod(type.data.left),\n jsonItemToZod(type.data.right),\n );\n },\n);\n\nconst handleDiscriminatedUnion = typeHandler(\n (type: JSONDiscriminatedUnion<string, JSONDiscriminatedUnionArg<string>>) => {\n return z.discriminatedUnion(\n type.data.discriminator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...type.data.types].map(jsonItemToZod) as any,\n );\n },\n);\n\nconst handleLazy = typeHandler((type: JSONLazy<JSONType>) => {\n return z.lazy(() => jsonItemToZod(type.getType()));\n});\n"],"names":["VirtualColumn","z","ColumnType","_","Buffer","EnumColumn","JSONUnknown","JSONBoolean","JSONNull","JSONNumber","JSONString","JSONArray","JSONObject","JSONLiteral","JSONDiscriminatedUnion","JSONEnum","JSONIntersection","JSONLazy","JSONNativeEnum","JSONRecord","JSONTuple","JSONUnion"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { VirtualColumn, ColumnType } from 'pqb';
|
|
1
|
+
import { VirtualColumn, ColumnType, EnumColumn } from 'pqb';
|
|
2
|
+
import { JSONUnknown, JSONBoolean, JSONNull, JSONNumber, JSONString, JSONArray, JSONObject, JSONLiteral, JSONDiscriminatedUnion, JSONEnum, JSONIntersection, JSONLazy, JSONNativeEnum, JSONRecord, JSONTuple, JSONUnion } from 'orchid-core';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
import { Buffer } from 'node:buffer';
|
|
4
5
|
|
|
@@ -45,17 +46,20 @@ const typeHandler = (fn) => {
|
|
|
45
46
|
}
|
|
46
47
|
return { message: invalid_type_error != null ? invalid_type_error : ctx.defaultError };
|
|
47
48
|
};
|
|
48
|
-
column.chain
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
const chain = column instanceof ColumnType ? column.chain : column.data.chain;
|
|
50
|
+
if (chain) {
|
|
51
|
+
for (const item of chain) {
|
|
52
|
+
if (item[0] === "transform") {
|
|
53
|
+
type = type.transform(item[1]);
|
|
54
|
+
} else if (item[0] === "to") {
|
|
55
|
+
type = z.preprocess(item[1], itemToZod(item[2]));
|
|
56
|
+
} else if (item[0] === "refine") {
|
|
57
|
+
type = type.refine(item[1], { message: errors == null ? void 0 : errors.refine });
|
|
58
|
+
} else if (item[0] === "superRefine") {
|
|
59
|
+
type = type.superRefine(item[1]);
|
|
60
|
+
}
|
|
57
61
|
}
|
|
58
|
-
}
|
|
62
|
+
}
|
|
59
63
|
if ("nullable" in column.data && column.data.nullable || column.data.isNullable) {
|
|
60
64
|
if ("optional" in column.data && column.data.optional) {
|
|
61
65
|
type = type.nullish();
|
|
@@ -198,10 +202,13 @@ const interval = z.object({
|
|
|
198
202
|
}).strict();
|
|
199
203
|
const handleInterval = typeHandler(() => interval);
|
|
200
204
|
const handleBoolean = typeHandler(() => z.boolean());
|
|
201
|
-
const handleEnum = typeHandler(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
+
const handleEnum = typeHandler(
|
|
206
|
+
(column) => {
|
|
207
|
+
const enumColumn = column;
|
|
208
|
+
const options = enumColumn instanceof EnumColumn ? enumColumn.options : enumColumn.data.options;
|
|
209
|
+
return z.enum(options);
|
|
210
|
+
}
|
|
211
|
+
);
|
|
205
212
|
const handleBitString = typeHandler((_, errors) => {
|
|
206
213
|
return z.string().regex(/[10]/g, { message: errors == null ? void 0 : errors.invalidType });
|
|
207
214
|
});
|
|
@@ -212,10 +219,10 @@ const arrayParams = ["min", "max", "length"];
|
|
|
212
219
|
const handleArray = typeHandler(
|
|
213
220
|
(array, errors) => {
|
|
214
221
|
let type;
|
|
215
|
-
if (
|
|
216
|
-
type = z.array(jsonItemToZod(array.element));
|
|
217
|
-
} else {
|
|
222
|
+
if (array instanceof ColumnType) {
|
|
218
223
|
type = z.array(columnToZod(array.data.item));
|
|
224
|
+
} else {
|
|
225
|
+
type = z.array(jsonItemToZod(array.data.item));
|
|
219
226
|
}
|
|
220
227
|
arrayParams.forEach((key) => {
|
|
221
228
|
const value = array.data[key];
|
|
@@ -232,10 +239,41 @@ const handleJson = typeHandler((column) => {
|
|
|
232
239
|
return jsonItemToZod(type);
|
|
233
240
|
});
|
|
234
241
|
const jsonItemToZod = (type) => {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
242
|
+
if (type instanceof JSONUnknown) {
|
|
243
|
+
return handleUnknown(type);
|
|
244
|
+
} else if (type instanceof JSONBoolean) {
|
|
245
|
+
return handleBoolean(type);
|
|
246
|
+
} else if (type instanceof JSONNull) {
|
|
247
|
+
return handleNull(type);
|
|
248
|
+
} else if (type instanceof JSONNumber) {
|
|
249
|
+
return handleNumber(type);
|
|
250
|
+
} else if (type instanceof JSONString) {
|
|
251
|
+
return handleString(type);
|
|
252
|
+
} else if (type instanceof JSONArray) {
|
|
253
|
+
return handleArray(type);
|
|
254
|
+
} else if (type instanceof JSONObject) {
|
|
255
|
+
return handleObject(type);
|
|
256
|
+
} else if (type instanceof JSONLiteral) {
|
|
257
|
+
return handleLiteral(type);
|
|
258
|
+
} else if (type instanceof JSONDiscriminatedUnion) {
|
|
259
|
+
return handleDiscriminatedUnion(type);
|
|
260
|
+
} else if (type instanceof JSONEnum) {
|
|
261
|
+
return handleEnum(type);
|
|
262
|
+
} else if (type instanceof JSONIntersection) {
|
|
263
|
+
return handleIntersection(type);
|
|
264
|
+
} else if (type instanceof JSONLazy) {
|
|
265
|
+
return handleLazy(type);
|
|
266
|
+
} else if (type instanceof JSONNativeEnum) {
|
|
267
|
+
return handleNativeEnum(type);
|
|
268
|
+
} else if (type instanceof JSONRecord) {
|
|
269
|
+
return handleRecord(type);
|
|
270
|
+
} else if (type instanceof JSONTuple) {
|
|
271
|
+
return handleTuple(type);
|
|
272
|
+
} else if (type instanceof JSONUnion) {
|
|
273
|
+
return handleUnion(type);
|
|
274
|
+
} else {
|
|
275
|
+
throw new Error(`Cannot parse column ${type.constructor.name}`);
|
|
276
|
+
}
|
|
239
277
|
};
|
|
240
278
|
const itemToZod = (item) => {
|
|
241
279
|
return item instanceof ColumnType ? columnToZod(item) : jsonItemToZod(item);
|
|
@@ -284,116 +322,75 @@ const converters = {
|
|
|
284
322
|
array: handleArray,
|
|
285
323
|
jsonb: handleJson
|
|
286
324
|
};
|
|
287
|
-
const handleAny = typeHandler(() => z.any());
|
|
288
|
-
const handleNaN = typeHandler(() => z.nan());
|
|
289
325
|
const handleNever = typeHandler(() => z.never());
|
|
290
326
|
const handleNull = typeHandler(() => z.null());
|
|
291
327
|
const handleUnknown = typeHandler(() => z.unknown());
|
|
292
|
-
const handleInstanceOf = typeHandler(
|
|
293
|
-
(type) => z.instanceof(type.class)
|
|
294
|
-
);
|
|
295
328
|
const handleLiteral = typeHandler((type) => {
|
|
296
|
-
return z.literal(type.value);
|
|
297
|
-
});
|
|
298
|
-
const handleMap = typeHandler((type) => {
|
|
299
|
-
const { keyType, valueType } = type;
|
|
300
|
-
return z.map(jsonItemToZod(keyType), jsonItemToZod(valueType));
|
|
301
|
-
});
|
|
302
|
-
const setParams = ["min", "max", "size"];
|
|
303
|
-
const handleSet = typeHandler((column, errors) => {
|
|
304
|
-
const { valueType } = column;
|
|
305
|
-
let type = z.set(jsonItemToZod(valueType));
|
|
306
|
-
setParams.forEach((key) => {
|
|
307
|
-
const value = column.data[key];
|
|
308
|
-
if (value !== void 0) {
|
|
309
|
-
type = type[key](value, { message: errors == null ? void 0 : errors[key] });
|
|
310
|
-
}
|
|
311
|
-
});
|
|
312
|
-
return type;
|
|
329
|
+
return z.literal(type.data.value);
|
|
313
330
|
});
|
|
314
331
|
const handleNativeEnum = typeHandler((type) => {
|
|
315
|
-
return z.nativeEnum(type.enum);
|
|
332
|
+
return z.nativeEnum(type.data.enum);
|
|
316
333
|
});
|
|
317
334
|
const handleTuple = typeHandler((column) => {
|
|
318
335
|
let type = z.tuple(
|
|
319
|
-
column.items.map((item) => jsonItemToZod(item))
|
|
336
|
+
column.data.items.map((item) => jsonItemToZod(item))
|
|
320
337
|
);
|
|
321
|
-
if (column.
|
|
322
|
-
type = type.rest(jsonItemToZod(column.
|
|
338
|
+
if (column.data.rest) {
|
|
339
|
+
type = type.rest(jsonItemToZod(column.data.rest));
|
|
323
340
|
}
|
|
324
341
|
return type;
|
|
325
342
|
});
|
|
326
343
|
const handleObject = typeHandler(
|
|
327
344
|
(type, errors) => {
|
|
328
345
|
const shape = {};
|
|
329
|
-
for (const key in type.shape) {
|
|
330
|
-
shape[key] = jsonItemToZod(type.shape[key]);
|
|
346
|
+
for (const key in type.data.shape) {
|
|
347
|
+
shape[key] = jsonItemToZod(type.data.shape[key]);
|
|
331
348
|
}
|
|
332
349
|
let object = z.object(shape);
|
|
333
|
-
if (type.unknownKeys === "passthrough") {
|
|
350
|
+
if (type.data.unknownKeys === "passthrough") {
|
|
334
351
|
object = object.passthrough();
|
|
335
|
-
} else if (type.unknownKeys === "strict") {
|
|
352
|
+
} else if (type.data.unknownKeys === "strict") {
|
|
336
353
|
object = object.strict(errors == null ? void 0 : errors.strict);
|
|
337
354
|
}
|
|
338
|
-
if (type.
|
|
339
|
-
object = object.catchall(jsonItemToZod(type.
|
|
355
|
+
if (type.data.catchAll) {
|
|
356
|
+
object = object.catchall(jsonItemToZod(type.data.catchAll));
|
|
340
357
|
}
|
|
341
358
|
return object;
|
|
342
359
|
}
|
|
343
360
|
);
|
|
344
361
|
const handleRecord = typeHandler(
|
|
345
362
|
(type) => {
|
|
346
|
-
return z.record(
|
|
363
|
+
return z.record(
|
|
364
|
+
jsonItemToZod(type.data.key),
|
|
365
|
+
jsonItemToZod(type.data.value)
|
|
366
|
+
);
|
|
347
367
|
}
|
|
348
368
|
);
|
|
349
369
|
const handleUnion = typeHandler(
|
|
350
370
|
(type) => {
|
|
351
|
-
return z.union(type.types.map(jsonItemToZod));
|
|
371
|
+
return z.union(type.data.types.map(jsonItemToZod));
|
|
352
372
|
}
|
|
353
373
|
);
|
|
354
374
|
const handleIntersection = typeHandler(
|
|
355
375
|
(type) => {
|
|
356
|
-
return z.intersection(
|
|
376
|
+
return z.intersection(
|
|
377
|
+
jsonItemToZod(type.data.left),
|
|
378
|
+
jsonItemToZod(type.data.right)
|
|
379
|
+
);
|
|
357
380
|
}
|
|
358
381
|
);
|
|
359
382
|
const handleDiscriminatedUnion = typeHandler(
|
|
360
383
|
(type) => {
|
|
361
384
|
return z.discriminatedUnion(
|
|
362
|
-
type.discriminator,
|
|
385
|
+
type.data.discriminator,
|
|
363
386
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
364
|
-
[...type.
|
|
387
|
+
[...type.data.types].map(jsonItemToZod)
|
|
365
388
|
);
|
|
366
389
|
}
|
|
367
390
|
);
|
|
368
391
|
const handleLazy = typeHandler((type) => {
|
|
369
|
-
return z.lazy(() => jsonItemToZod(type.
|
|
392
|
+
return z.lazy(() => jsonItemToZod(type.getType()));
|
|
370
393
|
});
|
|
371
|
-
const jsonConverters = {
|
|
372
|
-
any: handleAny,
|
|
373
|
-
bigint: handleBigInt,
|
|
374
|
-
boolean: handleBoolean,
|
|
375
|
-
date: handleDate,
|
|
376
|
-
nan: handleNaN,
|
|
377
|
-
never: handleNever,
|
|
378
|
-
null: handleNull,
|
|
379
|
-
number: handleNumber,
|
|
380
|
-
string: handleString,
|
|
381
|
-
unknown: handleUnknown,
|
|
382
|
-
array: handleArray,
|
|
383
|
-
enum: handleEnum,
|
|
384
|
-
instanceOf: handleInstanceOf,
|
|
385
|
-
literal: handleLiteral,
|
|
386
|
-
map: handleMap,
|
|
387
|
-
set: handleSet,
|
|
388
|
-
nativeEnum: handleNativeEnum,
|
|
389
|
-
tuple: handleTuple,
|
|
390
|
-
object: handleObject,
|
|
391
|
-
record: handleRecord,
|
|
392
|
-
union: handleUnion,
|
|
393
|
-
intersection: handleIntersection,
|
|
394
|
-
discriminatedUnion: handleDiscriminatedUnion,
|
|
395
|
-
lazy: handleLazy
|
|
396
|
-
};
|
|
397
394
|
|
|
398
395
|
export { columnToZod, instanceToZod, tableToZod };
|
|
399
396
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/main.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\n VirtualColumn,\n} from 'pqb';\nimport {\n JSONTypeAny,\n Primitive,\n JSONArray,\n JSONEnum,\n JSONInstanceOf,\n JSONLiteral,\n JSONMap,\n EnumLike,\n JSONNativeEnum,\n JSONDate,\n JSONNumber,\n JSONString,\n JSONSet,\n JSONTuple,\n JSONObject,\n UnknownKeysParam,\n JSONDiscriminatedObject,\n JSONDiscriminatedUnion,\n JSONRecord,\n JSONRecordKeyType,\n JSONIntersection,\n JSONUnion,\n JSONLazy,\n EmptyObject,\n ColumnTypeBase,\n} from 'orchid-core';\nimport { z, ZodErrorMap, ZodTypeAny } from 'zod';\nimport { Buffer } from 'node:buffer';\n\ntype NumberType =\n | 'smallint'\n | 'integer'\n | 'real'\n | 'smallserial'\n | 'serial'\n | 'money';\n\ntype BigIntType =\n | 'bigint'\n | 'numeric'\n | 'decimal'\n | 'double precision'\n | 'bigserial';\n\ntype StringType = 'varchar' | 'char' | 'text' | 'string' | 'xml' | 'json';\n\ntype DateTimeType = 'date' | 'timestamp' | 'timestamptz';\n\ntype TimeType = 'time' | 'time with time zone';\n\ntype GeometryType =\n | 'point'\n | 'line'\n | 'lseg'\n | 'box'\n | 'path'\n | 'polygon'\n | 'circle';\n\ntype NetworkType = 'cidr' | 'inet' | 'macaddr' | 'macaddr8';\n\ntype BitStringType = 'bit' | 'bit varying';\n\ntype FullTextSearchType = 'tsvector' | 'tsquery';\n\ntype UUIDType = 'uuid';\n\ntype ByteaType = 'bytea';\n\ntype SchemaToZod<\n T extends ColumnTypeBase,\n D = T['dataType'],\n> = T['data']['isNullable'] extends true\n ? z.ZodNullable<\n SchemaToZod<\n Omit<T, 'data'> & {\n data: Omit<T['data'], 'isNullable'> & { isNullable: false };\n }\n >\n >\n : D extends NumberType\n ? z.ZodNumber\n : D extends\n | BigIntType\n | StringType\n | TimeType\n | GeometryType\n | NetworkType\n | BitStringType\n | FullTextSearchType\n | UUIDType\n ? z.ZodString\n : D extends ByteaType\n ? z.ZodType<Buffer>\n : D extends DateTimeType\n ? z.ZodDate\n : D extends 'interval'\n ? typeof interval\n : D extends 'boolean'\n ? z.ZodBoolean\n : T extends EnumColumn<string, infer U>\n ? z.ZodEnum<U>\n : T extends ArrayColumn<infer U>\n ? z.ZodArray<SchemaToZod<U>>\n : T extends JSONColumn\n ? JsonToZod<T['data']['schema']>\n : T extends VirtualColumn\n ? z.ZodNever\n : never;\n\ntype JsonToZod<T extends JSONTypeAny, D = T['dataType']> = T extends {\n types: [JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]];\n}\n ? z.ZodUnion<MapJsonTuple<T['types']>>\n : T['data'] extends {\n nullable: true;\n }\n ? T['data'] extends { optional: true }\n ? z.ZodNullable<\n z.ZodOptional<\n JsonToZod<\n Omit<T, 'data'> & { data: Omit<T['data'], 'nullable' | 'optional'> }\n >\n >\n >\n : z.ZodNullable<\n JsonToZod<Omit<T, 'data'> & { data: Omit<T['data'], 'nullable'> }>\n >\n : T['data'] extends { optional: true }\n ? z.ZodOptional<\n JsonToZod<Omit<T, 'data'> & { data: Omit<T['data'], 'optional'> }>\n >\n : D extends 'bigint'\n ? z.ZodString\n : D extends 'boolean'\n ? z.ZodBoolean\n : D extends 'date'\n ? z.ZodDate\n : D extends 'nan'\n ? z.ZodNaN\n : D extends 'never'\n ? z.ZodNever\n : D extends 'null'\n ? z.ZodNull\n : D extends 'number'\n ? z.ZodNumber\n : D extends 'string'\n ? z.ZodString\n : D extends 'unknown'\n ? z.ZodUnknown\n : T extends JSONArray<infer U>\n ? z.ZodArray<JsonToZod<U>>\n : T extends JSONEnum<string, infer U>\n ? z.ZodEnum<U>\n : T extends JSONInstanceOf<infer U>\n ? z.ZodType<InstanceType<U>, z.ZodTypeDef, InstanceType<U>>\n : T extends JSONLiteral<infer U>\n ? z.ZodLiteral<U>\n : T extends JSONMap<infer K, infer V>\n ? z.ZodMap<JsonToZod<K>, JsonToZod<V>>\n : T extends JSONSet<infer U>\n ? z.ZodSet<JsonToZod<U>>\n : T extends JSONNativeEnum<infer U>\n ? z.ZodNativeEnum<U>\n : T extends JSONTuple<infer U, infer R>\n ? z.ZodTuple<MapJsonTuple<U>, R extends JSONTypeAny ? JsonToZod<R> : null>\n : T extends JSONObject<Record<string, JSONTypeAny>, UnknownKeysParam>\n ? z.ZodObject<\n { [K in keyof T['shape']]: JsonToZod<T['shape'][K]> },\n T['unknownKeys'],\n JsonToZod<T['catchAllType']>\n >\n : T extends JSONRecord<JSONRecordKeyType, JSONTypeAny>\n ? z.ZodRecord<\n JsonToZod<T['keyType']> extends z.ZodType<\n string | number | symbol,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n >\n ? JsonToZod<T['keyType']>\n : never,\n JsonToZod<T['valueType']>\n >\n : T extends JSONIntersection<JSONTypeAny, JSONTypeAny>\n ? z.ZodIntersection<JsonToZod<T['left']>, JsonToZod<T['right']>>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, Primitive, any>\n ? MapDiscriminatedUnion<T>\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\n\nexport type MapDiscriminatedUnion<\n T extends JSONDiscriminatedUnion<string, Primitive, any>,\n Options = MapJsonTuple<T['_options']>,\n> = z.ZodDiscriminatedUnion<\n T['discriminator'],\n Options extends z.ZodDiscriminatedUnionOption<T['discriminator']>[]\n ? Options\n : never\n>;\n\ntype MapJsonTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail]\n ? [Head extends JSONTypeAny ? JsonToZod<Head> : never, ...MapJsonTuple<Tail>]\n : [];\n\nexport type TableToZod<\n T extends new () => { columns: { shape: ColumnsShape } },\n> = InstanceToZod<InstanceType<T>['columns']>;\n\nexport const tableToZod = <\n T extends new () => { columns: { shape: ColumnsShape } },\n>(\n table: T,\n): TableToZod<T> => {\n return instanceToZod(new table().columns) as unknown as TableToZod<T>;\n};\n\nexport type InstanceToZod<T extends { shape: ColumnsShape }> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends { shape: ColumnsShape }>({\n shape,\n}: T): InstanceToZod<T> => {\n const result = {} as z.ZodRawShape;\n for (const key in shape) {\n const column = shape[key];\n if (!(column instanceof VirtualColumn)) {\n result[key as keyof typeof result] = columnToZod(column);\n }\n }\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const columnToZod = <T extends ColumnType>(\n column: T,\n): SchemaToZod<T> => {\n const dataType = column.data.as?.dataType || column.dataType;\n const converter = converters[dataType];\n if (!converter) {\n if (column instanceof VirtualColumn) {\n return handleNever(column) as SchemaToZod<T>;\n }\n throw new Error(`Cannot parse column ${dataType}`);\n }\n return converter(column) as SchemaToZod<T>;\n};\n\nconst typeHandler = <Type extends ColumnType | JSONTypeAny>(\n fn: (column: Type, errors?: Record<string, string>) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type, column.data.errors);\n\n const { errors } = column.data;\n const { required_error, invalid_type_error } = {\n required_error: errors?.required,\n invalid_type_error: errors?.invalidType,\n };\n\n // copy-pasted from Zod source, may break in future\n type._def.errorMap = ((iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError };\n if (ctx.data === undefined) {\n return { message: required_error ?? ctx.defaultError };\n }\n return { message: invalid_type_error ?? ctx.defaultError };\n }) as ZodErrorMap;\n\n column.chain.forEach((item) => {\n if (item[0] === 'transform') {\n type = type.transform(item[1]);\n } else if (item[0] === 'to') {\n type = z.preprocess(item[1], itemToZod(item[2]));\n } else if (item[0] === 'refine') {\n type = type.refine(item[1], { message: errors?.refine });\n } else if (item[0] === 'superRefine') {\n type = type.superRefine(item[1]);\n }\n });\n\n if (\n ('nullable' in column.data && column.data.nullable) ||\n (column as ColumnType).data.isNullable\n ) {\n if ('optional' in column.data && column.data.optional) {\n type = type.nullish();\n } else {\n type = type.nullable();\n }\n } else if ('optional' in column.data && column.data.optional) {\n type = type.optional();\n }\n\n if (column instanceof ColumnType) {\n if (column.data.validationDefault !== undefined) {\n type = type.default(column.data.validationDefault);\n }\n } else if (column.data.default !== undefined) {\n type = type.default(column.data.default);\n }\n\n return type;\n };\n};\n\nconst stringParams = [\n 'min',\n 'max',\n 'length',\n 'regex',\n 'includes',\n 'startsWith',\n 'endsWith',\n];\n\nconst stringEmptyParams = [\n 'email',\n 'url',\n 'emoji',\n 'uuid',\n 'cuid',\n 'cuid2',\n 'ulid',\n 'trim',\n 'toLowerCase',\n 'toUpperCase',\n];\n\nconst stringObjectParams = ['datetime', 'ip'];\n\nconst handleString = typeHandler((column: TextColumn | JSONString, errors) => {\n let type = z.string();\n const data = column.data;\n\n stringParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'email']({ message: errors?.[key] });\n }\n });\n\n stringObjectParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'datetime'](value as EmptyObject);\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = type.length(maxChars, { message: errors?.length });\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'step'];\n\nconst numberEmptyParams = ['finite', 'safe'];\n\nconst handleNumber = typeHandler(\n (column: NumberColumn | JSONNumber, errors) => {\n let type = z.number();\n numberParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n numberEmptyParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'finite']({ message: errors?.[key] });\n }\n });\n\n if ((column.data as Record<'int', boolean>).int) {\n type = type.int({ message: errors?.int });\n }\n\n return type;\n },\n);\n\nconst handleBigInt = typeHandler((_, errors) => {\n return z.string().refine(\n (value) => {\n try {\n BigInt(value);\n return true;\n } catch (_) {\n return false;\n }\n },\n {\n message: errors?.invalidType || 'Failed to parse bigint',\n },\n );\n});\n\nconst handleBuffer = typeHandler(() => {\n return z.instanceof(Buffer);\n});\n\nconst dateParams = ['min', 'max'];\nconst handleDate = typeHandler((column: DateColumn | JSONDate, errors) => {\n let type = z.date();\n dateParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as Date, { message: errors?.[key] });\n }\n });\n\n return z.preprocess(\n (val) =>\n typeof val === 'string' || typeof val === 'number' ? new Date(val) : val,\n type,\n );\n});\n\nconst handleTime = typeHandler((_, errors) => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: errors?.invalidType || 'Invalid time',\n },\n );\n});\n\nconst interval = z\n .object({\n years: z.number().optional(),\n months: z.number().optional(),\n days: z.number().optional(),\n hours: z.number().optional(),\n seconds: z.number().optional(),\n })\n .strict();\n\nconst handleInterval = typeHandler(() => interval);\n\nconst handleBoolean = typeHandler(() => z.boolean());\n\nconst handleEnum = typeHandler((column: EnumColumn | JSONEnum) => {\n const enumColumn = column as\n | EnumColumn<string, [string, ...string[]]>\n | JSONEnum<string, [string, ...string[]]>;\n return z.enum(enumColumn.options);\n});\n\nconst handleBitString = typeHandler((_, errors) => {\n return z.string().regex(/[10]/g, { message: errors?.invalidType });\n});\n\nconst handleUUID = typeHandler((_, errors) => {\n return z.string().uuid({ message: errors?.invalidType });\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>, errors) => {\n let type: z.ZodArray<z.ZodTypeAny>;\n if ('element' in array) {\n type = z.array(jsonItemToZod(array.element));\n } else {\n type = z.array(columnToZod(array.data.item));\n }\n\n arrayParams.forEach((key) => {\n const value = (array.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\n column.data.errors = column.data.schema.data.errors;\n return jsonItemToZod(type);\n});\n\nconst jsonItemToZod = (type: JSONTypeAny) => {\n const converter = jsonConverters[type.dataType];\n if (!converter) throw new Error(`Cannot parse column ${type.dataType}`);\n return converter(type);\n};\n\nconst itemToZod = (item: ColumnType | JSONTypeAny) => {\n return item instanceof ColumnType ? columnToZod(item) : jsonItemToZod(item);\n};\n\nconst converters: Record<string, (column: ColumnType) => z.ZodType> = {\n varchar: handleString,\n char: handleString,\n text: handleString,\n smallint: handleNumber,\n integer: handleNumber,\n real: handleNumber,\n smallserial: handleNumber,\n serial: handleNumber,\n money: handleNumber,\n bigint: handleBigInt,\n decimal: handleBigInt,\n 'double precision': handleBigInt,\n bigserial: handleBigInt,\n bytea: handleBuffer,\n date: handleDate,\n timestamp: handleDate,\n timestamptz: handleDate,\n time: handleTime,\n timetz: handleTime,\n interval: handleInterval,\n boolean: handleBoolean,\n enum: handleEnum,\n point: handleString,\n line: handleString,\n lseg: handleString,\n box: handleString,\n path: handleString,\n polygon: handleString,\n circle: handleString,\n cidr: handleString,\n inet: handleString,\n macaddr: handleString,\n macaddr8: handleString,\n bit: handleBitString,\n 'bit varying': handleBitString,\n tsvector: handleString,\n tsquery: handleString,\n xml: handleString,\n json: handleString,\n uuid: handleUUID,\n array: handleArray,\n jsonb: handleJson,\n};\n\nconst handleAny = typeHandler(() => z.any());\n\nconst handleNaN = typeHandler(() => z.nan());\n\nconst handleNever = typeHandler(() => z.never());\n\nconst handleNull = typeHandler(() => z.null());\n\nconst handleUnknown = typeHandler(() => z.unknown());\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => EmptyObject>) => z.instanceof(type.class),\n);\n\nconst handleLiteral = typeHandler((type: JSONTypeAny) => {\n return z.literal((type as JSONLiteral<string>).value);\n});\n\nconst handleMap = typeHandler((type: JSONMap<JSONTypeAny, JSONTypeAny>) => {\n const { keyType, valueType } = type;\n return z.map(jsonItemToZod(keyType), jsonItemToZod(valueType));\n});\n\nconst setParams = ['min', 'max', 'size'];\nconst handleSet = typeHandler((column: JSONSet<JSONTypeAny>, errors) => {\n const { valueType } = column;\n let type = z.set(jsonItemToZod(valueType));\n setParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n return type;\n});\n\nconst handleNativeEnum = typeHandler((type: JSONTypeAny) => {\n return z.nativeEnum((type as JSONNativeEnum<EnumLike>).enum);\n});\n\nconst handleTuple = typeHandler((column: JSONTuple) => {\n let type: z.ZodTuple<[], ZodTypeAny | null> = z.tuple(\n column.items.map((item) => jsonItemToZod(item)) as [],\n );\n if (column.restType) {\n type = type.rest(jsonItemToZod(column.restType));\n }\n return type;\n});\n\nconst handleObject = typeHandler(\n (type: JSONObject<Record<string, JSONTypeAny>, UnknownKeysParam>, errors) => {\n const shape: Record<string, z.ZodTypeAny> = {};\n for (const key in type.shape) {\n shape[key] = jsonItemToZod(type.shape[key]);\n }\n\n let object: z.ZodObject<z.ZodRawShape, UnknownKeysParam, z.ZodTypeAny> =\n z.object(shape);\n\n if (type.unknownKeys === 'passthrough') {\n object = object.passthrough();\n } else if (type.unknownKeys === 'strict') {\n object = object.strict(errors?.strict);\n }\n\n if (type.catchAllType) {\n object = object.catchall(jsonItemToZod(type.catchAllType));\n }\n\n return object;\n },\n);\n\nconst handleRecord = typeHandler(\n (type: JSONRecord<JSONRecordKeyType, JSONTypeAny>) => {\n return z.record(jsonItemToZod(type.keyType), jsonItemToZod(type.valueType));\n },\n);\n\nconst handleUnion = typeHandler(\n (type: JSONUnion<[JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]]>) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.union(type.types.map(jsonItemToZod) as any);\n },\n);\n\nconst handleIntersection = typeHandler(\n (type: JSONIntersection<JSONTypeAny, JSONTypeAny>) => {\n return z.intersection(jsonItemToZod(type.left), jsonItemToZod(type.right));\n },\n);\n\nconst handleDiscriminatedUnion = typeHandler(\n (\n type: JSONDiscriminatedUnion<\n string,\n Primitive,\n JSONDiscriminatedObject<string, Primitive>[]\n >,\n ) => {\n return z.discriminatedUnion(\n type.discriminator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...type.options.values()].map(jsonItemToZod) as any,\n );\n },\n);\n\nconst handleLazy = typeHandler((type: JSONLazy<JSONTypeAny>) => {\n return z.lazy(() => jsonItemToZod(type.getter()));\n});\n\nconst jsonConverters: Record<string, (type: JSONTypeAny) => z.ZodType> = {\n any: handleAny,\n bigint: handleBigInt,\n boolean: handleBoolean,\n date: handleDate,\n nan: handleNaN,\n never: handleNever,\n null: handleNull,\n number: handleNumber,\n string: handleString,\n unknown: handleUnknown,\n array: handleArray,\n enum: handleEnum,\n instanceOf: handleInstanceOf,\n literal: handleLiteral,\n map: handleMap,\n set: handleSet,\n nativeEnum: handleNativeEnum,\n tuple: handleTuple,\n object: handleObject,\n record: handleRecord,\n union: handleUnion,\n intersection: handleIntersection,\n discriminatedUnion: handleDiscriminatedUnion,\n lazy: handleLazy,\n};\n"],"names":["_"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/main.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\n VirtualColumn,\n} from 'pqb';\nimport {\n JSONArray,\n JSONEnum,\n JSONLiteral,\n EnumLike,\n JSONNativeEnum,\n JSONNumber,\n JSONString,\n JSONTuple,\n JSONObject,\n UnknownKeysParam,\n JSONDiscriminatedUnion,\n JSONRecord,\n JSONIntersection,\n JSONUnion,\n JSONLazy,\n EmptyObject,\n ColumnTypeBase,\n JSONType,\n JSONBoolean,\n JSONNull,\n JSONUnknown,\n JSONTupleItems,\n JSONObjectShape,\n JSONDiscriminatedUnionArg,\n} from 'orchid-core';\nimport { z, ZodErrorMap, ZodTypeAny } from 'zod';\nimport { Buffer } from 'node:buffer';\n\ntype NumberType =\n | 'smallint'\n | 'integer'\n | 'real'\n | 'smallserial'\n | 'serial'\n | 'money';\n\ntype BigIntType =\n | 'bigint'\n | 'numeric'\n | 'decimal'\n | 'double precision'\n | 'bigserial';\n\ntype StringType = 'varchar' | 'char' | 'text' | 'string' | 'xml' | 'json';\n\ntype DateTimeType = 'date' | 'timestamp' | 'timestamptz';\n\ntype TimeType = 'time' | 'time with time zone';\n\ntype GeometryType =\n | 'point'\n | 'line'\n | 'lseg'\n | 'box'\n | 'path'\n | 'polygon'\n | 'circle';\n\ntype NetworkType = 'cidr' | 'inet' | 'macaddr' | 'macaddr8';\n\ntype BitStringType = 'bit' | 'bit varying';\n\ntype FullTextSearchType = 'tsvector' | 'tsquery';\n\ntype UUIDType = 'uuid';\n\ntype ByteaType = 'bytea';\n\ntype SchemaToZod<\n T extends ColumnTypeBase,\n D = T['dataType'],\n> = T['data']['isNullable'] extends true\n ? z.ZodNullable<\n SchemaToZod<\n Omit<T, 'data'> & {\n data: Omit<T['data'], 'isNullable'> & { isNullable: false };\n }\n >\n >\n : D extends NumberType\n ? z.ZodNumber\n : D extends\n | BigIntType\n | StringType\n | TimeType\n | GeometryType\n | NetworkType\n | BitStringType\n | FullTextSearchType\n | UUIDType\n ? z.ZodString\n : D extends ByteaType\n ? z.ZodType<Buffer>\n : D extends DateTimeType\n ? z.ZodDate\n : D extends 'interval'\n ? typeof interval\n : D extends 'boolean'\n ? z.ZodBoolean\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends EnumColumn<any, any>\n ? z.ZodEnum<T['options']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends ArrayColumn<any>\n ? z.ZodArray<SchemaToZod<T['data']['item']>>\n : T extends JSONColumn<JSONType>\n ? JsonToZod<T['data']['schema']>\n : T extends VirtualColumn\n ? z.ZodNever\n : never;\n\ndeclare module 'orchid-core' {\n interface JSONType {\n zod: z.ZodTypeAny;\n }\n\n interface JSONUnknown {\n zod: z.ZodUnknown;\n }\n\n interface JSONBoolean {\n zod: z.ZodBoolean;\n }\n\n interface JSONNull {\n zod: z.ZodNull;\n }\n\n interface JSONNumber {\n zod: z.ZodNumber;\n }\n\n interface JSONString {\n zod: z.ZodString;\n }\n}\n\ntype JsonToZod<T extends JSONType> = T['data']['nullable'] extends true\n ? z.ZodNullable<JsonNotNullableToZod<T>>\n : JsonNotNullableToZod<T>;\n\ntype JsonNotNullableToZod<T extends JSONType> =\n T['data']['optional'] extends true\n ? z.ZodOptional<JsonNotOptionalToZod<T>>\n : JsonNotOptionalToZod<T>;\n\ntype JsonNotOptionalToZod<T extends JSONType> =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONUnion<any>\n ? z.ZodUnion<MapUnionArgs<T['data']['types']>>\n : T extends JSONArray<JSONType>\n ? z.ZodArray<JsonToZod<T['data']['item']>>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONEnum<any, any>\n ? z.ZodEnum<T['data']['options']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONLiteral<any>\n ? z.ZodLiteral<T['data']['value']>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONNativeEnum<any>\n ? z.ZodNativeEnum<T['data']['enum']>\n : T extends JSONTuple<JSONTupleItems, JSONType | undefined>\n ? z.ZodTuple<\n MapJsonTuple<T['data']['items']>,\n T['data']['rest'] extends JSONType ? JsonToZod<T['data']['rest']> : null\n >\n : T extends JSONObject<JSONObjectShape, UnknownKeysParam>\n ? z.ZodObject<\n { [K in keyof T['data']['shape']]: JsonToZod<T['data']['shape'][K]> },\n T['data']['unknownKeys'],\n JsonToZod<T['data']['catchAll']>\n >\n : T extends JSONRecord<JSONString | JSONNumber, JSONType>\n ? T['data']['key'] extends JSONString\n ? z.ZodRecord<z.ZodString, JsonToZod<T['data']['value']>>\n : z.ZodRecord<z.ZodNumber, JsonToZod<T['data']['value']>>\n : T extends JSONIntersection<JSONType, JSONType>\n ? z.ZodIntersection<\n JsonToZod<T['data']['left']>,\n JsonToZod<T['data']['right']>\n >\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, any>\n ? MapDiscriminatedUnion<T>\n : T['zod'];\n\nexport type MapDiscriminatedUnion<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends JSONDiscriminatedUnion<string, any>,\n Options = MapJsonTuple<T['data']['types']>,\n> = z.ZodDiscriminatedUnion<\n T['data']['discriminator'],\n Options extends z.ZodDiscriminatedUnionOption<T['data']['discriminator']>[]\n ? Options\n : never\n>;\n\ntype MapUnionArgs<T extends unknown[]> = T extends [\n infer F extends JSONType,\n infer S extends JSONType,\n ...infer Tail,\n]\n ? [JsonToZod<F>, JsonToZod<S>, ...MapJsonTuple<Tail>]\n : never;\n\ntype MapJsonTuple<T extends unknown[]> = T extends [infer Head, ...infer Tail]\n ? [Head extends JSONType ? JsonToZod<Head> : never, ...MapJsonTuple<Tail>]\n : [];\n\nexport type TableToZod<\n T extends new () => { columns: { shape: ColumnsShape } },\n> = InstanceToZod<InstanceType<T>['columns']>;\n\nexport const tableToZod = <\n T extends new () => { columns: { shape: ColumnsShape } },\n>(\n table: T,\n): TableToZod<T> => {\n return instanceToZod(new table().columns) as unknown as TableToZod<T>;\n};\n\nexport type InstanceToZod<T extends { shape: ColumnsShape }> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends { shape: ColumnsShape }>({\n shape,\n}: T): InstanceToZod<T> => {\n const result = {} as z.ZodRawShape;\n for (const key in shape) {\n const column = shape[key];\n if (!(column instanceof VirtualColumn)) {\n result[key as keyof typeof result] = columnToZod(column);\n }\n }\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const columnToZod = <T extends ColumnType>(\n column: T,\n): SchemaToZod<T> => {\n const dataType = column.data.as?.dataType || column.dataType;\n const converter = converters[dataType];\n if (!converter) {\n if (column instanceof VirtualColumn) {\n return handleNever(column) as SchemaToZod<T>;\n }\n throw new Error(`Cannot parse column ${dataType}`);\n }\n return converter(column) as SchemaToZod<T>;\n};\n\nconst typeHandler = <Type extends ColumnType | JSONType>(\n fn: (column: Type, errors?: Record<string, string>) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONType): z.ZodTypeAny => {\n let type = fn(column as Type, column.data.errors);\n\n const { errors } = column.data;\n const { required_error, invalid_type_error } = {\n required_error: errors?.required,\n invalid_type_error: errors?.invalidType,\n };\n\n // copy-pasted from Zod source, may break in future\n type._def.errorMap = ((iss, ctx) => {\n if (iss.code !== 'invalid_type') return { message: ctx.defaultError };\n if (ctx.data === undefined) {\n return { message: required_error ?? ctx.defaultError };\n }\n return { message: invalid_type_error ?? ctx.defaultError };\n }) as ZodErrorMap;\n\n const chain =\n column instanceof ColumnType ? column.chain : column.data.chain;\n if (chain) {\n for (const item of chain) {\n if (item[0] === 'transform') {\n type = type.transform(item[1]);\n } else if (item[0] === 'to') {\n type = z.preprocess(item[1], itemToZod(item[2]));\n } else if (item[0] === 'refine') {\n type = type.refine(item[1], { message: errors?.refine });\n } else if (item[0] === 'superRefine') {\n type = type.superRefine(item[1]);\n }\n }\n }\n\n if (\n ('nullable' in column.data && column.data.nullable) ||\n (column as ColumnType).data.isNullable\n ) {\n if ('optional' in column.data && column.data.optional) {\n type = type.nullish();\n } else {\n type = type.nullable();\n }\n } else if ('optional' in column.data && column.data.optional) {\n type = type.optional();\n }\n\n if (column instanceof ColumnType) {\n if (column.data.validationDefault !== undefined) {\n type = type.default(column.data.validationDefault);\n }\n } else if (column.data.default !== undefined) {\n type = type.default(column.data.default);\n }\n\n return type;\n };\n};\n\nconst stringParams = [\n 'min',\n 'max',\n 'length',\n 'regex',\n 'includes',\n 'startsWith',\n 'endsWith',\n];\n\nconst stringEmptyParams = [\n 'email',\n 'url',\n 'emoji',\n 'uuid',\n 'cuid',\n 'cuid2',\n 'ulid',\n 'trim',\n 'toLowerCase',\n 'toUpperCase',\n];\n\nconst stringObjectParams = ['datetime', 'ip'];\n\nconst handleString = typeHandler((column: TextColumn | JSONString, errors) => {\n let type = z.string();\n const data = column.data;\n\n stringParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'email']({ message: errors?.[key] });\n }\n });\n\n stringObjectParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'datetime'](value as EmptyObject);\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = type.length(maxChars, { message: errors?.length });\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'step'];\n\nconst numberEmptyParams = ['finite', 'safe'];\n\nconst handleNumber = typeHandler(\n (column: NumberColumn | JSONNumber, errors) => {\n let type = z.number();\n numberParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n numberEmptyParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value) {\n type = type[key as 'finite']({ message: errors?.[key] });\n }\n });\n\n if ((column.data as Record<'int', boolean>).int) {\n type = type.int({ message: errors?.int });\n }\n\n return type;\n },\n);\n\nconst handleBigInt = typeHandler((_, errors) => {\n return z.string().refine(\n (value) => {\n try {\n BigInt(value);\n return true;\n } catch (_) {\n return false;\n }\n },\n {\n message: errors?.invalidType || 'Failed to parse bigint',\n },\n );\n});\n\nconst handleBuffer = typeHandler(() => {\n return z.instanceof(Buffer);\n});\n\nconst dateParams = ['min', 'max'];\nconst handleDate = typeHandler((column: DateColumn, errors) => {\n let type = z.date();\n dateParams.forEach((key) => {\n const value = (column.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as Date, { message: errors?.[key] });\n }\n });\n\n return z.preprocess(\n (val) =>\n typeof val === 'string' || typeof val === 'number' ? new Date(val) : val,\n type,\n );\n});\n\nconst handleTime = typeHandler((_, errors) => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: errors?.invalidType || 'Invalid time',\n },\n );\n});\n\nconst interval = z\n .object({\n years: z.number().optional(),\n months: z.number().optional(),\n days: z.number().optional(),\n hours: z.number().optional(),\n seconds: z.number().optional(),\n })\n .strict();\n\nconst handleInterval = typeHandler(() => interval);\n\nconst handleBoolean = typeHandler(() => z.boolean());\n\nconst handleEnum = typeHandler(\n (column: EnumColumn | JSONEnum<string, [string, ...string[]]>) => {\n const enumColumn = column as\n | EnumColumn<string, [string, ...string[]]>\n | JSONEnum<string, [string, ...string[]]>;\n\n const options =\n enumColumn instanceof EnumColumn\n ? enumColumn.options\n : enumColumn.data.options;\n\n return z.enum(options);\n },\n);\n\nconst handleBitString = typeHandler((_, errors) => {\n return z.string().regex(/[10]/g, { message: errors?.invalidType });\n});\n\nconst handleUUID = typeHandler((_, errors) => {\n return z.string().uuid({ message: errors?.invalidType });\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONType>, errors) => {\n let type: z.ZodArray<z.ZodTypeAny>;\n if (array instanceof ColumnType) {\n type = z.array(columnToZod(array.data.item));\n } else {\n type = z.array(jsonItemToZod(array.data.item));\n }\n\n arrayParams.forEach((key) => {\n const value = (array.data as Record<string, unknown>)[key];\n if (value !== undefined) {\n type = type[key as 'min'](value as number, { message: errors?.[key] });\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\n column.data.errors = column.data.schema.data.errors;\n return jsonItemToZod(type);\n});\n\nconst jsonItemToZod = (type: JSONType): z.ZodTypeAny => {\n if (type instanceof JSONUnknown) {\n return handleUnknown(type);\n } else if (type instanceof JSONBoolean) {\n return handleBoolean(type);\n } else if (type instanceof JSONNull) {\n return handleNull(type);\n } else if (type instanceof JSONNumber) {\n return handleNumber(type);\n } else if (type instanceof JSONString) {\n return handleString(type);\n } else if (type instanceof JSONArray) {\n return handleArray(type);\n } else if (type instanceof JSONObject) {\n return handleObject(type);\n } else if (type instanceof JSONLiteral) {\n return handleLiteral(type);\n } else if (type instanceof JSONDiscriminatedUnion) {\n return handleDiscriminatedUnion(type);\n } else if (type instanceof JSONEnum) {\n return handleEnum(type);\n } else if (type instanceof JSONIntersection) {\n return handleIntersection(type);\n } else if (type instanceof JSONLazy) {\n return handleLazy(type);\n } else if (type instanceof JSONNativeEnum) {\n return handleNativeEnum(type);\n } else if (type instanceof JSONRecord) {\n return handleRecord(type);\n } else if (type instanceof JSONTuple) {\n return handleTuple(type);\n } else if (type instanceof JSONUnion) {\n return handleUnion(type);\n } else {\n throw new Error(`Cannot parse column ${type.constructor.name}`);\n }\n};\n\nconst itemToZod = (item: ColumnType | JSONType) => {\n return item instanceof ColumnType ? columnToZod(item) : jsonItemToZod(item);\n};\n\nconst converters: Record<string, (column: ColumnType) => z.ZodType> = {\n varchar: handleString,\n char: handleString,\n text: handleString,\n smallint: handleNumber,\n integer: handleNumber,\n real: handleNumber,\n smallserial: handleNumber,\n serial: handleNumber,\n money: handleNumber,\n bigint: handleBigInt,\n decimal: handleBigInt,\n 'double precision': handleBigInt,\n bigserial: handleBigInt,\n bytea: handleBuffer,\n date: handleDate,\n timestamp: handleDate,\n timestamptz: handleDate,\n time: handleTime,\n timetz: handleTime,\n interval: handleInterval,\n boolean: handleBoolean,\n enum: handleEnum,\n point: handleString,\n line: handleString,\n lseg: handleString,\n box: handleString,\n path: handleString,\n polygon: handleString,\n circle: handleString,\n cidr: handleString,\n inet: handleString,\n macaddr: handleString,\n macaddr8: handleString,\n bit: handleBitString,\n 'bit varying': handleBitString,\n tsvector: handleString,\n tsquery: handleString,\n xml: handleString,\n json: handleString,\n uuid: handleUUID,\n array: handleArray,\n jsonb: handleJson,\n};\n\nconst handleNever = typeHandler(() => z.never());\n\nconst handleNull = typeHandler(() => z.null());\n\nconst handleUnknown = typeHandler(() => z.unknown());\n\nconst handleLiteral = typeHandler((type: JSONType) => {\n return z.literal((type as JSONLiteral<string>).data.value);\n});\n\nconst handleNativeEnum = typeHandler((type: JSONType) => {\n return z.nativeEnum((type as JSONNativeEnum<EnumLike>).data.enum);\n});\n\nconst handleTuple = typeHandler((column: JSONTuple<JSONTupleItems>) => {\n let type: z.ZodTuple<[], ZodTypeAny | null> = z.tuple(\n column.data.items.map((item) => jsonItemToZod(item)) as [],\n );\n if (column.data.rest) {\n type = type.rest(jsonItemToZod(column.data.rest));\n }\n return type;\n});\n\nconst handleObject = typeHandler(\n (type: JSONObject<Record<string, JSONType>, UnknownKeysParam>, errors) => {\n const shape: Record<string, z.ZodTypeAny> = {};\n for (const key in type.data.shape) {\n shape[key] = jsonItemToZod(type.data.shape[key]);\n }\n\n let object: z.ZodObject<z.ZodRawShape, UnknownKeysParam, z.ZodTypeAny> =\n z.object(shape);\n\n if (type.data.unknownKeys === 'passthrough') {\n object = object.passthrough();\n } else if (type.data.unknownKeys === 'strict') {\n object = object.strict(errors?.strict);\n }\n\n if (type.data.catchAll) {\n object = object.catchall(jsonItemToZod(type.data.catchAll));\n }\n\n return object;\n },\n);\n\nconst handleRecord = typeHandler(\n (type: JSONRecord<JSONString | JSONNumber, JSONType>) => {\n return z.record(\n jsonItemToZod(type.data.key),\n jsonItemToZod(type.data.value),\n );\n },\n);\n\nconst handleUnion = typeHandler(\n (type: JSONUnion<[JSONType, JSONType, ...JSONType[]]>) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.union(type.data.types.map(jsonItemToZod) as any);\n },\n);\n\nconst handleIntersection = typeHandler(\n (type: JSONIntersection<JSONType, JSONType>) => {\n return z.intersection(\n jsonItemToZod(type.data.left),\n jsonItemToZod(type.data.right),\n );\n },\n);\n\nconst handleDiscriminatedUnion = typeHandler(\n (type: JSONDiscriminatedUnion<string, JSONDiscriminatedUnionArg<string>>) => {\n return z.discriminatedUnion(\n type.data.discriminator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...type.data.types].map(jsonItemToZod) as any,\n );\n },\n);\n\nconst handleLazy = typeHandler((type: JSONLazy<JSONType>) => {\n return z.lazy(() => jsonItemToZod(type.getType()));\n});\n"],"names":["_"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchid-orm-schema-to-zod",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.92",
|
|
4
4
|
"description": "Orchid-ORM columns schema to Zod converter",
|
|
5
5
|
"homepage": "https://orchid-orm.netlify.app/guide/columns-validation-methods.html",
|
|
6
6
|
"repository": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"license": "ISC",
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"zod": "^3.21.4",
|
|
47
|
-
"orchid-core": "0.
|
|
48
|
-
"pqb": "0.
|
|
47
|
+
"orchid-core": "0.8.0",
|
|
48
|
+
"pqb": "0.16.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"test-utils": "0.0.2"
|