deno.land / x / pothos@release-1713397530 / packages / plugin-validation / types.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// @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;
pothos

Version Info

Tagged at
a year ago