orchid-orm-schema-to-zod 0.4.13 → 0.4.15

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.js CHANGED
@@ -128,7 +128,7 @@ const handleString = typeHandler((column, errors) => {
128
128
  });
129
129
  const { maxChars } = data;
130
130
  if (maxChars !== void 0) {
131
- type = type.length(maxChars, { message: errors == null ? void 0 : errors.length });
131
+ type = type.max(maxChars, { message: errors == null ? void 0 : errors.length });
132
132
  }
133
133
  return type;
134
134
  });
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 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\ntype Columns = { shape: ColumnsShape };\ntype Table = { columns: ColumnsShape };\ntype TableClass<T extends Table> = { new (): T };\n\nexport type InstanceToZod<T extends Columns> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends Columns>({\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\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const zodSchemaProvider = function <T extends Table>(\n this: TableClass<T>,\n): InstanceToZod<{ shape: T['columns'] }> {\n return instanceToZod({\n shape: this.prototype.columns,\n }) as unknown as InstanceToZod<{\n shape: T['columns'];\n }>;\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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"}
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\ntype Columns = { shape: ColumnsShape };\ntype Table = { columns: ColumnsShape };\ntype TableClass<T extends Table> = { new (): T };\n\nexport type InstanceToZod<T extends Columns> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends Columns>({\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\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const zodSchemaProvider = function <T extends Table>(\n this: TableClass<T>,\n): InstanceToZod<{ shape: T['columns'] }> {\n return instanceToZod({\n shape: this.prototype.columns,\n }) as unknown as InstanceToZod<{\n shape: T['columns'];\n }>;\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.max(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
@@ -126,7 +126,7 @@ const handleString = typeHandler((column, errors) => {
126
126
  });
127
127
  const { maxChars } = data;
128
128
  if (maxChars !== void 0) {
129
- type = type.length(maxChars, { message: errors == null ? void 0 : errors.length });
129
+ type = type.max(maxChars, { message: errors == null ? void 0 : errors.length });
130
130
  }
131
131
  return type;
132
132
  });
@@ -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 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\ntype Columns = { shape: ColumnsShape };\ntype Table = { columns: ColumnsShape };\ntype TableClass<T extends Table> = { new (): T };\n\nexport type InstanceToZod<T extends Columns> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends Columns>({\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\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const zodSchemaProvider = function <T extends Table>(\n this: TableClass<T>,\n): InstanceToZod<{ shape: T['columns'] }> {\n return instanceToZod({\n shape: this.prototype.columns,\n }) as unknown as InstanceToZod<{\n shape: T['columns'];\n }>;\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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"}
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\ntype Columns = { shape: ColumnsShape };\ntype Table = { columns: ColumnsShape };\ntype TableClass<T extends Table> = { new (): T };\n\nexport type InstanceToZod<T extends Columns> = z.ZodObject<{\n [K in keyof T['shape']]: SchemaToZod<T['shape'][K]>;\n}>;\n\nexport const instanceToZod = <T extends Columns>({\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\n return z.object(result) as InstanceToZod<T>;\n};\n\nexport const zodSchemaProvider = function <T extends Table>(\n this: TableClass<T>,\n): InstanceToZod<{ shape: T['columns'] }> {\n return instanceToZod({\n shape: this.prototype.columns,\n }) as unknown as InstanceToZod<{\n shape: T['columns'];\n }>;\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.max(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.4.13",
3
+ "version": "0.4.15",
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": {
@@ -45,7 +45,7 @@
45
45
  "dependencies": {
46
46
  "zod": "^3.21.4",
47
47
  "orchid-core": "0.10.8",
48
- "pqb": "0.18.10"
48
+ "pqb": "0.18.12"
49
49
  },
50
50
  "devDependencies": {
51
51
  "test-utils": "0.0.3"