@cortexql/ts2graphql
Version:
A TypeScrpt transpiler to GraphQL for your project
89 lines (88 loc) • 3.37 kB
TypeScript
import { TypeDoc, TypeDocRef } from './TypeDoc';
import { GraphQLObjectType, GraphQLSchema, GraphQLNamedType, GraphQLResolveInfo, GraphQLType } from 'graphql';
export interface Parser {
name: string;
args: (boolean | string | number | null)[];
}
export interface ParserRule extends Parser {
path: string[];
valueType: GraphQLType;
}
export interface ParserHandlerParseOptions {
type: GraphQLObjectType;
fieldName: string;
args: {
[argName: string]: any;
};
sanitizeRules: ParserRule[];
validateRules: ParserRule[];
source: any;
context: any;
info: GraphQLResolveInfo;
}
export declare type ParserHandlerTest = (action: 'sanitize' | 'validate', valueType: GraphQLNamedType, name: string, args: (boolean | string | number | null)[]) => Error | void;
export declare type ParserHandlerParse = (options: ParserHandlerParseOptions) => void | Promise<void>;
export interface ParserHandler {
test: ParserHandlerTest;
parse: ParserHandlerParse;
}
export interface TypeDoc2GraphQLPaths {
types: string;
query: string;
mutation: string;
subscription: string;
}
export interface TypeDoc2GraphQLOptions {
types?: GraphQLNamedType[];
parserHandler?: ParserHandler;
paths?: Partial<TypeDoc2GraphQLPaths>;
}
export declare class TypeDoc2GraphQL {
protected typedoc: TypeDoc;
protected options: TypeDoc2GraphQLOptions;
protected resolvedTypes: {
[key: string]: GraphQLNamedType;
};
protected types: {
[name: string]: GraphQLNamedType;
};
protected paths: TypeDoc2GraphQLPaths;
protected query: GraphQLObjectType | void;
protected mutation: GraphQLObjectType | void;
protected subscription: GraphQLObjectType | void;
protected parserHandler: ParserHandler;
constructor(options: TypeDoc2GraphQLOptions);
initialize(doc: TypeDocRef | TypeDoc): void;
getTypeDoc(): TypeDoc;
private relativeError(message, ref, externalModule?);
private getFileExport(file, subscribe?);
private resolveIntrinsicType(type, ref);
private resolveExternalUnionType(typeRef, ref);
private resolveExternalType(ref, parents?, isInput?);
private resolveInterfaceMethodArg(ref, parent, methodName?);
private resolveInterfaceMethodArgs(ref, parent?, methodName?);
private parseValueArg(arg);
parseValueJSON(tagText: string): any;
private parseValue(tagText);
private resolveInterfacePropertyAsField(ref, parent, isInput?, methodName?);
private resolveInterfaceType(ref, isInput?);
resolveFields(ref: TypeDocRef, isInput?: boolean): any;
private resolveClassType(ref, checkExtendObjectType?);
private resolveEnumerationType(ref);
private resolveType(ref, isInput?);
private resolveMethod(ref, methodName);
getCustomTypes(): any;
hasCustomType(name: string): boolean;
getCustomType(name: string): GraphQLNamedType;
getTypes(): GraphQLNamedType[];
hasType(name: string): boolean;
getType(name: string): GraphQLNamedType;
private getExportResolveFields(path, name);
private getResolveFields(path, name);
private getRootType(name, path, extra?);
getQueryType(): GraphQLObjectType;
getMutationType(): void | GraphQLObjectType;
getSubscriptionType(): void | GraphQLObjectType;
getSchemaConfig(): any;
getSchema(): GraphQLSchema;
}