UNPKG

type-graphql

Version:

Create GraphQL schema and resolvers with TypeScript, using classes and decorators!

49 lines (48 loc) 1.66 kB
import { type TypeOptions, type TypeValueThunk } from "../../decorators/types.js"; import { type ValidateSettings } from "../../schema/build-context.js"; import { type ResolverData, type ValidatorFn } from "../../typings/index.js"; export interface BasicParamMetadata { target: Function; methodName: string; index: number; } export type InfoParamMetadata = { kind: "info"; } & BasicParamMetadata; export type PubSubParamMetadata = { kind: "pubSub"; triggerKey?: string; } & BasicParamMetadata; export type ContextParamMetadata = { kind: "context"; propertyName: string | undefined; } & BasicParamMetadata; export type RootParamMetadata = { kind: "root"; propertyName: string | undefined; getType: TypeValueThunk | undefined; } & BasicParamMetadata; export type CommonArgMetadata = { getType: TypeValueThunk; typeOptions: TypeOptions; validateSettings: ValidateSettings | undefined; validateFn: ValidatorFn | undefined; } & BasicParamMetadata; export type ArgParamMetadata = { kind: "arg"; name: string; description: string | undefined; deprecationReason: string | undefined; } & CommonArgMetadata; export type ArgsParamMetadata = { kind: "args"; } & CommonArgMetadata; export interface CustomParamOptions { arg?: ArgParamMetadata; } export type CustomParamMetadata = { kind: "custom"; resolver: (resolverData: ResolverData<any>) => any; options: CustomParamOptions; } & BasicParamMetadata; export type ParamMetadata = InfoParamMetadata | PubSubParamMetadata | ContextParamMetadata | RootParamMetadata | ArgParamMetadata | ArgsParamMetadata | CustomParamMetadata;