deno.land / x / pothos@release-1713397530 / packages / plugin-validation / types.ts
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768// @ts-nocheckimport { GraphQLResolveInfo } from 'https://cdn.skypack.dev/graphql?dts';import { ZodError, ZodSchema } from 'https://cdn.skypack.dev/zod@v1.11.17?dts';import { MaybePromise, SchemaTypes } from '../core/index.ts';export interface ValidationPluginOptions<Types extends SchemaTypes> { validationError?: ValidationErrorFn<Types>;}export type ValidationErrorFn<Types extends SchemaTypes> = (error: ZodError, args: Record<string, unknown>, context: Types["Context"], info: GraphQLResolveInfo) => Error | string;export type Constraint<T> = T | (T extends object ? [ value: T, options: { message?: string; path?: string[]; }] : [ value: T, options: { message?: string; }]);export type RefineConstraint<T = unknown> = Constraint<(value: T) => MaybePromise<boolean>> | Constraint<(value: T) => MaybePromise<boolean>>[];export interface BaseValidationOptions<T = unknown> { refine?: RefineConstraint<T>; schema?: ZodSchema<T>; type?: string;}export interface NumberValidationOptions<T extends number = number> extends BaseValidationOptions<T> { type?: "number"; min?: Constraint<number>; max?: Constraint<number>; positive?: Constraint<boolean>; nonnegative?: Constraint<boolean>; negative?: Constraint<boolean>; nonpositive?: Constraint<boolean>; int?: Constraint<boolean>;}export interface BigIntValidationOptions<T extends bigint = bigint> extends BaseValidationOptions<T> { type?: "bigint";}export interface BooleanValidationOptions<T extends boolean = boolean> extends BaseValidationOptions<T> { type?: "boolean";}export interface DateValidationOptions<T extends Date = Date> extends BaseValidationOptions<T> { type?: "date";}export interface StringValidationOptions<T extends string = string> extends BaseValidationOptions<T> { type?: "string"; minLength?: Constraint<number>; maxLength?: Constraint<number>; length?: Constraint<number>; url?: Constraint<boolean>; uuid?: Constraint<boolean>; email?: Constraint<boolean>; regex?: Constraint<RegExp>;}export interface ObjectValidationOptions<T extends object = object> extends BaseValidationOptions<T> { type?: "object";}export interface ArrayValidationOptions<T extends unknown[] = unknown[]> extends BaseValidationOptions<T> { type?: "array"; items?: ValidationOptions<T[number]>; minLength?: Constraint<number>; maxLength?: Constraint<number>; length?: Constraint<number>;}export type ValidationOptions<T> = RefineConstraint<T> | RefineConstraint<T>[] | (T extends number ? NumberValidationOptions<T> : T extends bigint ? BigIntValidationOptions<T> : T extends boolean ? BooleanValidationOptions<T> : T extends string ? StringValidationOptions<T> : T extends Date ? DateValidationOptions<T> : T extends unknown[] ? ArrayValidationOptions<T> : T extends object ? ObjectValidationOptions<T> : BaseValidationOptions<T>);export type ValidationOptionUnion = ArrayValidationOptions | BaseValidationOptions | BigIntValidationOptions | BooleanValidationOptions | DateValidationOptions | NumberValidationOptions | ObjectValidationOptions | StringValidationOptions;
Version Info