type-graphql
Version:
Create GraphQL schema and resolvers with TypeScript, using classes and decorators!
49 lines (48 loc) • 1.66 kB
TypeScript
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;