@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
120 lines (119 loc) • 6.58 kB
TypeScript
import type { GraphQLInterfaceType, GraphQLNamedInputType, GraphQLNamedType } from 'graphql';
import { BacklandModules } from '../CircularDeps';
import { Infer } from '../Infer';
import { FinalFieldDefinition, ObjectDefinitionInput } from '../ObjectType';
import { ExtendObjectDefinition } from '../extendObjectDefinition';
import { ExtendType, MakeTypeList, MakeTypeOptional, MakeTypeRequired, MakeTypeSingle } from '../extendType';
import { FieldParserConfig, TAnyFieldType } from '../fields/FieldType';
import { GraphTypeLike } from '../fields/IObjectLike';
import { ObjectFieldInput } from '../fields/_parseFields';
import type { ObjectToTypescriptOptions } from '../objectToTypescript';
import type { ConvertFieldResult } from './GraphQLParser';
export declare class GraphType<Definition extends ObjectFieldInput> {
static __isGraphType: boolean;
readonly __isGraphType = true;
static register: import("@backland/utils").Store<Record<string, GraphTypeLike>, string, GraphTypeLike>;
static resolvers: import("@backland/utils").Store<Record<string, {
description?: import("graphql/jsutils/Maybe").Maybe<string>;
subscribe?: import("graphql").GraphQLFieldResolver<any, any, any, unknown> | undefined;
deprecationReason?: import("graphql/jsutils/Maybe").Maybe<string>;
extensions?: import("graphql/jsutils/Maybe").Maybe<Readonly<import("graphql").GraphQLFieldExtensions<any, any, any>>>;
astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").FieldDefinitionNode>;
__graphTypeId: string;
__isRelation: boolean;
__isResolver: true;
__relatedToGraphTypeId: string;
args: any;
argsDef: any;
argsType: any;
asObjectField: (name?: string | undefined) => import("graphql").GraphQLField<any, any, any>;
kind: import("../Resolver").ResolverKind;
name: string;
payloadType: any;
type: any;
typeDef: any;
resolve: <Root>(root: Root, args: any, context: any, info: import("graphql").GraphQLResolveInfo) => any;
}>, string, {
description?: import("graphql/jsutils/Maybe").Maybe<string>;
subscribe?: import("graphql").GraphQLFieldResolver<any, any, any, unknown> | undefined;
deprecationReason?: import("graphql/jsutils/Maybe").Maybe<string>;
extensions?: import("graphql/jsutils/Maybe").Maybe<Readonly<import("graphql").GraphQLFieldExtensions<any, any, any>>>;
astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").FieldDefinitionNode>;
__graphTypeId: string;
__isRelation: boolean;
__isResolver: true;
__relatedToGraphTypeId: string;
args: any;
argsDef: any;
argsType: any;
asObjectField: (name?: string | undefined) => import("graphql").GraphQLField<any, any, any>;
kind: import("../Resolver").ResolverKind;
name: string;
payloadType: any;
type: any;
typeDef: any;
resolve: <Root>(root: Root, args: any, context: any, info: import("graphql").GraphQLResolveInfo) => any;
}>;
static reset: () => Promise<void>;
readonly definition: Definition;
get id(): string;
private _optionalId;
get optionalId(): string | undefined;
constructor(definition: Definition extends ObjectFieldInput ? Definition | (() => Definition) : never);
constructor(name: string, definition: Definition extends ObjectFieldInput ? Definition | (() => Definition) : never);
__lazyGetter: LazyParseGraphTypePayload;
touched: boolean;
touch(): this;
private __hidden;
identify: (name: string) => void;
set hidden(value: boolean);
get hidden(): boolean;
parse: (input: any, options?: FieldParserConfig) => Infer<Definition>;
_toGraphQL: () => ConvertFieldResult;
graphQLType: (options?: import("./GraphQLParser").ParseTypeOptions | undefined) => GraphQLNamedType;
graphQLInputType: (options?: import("./GraphQLParser").ParseInputTypeOptions | undefined) => GraphQLNamedInputType;
graphQLInterface: (options?: import("./GraphQLParser").ParseInterfaceOptions | undefined) => GraphQLInterfaceType;
clone<T>(handler: (input: ExtendObjectDefinition<this, this>) => T): T;
override<T>(handler: (input: ExtendType<this>) => T): T;
beforeInitialize: ((definition: LazyParseGraphTypePayload) => LazyParseGraphTypePayload)[];
mutateFields<Def extends ObjectDefinitionInput>(callback: (input: ExtendObjectDefinition<this, this>) => Def): GraphType<{
object: Def;
}>;
print: () => string[];
typescriptPrint: (options?: (ObjectToTypescriptOptions & {
name?: string | undefined;
}) | undefined) => Promise<string>;
optionalType: (name?: string) => Definition extends unknown ? GraphType<MakeTypeOptional<Definition>> : never;
requiredType: (name?: string) => Definition extends unknown ? GraphType<MakeTypeRequired<Definition>> : never;
listType: (name?: string) => Definition extends unknown ? GraphType<MakeTypeList<Definition>> : never;
singleType: (name?: string) => Definition extends unknown ? GraphType<MakeTypeSingle<Definition>> : never;
/**
* Get an Object with the provided id
* or set a new Object in the register if not found.
* @param id
* @param def
*/
static getOrSet: <T extends ObjectFieldInput>(id: string, def: T) => GraphType<T>;
static is(input: any): input is GraphType<any>;
static isTypeDefinition(input: any): input is {
defaultValue?: unknown;
description?: string;
hidden?: boolean;
list?: boolean;
name?: string;
optional?: boolean;
type: GraphTypeLike;
};
}
export type LazyParseGraphTypePayload = {
definition: FinalFieldDefinition;
definitionInput: ObjectFieldInput | ((utils: BacklandModules) => ObjectFieldInput);
field: TAnyFieldType;
id: string | undefined;
idFromArgs: string | undefined;
objectType?: any;
};
export type GraphTypeArgs<Def extends ObjectFieldInput = ObjectFieldInput> = [string, Def | ((utils: BacklandModules) => Def)] | [Def | ((utils: BacklandModules) => Def)];
export declare function createType<Definition extends ObjectFieldInput>(definition: Definition | ((utils: BacklandModules) => Definition)): GraphType<Definition>;
export declare function createType<Definition extends ObjectFieldInput>(name: string, definition: Definition | ((utils: BacklandModules) => Definition)): GraphType<Definition>;
export declare function getType(name: string): GraphTypeLike;