orchid-orm-schema-to-zod 0.2.23 → 0.2.25
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 +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -19
- package/.turbo/turbo-check.log +0 -192
- package/.turbo/turbo-test.log +0 -192
- package/.turbo/turbo-test:ci.log +0 -192
- package/CHANGELOG.md +0 -283
- package/coverage/coverage-summary.json +0 -3
- package/jest-setup.ts +0 -3
- package/rollup.config.js +0 -3
- package/src/index.test.ts +0 -1295
- package/src/index.ts +0 -689
- package/tsconfig.json +0 -12
package/dist/index.d.ts
CHANGED
|
@@ -14,8 +14,10 @@ declare type BitStringType = 'bit' | 'bit varying';
|
|
|
14
14
|
declare type FullTextSearchType = 'tsvector' | 'tsquery';
|
|
15
15
|
declare type UUIDType = 'uuid';
|
|
16
16
|
declare type ByteaType = 'bytea';
|
|
17
|
-
declare type SchemaToZod<T extends ColumnType, D = T['dataType']> = T['isNullable'] extends true ? z.ZodNullable<SchemaToZod<Omit<T, '
|
|
18
|
-
|
|
17
|
+
declare type SchemaToZod<T extends ColumnType, D = T['dataType']> = T['data']['isNullable'] extends true ? z.ZodNullable<SchemaToZod<Omit<T, 'data'> & {
|
|
18
|
+
data: Omit<T['data'], 'isNullable'> & {
|
|
19
|
+
isNullable: false;
|
|
20
|
+
};
|
|
19
21
|
}>> : 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<string, infer U> ? z.ZodEnum<U> : T extends ArrayColumn<infer U> ? z.ZodArray<SchemaToZod<U>> : T extends JSONColumn ? JsonToZod<T['data']['schema']> : T extends VirtualColumn ? z.ZodNever : never;
|
|
20
22
|
declare type JsonToZod<T extends JSONTypeAny, D = T['dataType']> = T extends {
|
|
21
23
|
types: [JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]];
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\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 VirtualColumn,\n} from 'pqb';\nimport { z, 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' | 'timestamp with time zone';\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 ColumnType,\n D = T['dataType'],\n> = T['isNullable'] extends true\n ? z.ZodNullable<SchemaToZod<Omit<T, 'isNullable'> & { isNullable: false }>>\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 'undefined'\n ? z.ZodUndefined\n : D extends 'unknown'\n ? z.ZodUnknown\n : D extends 'void'\n ? z.ZodVoid\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 ? z.ZodDiscriminatedUnion<\n T['discriminator'],\n T['discriminatorValue'],\n JsonToZod<T['_option']> extends z.ZodDiscriminatedUnionOption<\n T['discriminator'],\n T['discriminatorValue']\n >\n ? JsonToZod<T['_option']>\n : never\n >\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\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) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type);\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]);\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 'startsWith',\n 'endsWith',\n];\nconst stringEmptyParams = ['email', 'url', 'uuid', 'cuid', 'trim'];\nconst handleString = typeHandler((column: TextColumn | JSONString) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodString>\n )[key](value);\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = (type as unknown as Record<string, () => z.ZodString>)[key]();\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = (\n type as unknown as Record<string, (len: number) => z.ZodString>\n ).length(maxChars);\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'multipleOf'];\nconst handleNumber = typeHandler((column: NumberColumn | JSONNumber) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodNumber>\n )[key](value);\n }\n });\n if ((column.data as Record<string, boolean>).int) {\n type = type.int();\n }\n return type;\n});\n\nconst handleBigInt = typeHandler(() => {\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: '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) => {\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 as unknown as Record<string, (value: unknown) => z.ZodDate>)[\n key\n ](value);\n }\n });\n\n return z.preprocess(\n (val) => (typeof val === 'string' ? new Date(val) : val),\n type,\n );\n});\n\nconst handleTime = typeHandler(() => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: '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(() => {\n return interval;\n});\n\nconst handleBoolean = typeHandler(() => {\n return z.boolean();\n});\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(() => {\n return z.string().regex(/[10]/g);\n});\n\nconst handleUUID = typeHandler(() => {\n return z.string().uuid();\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodArray<z.ZodTypeAny>\n >\n )[key](value);\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\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 'timestamp with time zone': handleDate,\n time: handleTime,\n 'time with time zone': 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(() => {\n return z.any();\n});\n\nconst handleNaN = typeHandler(() => {\n return z.nan();\n});\n\nconst handleNever = typeHandler(() => {\n return z.never();\n});\n\nconst handleNull = typeHandler(() => {\n return z.null();\n});\n\nconst handleUndefined = typeHandler(() => {\n return z.undefined();\n});\n\nconst handleUnknown = typeHandler(() => {\n return z.unknown();\n});\n\nconst handleVoid = typeHandler(() => {\n return z.void();\n});\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => unknown>) => {\n return z.instanceof(type.class);\n },\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>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodSet<z.ZodTypeAny>\n >\n )[key](value);\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>) => {\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();\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 undefined: handleUndefined,\n unknown: handleUnknown,\n void: handleVoid,\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/index.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\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 VirtualColumn,\n} from 'pqb';\nimport { z, 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' | 'timestamp with time zone';\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 ColumnType,\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 'undefined'\n ? z.ZodUndefined\n : D extends 'unknown'\n ? z.ZodUnknown\n : D extends 'void'\n ? z.ZodVoid\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 ? z.ZodDiscriminatedUnion<\n T['discriminator'],\n T['discriminatorValue'],\n JsonToZod<T['_option']> extends z.ZodDiscriminatedUnionOption<\n T['discriminator'],\n T['discriminatorValue']\n >\n ? JsonToZod<T['_option']>\n : never\n >\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\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) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type);\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]);\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 'startsWith',\n 'endsWith',\n];\nconst stringEmptyParams = ['email', 'url', 'uuid', 'cuid', 'trim'];\nconst handleString = typeHandler((column: TextColumn | JSONString) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodString>\n )[key](value);\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = (type as unknown as Record<string, () => z.ZodString>)[key]();\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = (\n type as unknown as Record<string, (len: number) => z.ZodString>\n ).length(maxChars);\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'multipleOf'];\nconst handleNumber = typeHandler((column: NumberColumn | JSONNumber) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodNumber>\n )[key](value);\n }\n });\n if ((column.data as Record<string, boolean>).int) {\n type = type.int();\n }\n return type;\n});\n\nconst handleBigInt = typeHandler(() => {\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: '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) => {\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 as unknown as Record<string, (value: unknown) => z.ZodDate>)[\n key\n ](value);\n }\n });\n\n return z.preprocess(\n (val) => (typeof val === 'string' ? new Date(val) : val),\n type,\n );\n});\n\nconst handleTime = typeHandler(() => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: '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(() => {\n return interval;\n});\n\nconst handleBoolean = typeHandler(() => {\n return z.boolean();\n});\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(() => {\n return z.string().regex(/[10]/g);\n});\n\nconst handleUUID = typeHandler(() => {\n return z.string().uuid();\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodArray<z.ZodTypeAny>\n >\n )[key](value);\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\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 'timestamp with time zone': handleDate,\n time: handleTime,\n 'time with time zone': 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(() => {\n return z.any();\n});\n\nconst handleNaN = typeHandler(() => {\n return z.nan();\n});\n\nconst handleNever = typeHandler(() => {\n return z.never();\n});\n\nconst handleNull = typeHandler(() => {\n return z.null();\n});\n\nconst handleUndefined = typeHandler(() => {\n return z.undefined();\n});\n\nconst handleUnknown = typeHandler(() => {\n return z.unknown();\n});\n\nconst handleVoid = typeHandler(() => {\n return z.void();\n});\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => unknown>) => {\n return z.instanceof(type.class);\n },\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>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodSet<z.ZodTypeAny>\n >\n )[key](value);\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>) => {\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();\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 undefined: handleUndefined,\n unknown: handleUnknown,\n void: handleVoid,\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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"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\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 VirtualColumn,\n} from 'pqb';\nimport { z, 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' | 'timestamp with time zone';\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 ColumnType,\n D = T['dataType'],\n> = T['isNullable'] extends true\n ? z.ZodNullable<SchemaToZod<Omit<T, 'isNullable'> & { isNullable: false }>>\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 'undefined'\n ? z.ZodUndefined\n : D extends 'unknown'\n ? z.ZodUnknown\n : D extends 'void'\n ? z.ZodVoid\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 ? z.ZodDiscriminatedUnion<\n T['discriminator'],\n T['discriminatorValue'],\n JsonToZod<T['_option']> extends z.ZodDiscriminatedUnionOption<\n T['discriminator'],\n T['discriminatorValue']\n >\n ? JsonToZod<T['_option']>\n : never\n >\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\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) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type);\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]);\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 'startsWith',\n 'endsWith',\n];\nconst stringEmptyParams = ['email', 'url', 'uuid', 'cuid', 'trim'];\nconst handleString = typeHandler((column: TextColumn | JSONString) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodString>\n )[key](value);\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = (type as unknown as Record<string, () => z.ZodString>)[key]();\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = (\n type as unknown as Record<string, (len: number) => z.ZodString>\n ).length(maxChars);\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'multipleOf'];\nconst handleNumber = typeHandler((column: NumberColumn | JSONNumber) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodNumber>\n )[key](value);\n }\n });\n if ((column.data as Record<string, boolean>).int) {\n type = type.int();\n }\n return type;\n});\n\nconst handleBigInt = typeHandler(() => {\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: '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) => {\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 as unknown as Record<string, (value: unknown) => z.ZodDate>)[\n key\n ](value);\n }\n });\n\n return z.preprocess(\n (val) => (typeof val === 'string' ? new Date(val) : val),\n type,\n );\n});\n\nconst handleTime = typeHandler(() => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: '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(() => {\n return interval;\n});\n\nconst handleBoolean = typeHandler(() => {\n return z.boolean();\n});\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(() => {\n return z.string().regex(/[10]/g);\n});\n\nconst handleUUID = typeHandler(() => {\n return z.string().uuid();\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodArray<z.ZodTypeAny>\n >\n )[key](value);\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\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 'timestamp with time zone': handleDate,\n time: handleTime,\n 'time with time zone': 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(() => {\n return z.any();\n});\n\nconst handleNaN = typeHandler(() => {\n return z.nan();\n});\n\nconst handleNever = typeHandler(() => {\n return z.never();\n});\n\nconst handleNull = typeHandler(() => {\n return z.null();\n});\n\nconst handleUndefined = typeHandler(() => {\n return z.undefined();\n});\n\nconst handleUnknown = typeHandler(() => {\n return z.unknown();\n});\n\nconst handleVoid = typeHandler(() => {\n return z.void();\n});\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => unknown>) => {\n return z.instanceof(type.class);\n },\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>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodSet<z.ZodTypeAny>\n >\n )[key](value);\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>) => {\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();\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 undefined: handleUndefined,\n unknown: handleUnknown,\n void: handleVoid,\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/index.ts"],"sourcesContent":["import {\n ArrayColumn,\n ColumnsShape,\n ColumnType,\n DateColumn,\n EnumColumn,\n JSONColumn,\n NumberColumn,\n TextColumn,\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 VirtualColumn,\n} from 'pqb';\nimport { z, 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' | 'timestamp with time zone';\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 ColumnType,\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 'undefined'\n ? z.ZodUndefined\n : D extends 'unknown'\n ? z.ZodUnknown\n : D extends 'void'\n ? z.ZodVoid\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 ? z.ZodDiscriminatedUnion<\n T['discriminator'],\n T['discriminatorValue'],\n JsonToZod<T['_option']> extends z.ZodDiscriminatedUnionOption<\n T['discriminator'],\n T['discriminatorValue']\n >\n ? JsonToZod<T['_option']>\n : never\n >\n : D extends 'any'\n ? z.ZodTypeAny\n : z.ZodType<T['type']>;\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) => z.ZodTypeAny,\n) => {\n return (column: ColumnType | JSONTypeAny) => {\n let type = fn(column as Type);\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]);\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 'startsWith',\n 'endsWith',\n];\nconst stringEmptyParams = ['email', 'url', 'uuid', 'cuid', 'trim'];\nconst handleString = typeHandler((column: TextColumn | JSONString) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodString>\n )[key](value);\n }\n });\n\n stringEmptyParams.forEach((key) => {\n const value = (data as Record<string, unknown>)[key];\n if (value) {\n type = (type as unknown as Record<string, () => z.ZodString>)[key]();\n }\n });\n\n const { maxChars } = data as { maxChars?: number };\n if (maxChars !== undefined) {\n type = (\n type as unknown as Record<string, (len: number) => z.ZodString>\n ).length(maxChars);\n }\n\n return type;\n});\n\nconst numberParams = ['lt', 'lte', 'gt', 'gte', 'multipleOf'];\nconst handleNumber = typeHandler((column: NumberColumn | JSONNumber) => {\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 = (\n type as unknown as Record<string, (value: unknown) => z.ZodNumber>\n )[key](value);\n }\n });\n if ((column.data as Record<string, boolean>).int) {\n type = type.int();\n }\n return type;\n});\n\nconst handleBigInt = typeHandler(() => {\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: '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) => {\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 as unknown as Record<string, (value: unknown) => z.ZodDate>)[\n key\n ](value);\n }\n });\n\n return z.preprocess(\n (val) => (typeof val === 'string' ? new Date(val) : val),\n type,\n );\n});\n\nconst handleTime = typeHandler(() => {\n return z.string().refine(\n (val) => {\n return !isNaN(new Date(`2000-01-01 ${val}`).getTime());\n },\n {\n message: '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(() => {\n return interval;\n});\n\nconst handleBoolean = typeHandler(() => {\n return z.boolean();\n});\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(() => {\n return z.string().regex(/[10]/g);\n});\n\nconst handleUUID = typeHandler(() => {\n return z.string().uuid();\n});\n\nconst arrayParams = ['min', 'max', 'length'];\nconst handleArray = typeHandler(\n (array: ArrayColumn<ColumnType> | JSONArray<JSONTypeAny>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodArray<z.ZodTypeAny>\n >\n )[key](value);\n }\n });\n\n return type;\n },\n);\n\nconst handleJson = typeHandler((column: JSONColumn) => {\n const type = column.data.schema;\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 'timestamp with time zone': handleDate,\n time: handleTime,\n 'time with time zone': 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(() => {\n return z.any();\n});\n\nconst handleNaN = typeHandler(() => {\n return z.nan();\n});\n\nconst handleNever = typeHandler(() => {\n return z.never();\n});\n\nconst handleNull = typeHandler(() => {\n return z.null();\n});\n\nconst handleUndefined = typeHandler(() => {\n return z.undefined();\n});\n\nconst handleUnknown = typeHandler(() => {\n return z.unknown();\n});\n\nconst handleVoid = typeHandler(() => {\n return z.void();\n});\n\nconst handleInstanceOf = typeHandler(\n (type: JSONInstanceOf<new () => unknown>) => {\n return z.instanceof(type.class);\n },\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>) => {\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 = (\n type as unknown as Record<\n string,\n (value: unknown) => z.ZodSet<z.ZodTypeAny>\n >\n )[key](value);\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>) => {\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();\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 undefined: handleUndefined,\n unknown: handleUnknown,\n void: handleVoid,\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchid-orm-schema-to-zod",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.25",
|
|
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": {
|
|
@@ -17,14 +17,17 @@
|
|
|
17
17
|
"types": "./dist/index.d.ts"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
20
23
|
"jest": {
|
|
24
|
+
"rootDir": "src",
|
|
21
25
|
"setupFiles": [
|
|
22
26
|
"dotenv/config"
|
|
23
27
|
],
|
|
24
|
-
"globalSetup": "
|
|
28
|
+
"globalSetup": "../../../jest-global-setup.ts",
|
|
25
29
|
"setupFilesAfterEnv": [
|
|
26
|
-
"
|
|
27
|
-
"./jest-setup.ts"
|
|
30
|
+
"../../../jest-setup.ts"
|
|
28
31
|
],
|
|
29
32
|
"transform": {
|
|
30
33
|
"^.+\\.ts$": "@swc/jest"
|
|
@@ -39,26 +42,14 @@
|
|
|
39
42
|
"author": "Roman Kushyn",
|
|
40
43
|
"license": "ISC",
|
|
41
44
|
"dependencies": {
|
|
42
|
-
"pqb": "0.9.
|
|
45
|
+
"pqb": "0.9.19",
|
|
43
46
|
"zod": "^3.19.1"
|
|
44
47
|
},
|
|
45
|
-
"devDependencies": {
|
|
46
|
-
"rollup": "^2.79.0",
|
|
47
|
-
"rollup-plugin-dts": "^4.2.2",
|
|
48
|
-
"rollup-plugin-esbuild": "^4.10.1",
|
|
49
|
-
"@swc/core": "^1.2.210",
|
|
50
|
-
"@swc/jest": "^0.2.21",
|
|
51
|
-
"@types/jest": "^28.1.2",
|
|
52
|
-
"@types/node": "^18.0.1",
|
|
53
|
-
"jest": "^28.1.2",
|
|
54
|
-
"rimraf": "^3.0.2",
|
|
55
|
-
"tslib": "^2.4.0",
|
|
56
|
-
"typescript": "^4.7.4"
|
|
57
|
-
},
|
|
58
48
|
"scripts": {
|
|
59
49
|
"test": "jest --watch --verbose false",
|
|
60
50
|
"check": "jest",
|
|
51
|
+
"types": "tsc",
|
|
61
52
|
"test:ci": "jest --coverage --coverageReporters json-summary",
|
|
62
|
-
"build": "rimraf ./dist/ && rollup -c
|
|
53
|
+
"build": "rimraf ./dist/ && rollup -c ../../rollup.config"
|
|
63
54
|
}
|
|
64
55
|
}
|
package/.turbo/turbo-check.log
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> orchid-orm-schema-to-zod@0.2.22 check /home/romeo/dev/my/orchid-orm/packages/schema-to-zod
|
|
3
|
-
> jest
|
|
4
|
-
|
|
5
|
-
PASS src/index.test.ts
|
|
6
|
-
table to zod
|
|
7
|
-
✓ should convert a table to a zod validation schema (248 ms)
|
|
8
|
-
instance to zod
|
|
9
|
-
✓ should convert object with shape to a zod validation schema (2 ms)
|
|
10
|
-
schema to zod
|
|
11
|
-
transform
|
|
12
|
-
✓ should transform column value (1 ms)
|
|
13
|
-
✓ should transform json value (1 ms)
|
|
14
|
-
to
|
|
15
|
-
✓ should transform column value to a type (51 ms)
|
|
16
|
-
✓ should transform json value to a type (1 ms)
|
|
17
|
-
refine
|
|
18
|
-
✓ should add a refine check for column type (2 ms)
|
|
19
|
-
✓ should add a refine check for json type (2 ms)
|
|
20
|
-
superRefine
|
|
21
|
-
✓ should add a superRefine check for column type (26 ms)
|
|
22
|
-
✓ should add a superRefine check for json type (2 ms)
|
|
23
|
-
validationDefault
|
|
24
|
-
✓ should set default value for column (2 ms)
|
|
25
|
-
✓ should set default value for json type (1 ms)
|
|
26
|
-
nullable
|
|
27
|
-
✓ should parse nullable (1 ms)
|
|
28
|
-
smallint
|
|
29
|
-
✓ should convert to number (84 ms)
|
|
30
|
-
integer
|
|
31
|
-
✓ should convert to number (26 ms)
|
|
32
|
-
real
|
|
33
|
-
✓ should convert to number (35 ms)
|
|
34
|
-
smallSerial
|
|
35
|
-
✓ should convert to number (39 ms)
|
|
36
|
-
serial
|
|
37
|
-
✓ should convert to number (77 ms)
|
|
38
|
-
money
|
|
39
|
-
✓ should convert to number (29 ms)
|
|
40
|
-
bigint
|
|
41
|
-
✓ should validate bigint and parse to a string (35 ms)
|
|
42
|
-
numeric
|
|
43
|
-
✓ should validate bigint and parse to a string (1 ms)
|
|
44
|
-
decimal
|
|
45
|
-
✓ should validate bigint and parse to a string (1 ms)
|
|
46
|
-
doublePrecision
|
|
47
|
-
✓ should validate bigint and parse to a string (1 ms)
|
|
48
|
-
bigSerial
|
|
49
|
-
✓ should validate bigint and parse to a string (1 ms)
|
|
50
|
-
varchar
|
|
51
|
-
✓ should convert to string (40 ms)
|
|
52
|
-
✓ should convert to string with limit (2 ms)
|
|
53
|
-
char
|
|
54
|
-
✓ should convert to string (61 ms)
|
|
55
|
-
✓ should convert to string with limit (1 ms)
|
|
56
|
-
text
|
|
57
|
-
✓ should convert to string (86 ms)
|
|
58
|
-
string
|
|
59
|
-
✓ should convert to string (30 ms)
|
|
60
|
-
bytea
|
|
61
|
-
✓ should check Buffer (3 ms)
|
|
62
|
-
date
|
|
63
|
-
✓ should parse from string to a Date (2 ms)
|
|
64
|
-
✓ should parse from Date to a Date (3 ms)
|
|
65
|
-
timestamp
|
|
66
|
-
✓ should parse from string to a Date (1 ms)
|
|
67
|
-
✓ should parse from Date to a Date (3 ms)
|
|
68
|
-
timestampWithTimeZone
|
|
69
|
-
✓ should parse from string to a Date (1 ms)
|
|
70
|
-
✓ should parse from Date to a Date (2 ms)
|
|
71
|
-
time
|
|
72
|
-
✓ should validate and parse to a string (2 ms)
|
|
73
|
-
timeWithTimeZone
|
|
74
|
-
✓ should validate and parse to a string (1 ms)
|
|
75
|
-
interval
|
|
76
|
-
✓ should validate and parse time interval (2 ms)
|
|
77
|
-
boolean
|
|
78
|
-
✓ should validate and parse a boolean (15 ms)
|
|
79
|
-
enum
|
|
80
|
-
✓ should validate and parse enum (2 ms)
|
|
81
|
-
point
|
|
82
|
-
✓ should parse to a string without validation (1 ms)
|
|
83
|
-
line
|
|
84
|
-
✓ should parse to a string without validation (1 ms)
|
|
85
|
-
lseg
|
|
86
|
-
✓ should parse to a string without validation (1 ms)
|
|
87
|
-
box
|
|
88
|
-
✓ should parse to a string without validation (1 ms)
|
|
89
|
-
path
|
|
90
|
-
✓ should parse to a string without validation (25 ms)
|
|
91
|
-
polygon
|
|
92
|
-
✓ should parse to a string without validation (1 ms)
|
|
93
|
-
circle
|
|
94
|
-
✓ should parse to a string without validation (1 ms)
|
|
95
|
-
cidr
|
|
96
|
-
✓ should parse to a string without validation (1 ms)
|
|
97
|
-
inet
|
|
98
|
-
✓ should parse to a string without validation (1 ms)
|
|
99
|
-
macaddr
|
|
100
|
-
✓ should parse to a string without validation (1 ms)
|
|
101
|
-
macaddr8
|
|
102
|
-
✓ should parse to a string without validation (1 ms)
|
|
103
|
-
bit
|
|
104
|
-
✓ should validate a string to contain only 1 or 0 and parse to a string (11 ms)
|
|
105
|
-
bitVarying
|
|
106
|
-
✓ should validate a string to contain only 1 or 0 and parse to a string (1 ms)
|
|
107
|
-
tsvector
|
|
108
|
-
✓ should parse to a string without validation (2 ms)
|
|
109
|
-
tsquery
|
|
110
|
-
✓ should parse to a string without validation (86 ms)
|
|
111
|
-
xml
|
|
112
|
-
✓ should parse to a string without validation (19 ms)
|
|
113
|
-
jsonText
|
|
114
|
-
✓ should parse to a string without validation (2 ms)
|
|
115
|
-
uuid
|
|
116
|
-
✓ should validate uuid and parse to a string (26 ms)
|
|
117
|
-
array
|
|
118
|
-
✓ should validate and parse array (61 ms)
|
|
119
|
-
json
|
|
120
|
-
any
|
|
121
|
-
✓ should parse to any (1 ms)
|
|
122
|
-
bigint
|
|
123
|
-
✓ should validate bigint and parse to string (2 ms)
|
|
124
|
-
boolean
|
|
125
|
-
✓ should parse boolean (1 ms)
|
|
126
|
-
date
|
|
127
|
-
✓ should parse a Date (25 ms)
|
|
128
|
-
nan
|
|
129
|
-
✓ should parse a NaN (80 ms)
|
|
130
|
-
never
|
|
131
|
-
✓ should parse a never (10 ms)
|
|
132
|
-
null
|
|
133
|
-
✓ should parse a null (2 ms)
|
|
134
|
-
number
|
|
135
|
-
✓ should parse a number (31 ms)
|
|
136
|
-
string
|
|
137
|
-
✓ should parse a string (28 ms)
|
|
138
|
-
undefined
|
|
139
|
-
✓ should parse a undefined (2 ms)
|
|
140
|
-
unknown
|
|
141
|
-
✓ should parse unknown (24 ms)
|
|
142
|
-
void
|
|
143
|
-
✓ should parse void (1 ms)
|
|
144
|
-
array
|
|
145
|
-
✓ should validate and parse array (26 ms)
|
|
146
|
-
enum
|
|
147
|
-
✓ should parse enum (2 ms)
|
|
148
|
-
instanceOf
|
|
149
|
-
✓ should parse instance of (2 ms)
|
|
150
|
-
literal
|
|
151
|
-
✓ should parse literal (2 ms)
|
|
152
|
-
map
|
|
153
|
-
✓ should parse map (3 ms)
|
|
154
|
-
set
|
|
155
|
-
✓ should parse set (8 ms)
|
|
156
|
-
nativeEnum
|
|
157
|
-
✓ should parse native enum (2 ms)
|
|
158
|
-
tuple
|
|
159
|
-
✓ should parse tuple (2 ms)
|
|
160
|
-
✓ should parse rest elements (2 ms)
|
|
161
|
-
nullable
|
|
162
|
-
✓ should parse nullable (1 ms)
|
|
163
|
-
nullish
|
|
164
|
-
✓ should parse nullish
|
|
165
|
-
optional
|
|
166
|
-
✓ should parse optional
|
|
167
|
-
object
|
|
168
|
-
✓ should parse object (2 ms)
|
|
169
|
-
✓ should parse object with passing through unknown keys (2 ms)
|
|
170
|
-
✓ should parse object with strict unknown keys (1 ms)
|
|
171
|
-
✓ should parse object with catch all option (2 ms)
|
|
172
|
-
record
|
|
173
|
-
✓ should parse record (2 ms)
|
|
174
|
-
intersection
|
|
175
|
-
✓ should parse intersection (3 ms)
|
|
176
|
-
union
|
|
177
|
-
✓ should parse union (3 ms)
|
|
178
|
-
discriminatedUnion
|
|
179
|
-
✓ should parse discriminated union (3 ms)
|
|
180
|
-
lazy
|
|
181
|
-
✓ should parse lazy type (18 ms)
|
|
182
|
-
as
|
|
183
|
-
✓ should convert one type to the same schema as another type (1 ms)
|
|
184
|
-
virtual
|
|
185
|
-
✓ should skip virtual column in instanceToZod (1 ms)
|
|
186
|
-
✓ should return ZodNever from columnToZod (1 ms)
|
|
187
|
-
|
|
188
|
-
Test Suites: 1 passed, 1 total
|
|
189
|
-
Tests: 97 passed, 97 total
|
|
190
|
-
Snapshots: 0 total
|
|
191
|
-
Time: 3.25 s, estimated 6 s
|
|
192
|
-
Ran all test suites.
|