@ordao/zod-utils
Version:
Helper utilities for working with zod
63 lines • 3.38 kB
TypeScript
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