UNPKG

@ordao/zod-utils

Version:

Helper utilities for working with zod

63 lines 3.38 kB
import { z, ZodStringCheck } from "zod"; export declare const primitiveTypeNames: readonly ["number", "bigint", "boolean"]; export type PrimitiveTypeName = typeof primitiveTypeNames[number]; export type ObjectTypeName = 'object'; export type ArrayTypeName = 'array'; export type StringTypeName = 'string'; export type LiteralTypeName = 'literal'; export type TypeName = PrimitiveTypeName | StringTypeName | LiteralTypeName | ObjectTypeName | ArrayTypeName; export interface TypeInfoBase { typeName: TypeName; schema: z.ZodSchema; optional?: boolean; defaultValue?: unknown; title?: string; description?: string; } export interface PrimitiveTypeInfo extends TypeInfoBase { typeName: PrimitiveTypeName; } export interface ObjectTypeInfo extends TypeInfoBase { typeName: ObjectTypeName; fields: Record<string, TypeInfo>; } export interface ArrayTypeInfo extends TypeInfoBase { typeName: ArrayTypeName; elementType: TypeInfo; min?: number; max?: number; } export interface StringTypeInfo extends TypeInfoBase { typeName: 'string'; checks: ZodStringCheck[]; } export interface LiteralTypeInfo extends TypeInfoBase { typeName: 'literal'; value: number | string | boolean | bigint | symbol; } export type TypeInfo = PrimitiveTypeInfo | StringTypeInfo | LiteralTypeInfo | ObjectTypeInfo | ArrayTypeInfo; export declare function strTypeLength(strt: StringTypeInfo): number | undefined; export declare function strTypeMinLength(strt: StringTypeInfo): number | undefined; export declare function strTypeMaxLength(strt: StringTypeInfo): number | undefined; export declare function isPrimitive(typeInfo: TypeInfo): typeInfo is PrimitiveTypeInfo; export interface TypeTitleDesc { title?: string; description?: string; } export declare function extractZodDescription(schema: z.ZodTypeAny): TypeTitleDesc; export declare function zodEffectInnerType<T extends z.ZodTypeAny>(effect: z.ZodEffects<T>): T; export declare function zodOptionalInnerType<T extends z.ZodTypeAny>(optional: z.ZodOptional<T>): T; export declare function zodNullableInnerType<T extends z.ZodTypeAny>(nullable: z.ZodNullable<T>): T; export declare function zodPipelineInnerType<A extends z.ZodTypeAny, B extends z.ZodTypeAny>(pipeline: z.ZodPipeline<A, B>): B; export declare function zodDefaultValue<T extends z.ZodTypeAny>(schema: z.ZodDefault<T>): z.infer<T>; export declare function zodDefaultInnerType<T extends z.ZodTypeAny>(schema: z.ZodDefault<T>): T; export declare function zodLiteralInnerType<T>(literal: z.ZodLiteral<T>): T; export declare function zodObjectFields<T extends z.AnyZodObject>(schema: T): Record<string, TypeInfo>; export declare function zodTypeStr<T extends z.ZodTypeAny>(type: T): string; export declare function zodArrayElementType<T extends z.ZodTypeAny>(array: z.ZodArray<T>): TypeInfo; export declare function zodArrayMinLength<T extends z.ZodTypeAny>(array: z.ZodArray<T>): number | undefined; export declare function zodArrayMaxLength<T extends z.ZodTypeAny>(array: z.ZodArray<T>): number | undefined; export declare function zodStringChecks(zstr: z.ZodString): z.ZodStringCheck[]; export declare function overwriteDescription<T extends z.ZodTypeAny>(typeInfo: TypeInfo, schema: T): TypeInfo; export declare function getTypeInfo<T extends z.ZodTypeAny>(schema: T): TypeInfo; //# sourceMappingURL=reflection.d.ts.map