diff --git a/@types/index.d.ts b/@types/index.d.ts
deleted file mode 100644
index 5fdc1fe..0000000
--- a/@types/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare module "@grapher" {
- export interface GrapherQuery {}
-}
diff --git a/@types/src/index.d.ts b/@types/src/index.d.ts
new file mode 100644
index 0000000..96dcecf
--- /dev/null
+++ b/@types/src/index.d.ts
@@ -0,0 +1,132 @@
+/** @format */
+
+///
+
+declare module 'meteor/cultofcoders:grapher' {
+ import { Mongo } from 'meteor/mongo'
+ import { DocumentNode } from 'graphql'
+
+ module Grapher {
+ type TypesEnum = 'one' | 'many'
+
+ interface Query {
+ setParams(): any
+ resolve(): any
+ expose(): any
+ } // WIP
+
+ interface ILink {
+ collection: Mongo.Collection
+ type: TypesEnum
+ metadata?: true
+ field: string
+ index?: boolean
+ denormalize?: iDenormalize
+ }
+
+ interface ILink {
+ collection: Mongo.Collection
+ inversedBy: string
+ denormalize?: iDenormalize
+ }
+
+ type Link = {
+ [field: string]: ILink
+ }
+
+ type QueryOptions = {
+ $filter?: Mongo.FieldExpression
+ }
+ type Body = {
+ [field: string]: DependencyGraph | Body | QueryOptions
+ }
+ type createQuery = (
+ name: string,
+ body: Body | {},
+ options?: {}
+ ) => any
+
+ type QueryBody = Body
+
+ type BodyEnum = 0 | 1
+
+ type GrapherBody = TSchema extends object
+ ? SelectionSet>
+ : SelectionSet
+
+ type TEmbodyArgs = {
+ body: GrapherBody
+ getArgs(): TArgs
+ }
+
+ type DependencyGraph = {
+ [field: string]: GrapherBody | DependencyGraph
+ }
+
+ type TFirewall = (
+ filters: TFilters,
+ options: TOptions,
+ userId: string
+ ) => void
+
+ interface SelectionSet {
+ [field: string]: BodyType
+ }
+ interface iDenormalize {
+ field: string
+ body: {
+ [field: string]: number
+ }
+ }
+
+ interface GraphQLQuery {
+ embody?: (transform: TEmbodyArgs) => void
+ $filter?: Mongo.Selector
+ $options?: Mongo.Options
+ // Integer
+ maxDepth?: number
+ // Integer
+ maxLimit?: number
+ deny?: string[]
+ intersect?: GrapherBody
+ }
+
+ interface Exposure {
+ firewall?: TFirewall | TFirewall[]
+ publication?: boolean // Boolean
+ method?: boolean // Boolean
+ blocking?: boolean // Boolean
+ maxLimit?: number // Number
+ maxDepth?: number // Number
+ restrictedFields?: string[] // [String]
+ restrictLinks?: string[] | ((...args: any[]) => any) // [String] or Function,
+ }
+
+ interface ASTToQueryOptions {
+ maxLimit: number
+ maxDepth: number
+ }
+ }
+
+ export function setAstToQueryDefaults(
+ options: Grapher.ASTToQueryOptions
+ ): void
+
+ export const db: Readonly<{
+ [key: string]: Mongo.CollectionStatic
+ }>
+
+ export class MemoryResultCacher {
+ constructor({ ttl }: { ttl: number })
+
+ public fetch(
+ cacheId: string,
+ options: {
+ query: any
+ countCursor: any
+ }
+ ): TResult
+
+ public storeData(cacheId: string, data: T): void
+ }
+}
diff --git a/@types/src/mongo/index.d.ts b/@types/src/mongo/index.d.ts
new file mode 100644
index 0000000..f5514d4
--- /dev/null
+++ b/@types/src/mongo/index.d.ts
@@ -0,0 +1,29 @@
+import { Grapher } from 'meteor/cultofcoders:grapher'
+import { Mongo } from 'meteor/mongo'
+import { DocumentNode } from 'graphql'
+
+declare module 'meteor/mongo' {
+ module Mongo {
+ interface Options {}
+
+ interface Collection {
+ attachSchema(schema: T): void
+ astToQuery(
+ ast: DocumentNode,
+ query: Grapher.GraphQLQuery
+ ): Mongo.Cursor
+ createQuery(
+ name: string,
+ body: Grapher.Body | {},
+ options?: {}
+ ): Grapher.Query
+ createQuery(
+ body: Grapher.Body | {},
+ options?: {}
+ ): Grapher.Query
+ expose: Grapher.Exposure
+ addLinks(links: Grapher.Link): void
+ addReducers(): void
+ }
+ }
+}
diff --git a/index.ts b/index.ts
new file mode 100644
index 0000000..259307a
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,5 @@
+///
+
+import { db } from "meteor/cultofcoders:grapher";
+
+db.stress = 8
\ No newline at end of file
diff --git a/index.d.ts b/mongo.d.ts
similarity index 68%
rename from index.d.ts
rename to mongo.d.ts
index 3b4dd79..7cd6da9 100644
--- a/index.d.ts
+++ b/mongo.d.ts
@@ -1,13 +1,7 @@
-///
-
import { GrapherQuery } from "@grapher";
import { Mongo } from "meteor/mongo";
import { DocumentNode } from "graphql";
-declare module "meteor/cultofcoders:grapher" {
- export * from "@grapher";
-}
-
declare module "meteor/mongo" {
export interface Collection {
astToQuery(ast: DocumentNode, query: GrapherQuery): Mongo.Cursor;
diff --git a/node_modules/@types/connect/LICENSE b/node_modules/@types/connect/LICENSE
new file mode 100644
index 0000000..4b1ad51
--- /dev/null
+++ b/node_modules/@types/connect/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/connect/README.md b/node_modules/@types/connect/README.md
new file mode 100644
index 0000000..88b7569
--- /dev/null
+++ b/node_modules/@types/connect/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/connect`
+
+# Summary
+This package contains type definitions for connect (https://github.com/senchalabs/connect).
+
+# Details
+Files were exported from https://www.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/connect
+
+Additional Details
+ * Last updated: Tue, 17 Apr 2018 01:01:05 GMT
+ * Dependencies: http, node
+ * Global values: none
+
+# Credits
+These definitions were written by Maxime LUCE , Evan Hahn .
diff --git a/node_modules/@types/connect/index.d.ts b/node_modules/@types/connect/index.d.ts
new file mode 100644
index 0000000..a6eed0c
--- /dev/null
+++ b/node_modules/@types/connect/index.d.ts
@@ -0,0 +1,94 @@
+// Type definitions for connect v3.4.0
+// Project: https://github.com/senchalabs/connect
+// Definitions by: Maxime LUCE
+// Evan Hahn
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+
+import * as http from "http";
+
+/**
+ * Create a new connect server.
+ * @public
+ */
+declare function createServer(): createServer.Server;
+
+declare namespace createServer {
+ export type ServerHandle = HandleFunction | http.Server;
+
+ type NextFunction = (err?: any) => void;
+
+ export type SimpleHandleFunction = (req: http.IncomingMessage, res: http.ServerResponse) => void;
+ export type NextHandleFunction = (req: http.IncomingMessage, res: http.ServerResponse, next: NextFunction) => void;
+ export type ErrorHandleFunction = (err: any, req: http.IncomingMessage, res: http.ServerResponse, next: NextFunction) => void;
+ export type HandleFunction = SimpleHandleFunction | NextHandleFunction | ErrorHandleFunction;
+
+ export interface ServerStackItem {
+ route: string;
+ handle: ServerHandle;
+ }
+
+ export interface Server extends NodeJS.EventEmitter {
+ (req: http.IncomingMessage, res: http.ServerResponse, next?: Function): void;
+
+ route: string;
+ stack: ServerStackItem[];
+
+ /**
+ * Utilize the given middleware `handle` to the given `route`,
+ * defaulting to _/_. This "route" is the mount-point for the
+ * middleware, when given a value other than _/_ the middleware
+ * is only effective when that segment is present in the request's
+ * pathname.
+ *
+ * For example if we were to mount a function at _/admin_, it would
+ * be invoked on _/admin_, and _/admin/settings_, however it would
+ * not be invoked for _/_, or _/posts_.
+ *
+ * @public
+ */
+ use(fn: HandleFunction): Server;
+ use(route: string, fn: HandleFunction): Server;
+
+ /**
+ * Handle server requests, punting them down
+ * the middleware stack.
+ *
+ * @private
+ */
+ handle(req: http.IncomingMessage, res: http.ServerResponse, next: Function): void;
+
+ /**
+ * Listen for connections.
+ *
+ * This method takes the same arguments
+ * as node's `http.Server#listen()`.
+ *
+ * HTTP and HTTPS:
+ *
+ * If you run your application both as HTTP
+ * and HTTPS you may wrap them individually,
+ * since your Connect "server" is really just
+ * a JavaScript `Function`.
+ *
+ * var connect = require('connect')
+ * , http = require('http')
+ * , https = require('https');
+ *
+ * var app = connect();
+ *
+ * http.createServer(app).listen(80);
+ * https.createServer(options, app).listen(443);
+ *
+ * @api public
+ */
+ listen(port: number, hostname?: string, backlog?: number, callback?: Function): http.Server;
+ listen(port: number, hostname?: string, callback?: Function): http.Server;
+ listen(path: string, callback?: Function): http.Server;
+ listen(handle: any, listeningListener?: Function): http.Server;
+ }
+}
+
+export = createServer;
diff --git a/node_modules/@types/graphql/LICENSE b/node_modules/@types/graphql/LICENSE
new file mode 100644
index 0000000..4b1ad51
--- /dev/null
+++ b/node_modules/@types/graphql/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/node_modules/@types/graphql/README.md b/node_modules/@types/graphql/README.md
new file mode 100644
index 0000000..be5b639
--- /dev/null
+++ b/node_modules/@types/graphql/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/graphql`
+
+# Summary
+This package contains type definitions for graphql (https://www.npmjs.com/package/graphql).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/graphql
+
+Additional Details
+ * Last updated: Wed, 05 Sep 2018 16:29:25 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by TonyYang , Caleb Meredith , Dominic Watson , Firede , Kepennar , Mikhail Novikov , Ivan Goncharov , Hagai Cohen , Ricardo Portugal , Tim Griesser , Dylan Stewart , Alessio Dionisi , Divyendu Singh , Brad Zacher , Curtis Layne .
diff --git a/node_modules/@types/graphql/error/GraphQLError.d.ts b/node_modules/@types/graphql/error/GraphQLError.d.ts
new file mode 100644
index 0000000..de97686
--- /dev/null
+++ b/node_modules/@types/graphql/error/GraphQLError.d.ts
@@ -0,0 +1,78 @@
+import Maybe from "../tsutils/Maybe";
+import { getLocation } from "../language";
+import { ASTNode } from "../language/ast";
+import { Source } from "../language/source";
+import { SourceLocation } from "../language/location";
+
+/**
+ * A GraphQLError describes an Error found during the parse, validate, or
+ * execute phases of performing a GraphQL operation. In addition to a message
+ * and stack trace, it also includes information about the locations in a
+ * GraphQL document and/or execution result that correspond to the Error.
+ */
+export class GraphQLError extends Error {
+ /**
+ * A message describing the Error for debugging purposes.
+ *
+ * Enumerable, and appears in the result of JSON.stringify().
+ *
+ * Note: should be treated as readonly, despite invariant usage.
+ */
+ message: string;
+
+ /**
+ * An array of { line, column } locations within the source GraphQL document
+ * which correspond to this error.
+ *
+ * Errors during validation often contain multiple locations, for example to
+ * point out two things with the same name. Errors during execution include a
+ * single location, the field which produced the error.
+ *
+ * Enumerable, and appears in the result of JSON.stringify().
+ */
+ readonly locations: ReadonlyArray | undefined;
+
+ /**
+ * An array describing the JSON-path into the execution response which
+ * corresponds to this error. Only included for errors during execution.
+ *
+ * Enumerable, and appears in the result of JSON.stringify().
+ */
+ readonly path: ReadonlyArray | undefined;
+
+ /**
+ * An array of GraphQL AST Nodes corresponding to this error.
+ */
+ readonly nodes: ReadonlyArray | undefined;
+
+ /**
+ * The source GraphQL document corresponding to this error.
+ */
+ readonly source: Source | undefined;
+
+ /**
+ * An array of character offsets within the source GraphQL document
+ * which correspond to this error.
+ */
+ readonly positions: ReadonlyArray | undefined;
+
+ /**
+ * The original error thrown from a field resolver during execution.
+ */
+ readonly originalError: Maybe & { readonly extensions: any };
+
+ /**
+ * Extension fields to add to the formatted error.
+ */
+ readonly extensions: { [key: string]: any } | undefined;
+
+ constructor(
+ message: string,
+ nodes?: ReadonlyArray | ASTNode | undefined,
+ source?: Maybe,
+ positions?: Maybe>,
+ path?: Maybe>,
+ originalError?: Maybe,
+ extensions?: Maybe<{ [key: string]: any }>
+ );
+}
diff --git a/node_modules/@types/graphql/error/formatError.d.ts b/node_modules/@types/graphql/error/formatError.d.ts
new file mode 100644
index 0000000..5930c02
--- /dev/null
+++ b/node_modules/@types/graphql/error/formatError.d.ts
@@ -0,0 +1,15 @@
+import { GraphQLError } from "./GraphQLError";
+import { SourceLocation } from "../language/location";
+
+/**
+ * Given a GraphQLError, format it according to the rules described by the
+ * Response Format, Errors section of the GraphQL Specification.
+ */
+export function formatError(error: GraphQLError): GraphQLFormattedError;
+
+export interface GraphQLFormattedError {
+ readonly message: string;
+ readonly locations: ReadonlyArray | undefined;
+ readonly path: ReadonlyArray | undefined;
+ readonly extensions?: { [key: string]: any };
+}
diff --git a/node_modules/@types/graphql/error/index.d.ts b/node_modules/@types/graphql/error/index.d.ts
new file mode 100644
index 0000000..ad00270
--- /dev/null
+++ b/node_modules/@types/graphql/error/index.d.ts
@@ -0,0 +1,5 @@
+export { GraphQLError } from "./GraphQLError";
+export { syntaxError } from "./syntaxError";
+export { locatedError } from "./locatedError";
+export { printError } from "./printError";
+export { formatError, GraphQLFormattedError } from "./formatError";
diff --git a/node_modules/@types/graphql/error/locatedError.d.ts b/node_modules/@types/graphql/error/locatedError.d.ts
new file mode 100644
index 0000000..da366f6
--- /dev/null
+++ b/node_modules/@types/graphql/error/locatedError.d.ts
@@ -0,0 +1,13 @@
+import { GraphQLError } from "./GraphQLError";
+import { ASTNode } from "../language/ast";
+
+/**
+ * Given an arbitrary Error, presumably thrown while attempting to execute a
+ * GraphQL operation, produce a new GraphQLError aware of the location in the
+ * document responsible for the original Error.
+ */
+export function locatedError(
+ originalError: Error | GraphQLError,
+ nodes: ReadonlyArray,
+ path: ReadonlyArray
+): GraphQLError;
diff --git a/node_modules/@types/graphql/error/printError.d.ts b/node_modules/@types/graphql/error/printError.d.ts
new file mode 100644
index 0000000..2d1758e
--- /dev/null
+++ b/node_modules/@types/graphql/error/printError.d.ts
@@ -0,0 +1,7 @@
+import { GraphQLError } from "./GraphQLError";
+
+/**
+ * Prints a GraphQLError to a string, representing useful location information
+ * about the error's position in the source.
+ */
+export function printError(error: GraphQLError): string;
diff --git a/node_modules/@types/graphql/error/syntaxError.d.ts b/node_modules/@types/graphql/error/syntaxError.d.ts
new file mode 100644
index 0000000..e3756a6
--- /dev/null
+++ b/node_modules/@types/graphql/error/syntaxError.d.ts
@@ -0,0 +1,8 @@
+import { Source } from "../language/source";
+import { GraphQLError } from "./GraphQLError";
+
+/**
+ * Produces a GraphQLError representing a syntax error, containing useful
+ * descriptive information about the syntax error's position in the source.
+ */
+export function syntaxError(source: Source, position: number, description: string): GraphQLError;
diff --git a/node_modules/@types/graphql/execution/execute.d.ts b/node_modules/@types/graphql/execution/execute.d.ts
new file mode 100644
index 0000000..0427a25
--- /dev/null
+++ b/node_modules/@types/graphql/execution/execute.d.ts
@@ -0,0 +1,185 @@
+import Maybe from "../tsutils/Maybe";
+import { GraphQLError, locatedError } from "../error";
+import { GraphQLSchema } from "../type/schema";
+import {
+ GraphQLField,
+ GraphQLFieldResolver,
+ ResponsePath,
+ GraphQLObjectType,
+ GraphQLResolveInfo,
+} from "../type/definition";
+import {
+ DirectiveNode,
+ DocumentNode,
+ OperationDefinitionNode,
+ SelectionSetNode,
+ FieldNode,
+ InlineFragmentNode,
+ FragmentDefinitionNode,
+} from "../language/ast";
+import { MaybePromise } from "../jsutils/MaybePromise";
+
+/**
+ * Data that must be available at all points during query execution.
+ *
+ * Namely, schema of the type system that is currently executing,
+ * and the fragments defined in the query document
+ */
+export interface ExecutionContext {
+ schema: GraphQLSchema;
+ fragments: { [key: string]: FragmentDefinitionNode };
+ rootValue: any;
+ contextValue: any;
+ operation: OperationDefinitionNode;
+ variableValues: { [key: string]: any };
+ fieldResolver: GraphQLFieldResolver;
+ errors: GraphQLError[];
+}
+
+export interface ExecutionResultDataDefault {
+ [key: string]: any
+}
+
+/**
+ * The result of GraphQL execution.
+ *
+ * - `errors` is included when any errors occurred as a non-empty array.
+ * - `data` is the result of a successful execution of the query.
+ */
+export interface ExecutionResult {
+ errors?: ReadonlyArray;
+ data?: TData;
+}
+
+export type ExecutionArgs = {
+ schema: GraphQLSchema;
+ document: DocumentNode;
+ rootValue?: any;
+ contextValue?: any;
+ variableValues?: Maybe<{ [key: string]: any }>;
+ operationName?: Maybe;
+ fieldResolver?: Maybe>;
+};
+
+/**
+ * Implements the "Evaluating requests" section of the GraphQL specification.
+ *
+ * Returns either a synchronous ExecutionResult (if all encountered resolvers
+ * are synchronous), or a Promise of an ExecutionResult that will eventually be
+ * resolved and never rejected.
+ *
+ * If the arguments to this function do not result in a legal execution context,
+ * a GraphQLError will be thrown immediately explaining the invalid input.
+ *
+ * Accepts either an object with named arguments, or individual arguments.
+ */
+export function execute(args: ExecutionArgs): MaybePromise>;
+export function execute(
+ schema: GraphQLSchema,
+ document: DocumentNode,
+ rootValue?: any,
+ contextValue?: any,
+ variableValues?: Maybe<{ [key: string]: any }>,
+ operationName?: Maybe,
+ fieldResolver?: Maybe>
+): MaybePromise>;
+
+/**
+ * Given a ResponsePath (found in the `path` entry in the information provided
+ * as the last argument to a field resolver), return an Array of the path keys.
+ */
+export function responsePathAsArray(path: ResponsePath): ReadonlyArray;
+
+/**
+ * Given a ResponsePath and a key, return a new ResponsePath containing the
+ * new key.
+
+ */
+export function addPath(
+ prev: ResponsePath | undefined,
+ key: string | number
+): { prev: ResponsePath | undefined; key: string | number };
+
+/**
+ * Essential assertions before executing to provide developer feedback for
+ * improper use of the GraphQL library.
+ */
+export function assertValidExecutionArguments(
+ schema: GraphQLSchema,
+ document: DocumentNode,
+ rawVariableValues: Maybe<{ [key: string]: any }>
+): void;
+
+/**
+ * Constructs a ExecutionContext object from the arguments passed to
+ * execute, which we will pass throughout the other execution methods.
+ *
+ * Throws a GraphQLError if a valid execution context cannot be created.
+ */
+export function buildExecutionContext(
+ schema: GraphQLSchema,
+ document: DocumentNode,
+ rootValue: any,
+ contextValue: any,
+ rawVariableValues: Maybe<{ [key: string]: any }>,
+ operationName: Maybe,
+ fieldResolver: Maybe>
+): ReadonlyArray | ExecutionContext;
+
+/**
+ * Given a selectionSet, adds all of the fields in that selection to
+ * the passed in map of fields, and returns it at the end.
+ *
+ * CollectFields requires the "runtime type" of an object. For a field which
+ * returns an Interface or Union type, the "runtime type" will be the actual
+ * Object type returned by that field.
+ */
+export function collectFields(
+ exeContext: ExecutionContext,
+ runtimeType: GraphQLObjectType,
+ selectionSet: SelectionSetNode,
+ fields: { [key: string]: Array },
+ visitedFragmentNames: { [key: string]: boolean }
+): { [key: string]: Array };
+
+export function buildResolveInfo(
+ exeContext: ExecutionContext,
+ fieldDef: GraphQLField,
+ fieldNodes: ReadonlyArray,
+ parentType: GraphQLObjectType,
+ path: ResponsePath
+): GraphQLResolveInfo;
+
+// Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
+// function. Returns the result of resolveFn or the abrupt-return Error object.
+export function resolveFieldValueOrError(
+ exeContext: ExecutionContext,
+ fieldDef: GraphQLField,
+ fieldNodes: ReadonlyArray,
+ resolveFn: GraphQLFieldResolver,
+ source: TSource,
+ info: GraphQLResolveInfo
+): Error | any;
+
+/**
+ * If a resolve function is not given, then a default resolve behavior is used
+ * which takes the property of the source object of the same name as the field
+ * and returns it as the result, or if it's a function, returns the result
+ * of calling that function while passing along args and context.
+ */
+export const defaultFieldResolver: GraphQLFieldResolver;
+
+/**
+ * This method looks up the field on the given type defintion.
+ * It has special casing for the two introspection fields, __schema
+ * and __typename. __typename is special because it can always be
+ * queried as a field, even in situations where no other fields
+ * are allowed, like on a Union. __schema could get automatically
+ * added to the query type, but that would require mutating type
+ * definitions, which would cause issues.
+ */
+export function getFieldDef(
+ schema: GraphQLSchema,
+ parentType: GraphQLObjectType,
+ fieldName: string
+): Maybe>;
diff --git a/node_modules/@types/graphql/execution/index.d.ts b/node_modules/@types/graphql/execution/index.d.ts
new file mode 100644
index 0000000..333c271
--- /dev/null
+++ b/node_modules/@types/graphql/execution/index.d.ts
@@ -0,0 +1,3 @@
+export { execute, defaultFieldResolver, responsePathAsArray, ExecutionArgs, ExecutionResult } from "./execute";
+
+export { getDirectiveValues } from "./values";
diff --git a/node_modules/@types/graphql/execution/values.d.ts b/node_modules/@types/graphql/execution/values.d.ts
new file mode 100644
index 0000000..61e0408
--- /dev/null
+++ b/node_modules/@types/graphql/execution/values.d.ts
@@ -0,0 +1,59 @@
+import Maybe from "../tsutils/Maybe";
+import { GraphQLError } from "../error/GraphQLError";
+import { GraphQLInputType, GraphQLField, GraphQLArgument } from "../type/definition";
+import { GraphQLDirective } from "../type/directives";
+import { GraphQLSchema } from "../type/schema";
+import { FieldNode, DirectiveNode, VariableDefinitionNode } from "../language/ast";
+
+interface CoercedVariableValues {
+ errors: ReadonlyArray | undefined;
+ coerced: { [key: string]: any } | undefined;
+}
+
+/**
+ * Prepares an object map of variableValues of the correct type based on the
+ * provided variable definitions and arbitrary input. If the input cannot be
+ * parsed to match the variable definitions, a GraphQLError will be thrown.
+ *
+ * Note: The returned value is a plain Object with a prototype, since it is
+ * exposed to user code. Care should be taken to not pull values from the
+ * Object prototype.
+ */
+export function getVariableValues(
+ schema: GraphQLSchema,
+ varDefNodes: VariableDefinitionNode[],
+ inputs: { [key: string]: any }
+): CoercedVariableValues;
+
+/**
+ * Prepares an object map of argument values given a list of argument
+ * definitions and list of argument AST nodes.
+ *
+ * Note: The returned value is a plain Object with a prototype, since it is
+ * exposed to user code. Care should be taken to not pull values from the
+ * Object prototype.
+ */
+export function getArgumentValues(
+ def: GraphQLField | GraphQLDirective,
+ node: FieldNode | DirectiveNode,
+ variableValues?: Maybe<{ [key: string]: any }>
+): { [key: string]: any };
+
+/**
+ * Prepares an object map of argument values given a directive definition
+ * and a AST node which may contain directives. Optionally also accepts a map
+ * of variable values.
+ *
+ * If the directive does not exist on the node, returns undefined.
+ *
+ * Note: The returned value is a plain Object with a prototype, since it is
+ * exposed to user code. Care should be taken to not pull values from the
+ * Object prototype.
+ */
+export function getDirectiveValues(
+ directiveDef: GraphQLDirective,
+ node: {
+ readonly directives?: ReadonlyArray;
+ },
+ variableValues?: Maybe<{ [key: string]: any }>
+): undefined | { [key: string]: any };
diff --git a/node_modules/@types/graphql/graphql.d.ts b/node_modules/@types/graphql/graphql.d.ts
new file mode 100644
index 0000000..2556269
--- /dev/null
+++ b/node_modules/@types/graphql/graphql.d.ts
@@ -0,0 +1,78 @@
+import Maybe from "./tsutils/Maybe";
+import { Source } from "./language/source";
+import { GraphQLFieldResolver } from "./type/definition";
+import { GraphQLSchema } from "./type/schema";
+import { ExecutionResult, ExecutionResultDataDefault } from "./execution/execute";
+
+/**
+ * This is the primary entry point function for fulfilling GraphQL operations
+ * by parsing, validating, and executing a GraphQL document along side a
+ * GraphQL schema.
+ *
+ * More sophisticated GraphQL servers, such as those which persist queries,
+ * may wish to separate the validation and execution phases to a static time
+ * tooling step, and a server runtime step.
+ *
+ * Accepts either an object with named arguments, or individual arguments:
+ *
+ * schema:
+ * The GraphQL type system to use when validating and executing a query.
+ * source:
+ * A GraphQL language formatted string representing the requested operation.
+ * rootValue:
+ * The value provided as the first argument to resolver functions on the top
+ * level type (e.g. the query object type).
+ * contextValue:
+ * The context value is provided as an argument to resolver functions after
+ * field arguments. It is used to pass shared information useful at any point
+ * during executing this query, for example the currently logged in user and
+ * connections to databases or other services.
+ * variableValues:
+ * A mapping of variable name to runtime value to use for all variables
+ * defined in the requestString.
+ * operationName:
+ * The name of the operation to use if requestString contains multiple
+ * possible operations. Can be omitted if requestString contains only
+ * one operation.
+ * fieldResolver:
+ * A resolver function to use when one is not provided by the schema.
+ * If not provided, the default field resolver is used (which looks for a
+ * value or method on the source value with the field's name).
+ */
+export interface GraphQLArgs {
+ schema: GraphQLSchema;
+ source: Source | string;
+ rootValue?: any;
+ contextValue?: any;
+ variableValues?: Maybe<{ [key: string]: any }>;
+ operationName?: Maybe;
+ fieldResolver?: Maybe>;
+}
+
+export function graphql(args: GraphQLArgs): Promise>;
+export function graphql(
+ schema: GraphQLSchema,
+ source: Source | string,
+ rootValue?: any,
+ contextValue?: any,
+ variableValues?: Maybe<{ [key: string]: any }>,
+ operationName?: Maybe,
+ fieldResolver?: Maybe>
+): Promise>;
+
+/**
+ * The graphqlSync function also fulfills GraphQL operations by parsing,
+ * validating, and executing a GraphQL document along side a GraphQL schema.
+ * However, it guarantees to complete synchronously (or throw an error) assuming
+ * that all field resolvers are also synchronous.
+ */
+export function graphqlSync(args: GraphQLArgs): ExecutionResult;
+export function graphqlSync(
+ schema: GraphQLSchema,
+ source: Source | string,
+ rootValue?: any,
+ contextValue?: any,
+ variableValues?: Maybe<{ [key: string]: any }>,
+ operationName?: Maybe,
+ fieldResolver?: Maybe>
+): ExecutionResult;
diff --git a/node_modules/@types/graphql/index.d.ts b/node_modules/@types/graphql/index.d.ts
new file mode 100644
index 0000000..97f2374
--- /dev/null
+++ b/node_modules/@types/graphql/index.d.ts
@@ -0,0 +1,406 @@
+// Type definitions for graphql 14.0
+// Project: https://www.npmjs.com/package/graphql
+// Definitions by: TonyYang
+// Caleb Meredith
+// Dominic Watson
+// Firede
+// Kepennar
+// Mikhail Novikov
+// Ivan Goncharov
+// Hagai Cohen
+// Ricardo Portugal
+// Tim Griesser
+// Dylan Stewart
+// Alessio Dionisi
+// Divyendu Singh
+// Brad Zacher
+// Curtis Layne
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+// TypeScript Version: 2.3
+
+// The primary entry point into fulfilling a GraphQL request.
+export { graphql, graphqlSync, GraphQLArgs } from "./graphql";
+
+// Create and operate on GraphQL type definitions and schema.
+export {
+ GraphQLSchema,
+ // Definitions
+ GraphQLScalarType,
+ GraphQLObjectType,
+ GraphQLInterfaceType,
+ GraphQLUnionType,
+ GraphQLEnumType,
+ GraphQLInputObjectType,
+ GraphQLList,
+ GraphQLNonNull,
+ GraphQLDirective,
+ // "Enum" of Type Kinds
+ TypeKind,
+ // Scalars
+ specifiedScalarTypes,
+ GraphQLInt,
+ GraphQLFloat,
+ GraphQLString,
+ GraphQLBoolean,
+ GraphQLID,
+ // Built-in Directives defined by the Spec
+ specifiedDirectives,
+ GraphQLIncludeDirective,
+ GraphQLSkipDirective,
+ GraphQLDeprecatedDirective,
+ // Constant Deprecation Reason
+ DEFAULT_DEPRECATION_REASON,
+ // Meta-field definitions.
+ SchemaMetaFieldDef,
+ TypeMetaFieldDef,
+ TypeNameMetaFieldDef,
+ // GraphQL Types for introspection.
+ introspectionTypes,
+ __Schema,
+ __Directive,
+ __DirectiveLocation,
+ __Type,
+ __Field,
+ __InputValue,
+ __EnumValue,
+ __TypeKind,
+ // Predicates
+ isSchema,
+ isDirective,
+ isType,
+ isScalarType,
+ isObjectType,
+ isInterfaceType,
+ isUnionType,
+ isEnumType,
+ isInputObjectType,
+ isListType,
+ isNonNullType,
+ isInputType,
+ isOutputType,
+ isLeafType,
+ isCompositeType,
+ isAbstractType,
+ isWrappingType,
+ isNullableType,
+ isNamedType,
+ isRequiredArgument,
+ isRequiredInputField,
+ isSpecifiedScalarType,
+ isIntrospectionType,
+ isSpecifiedDirective,
+ // Assertions
+ assertType,
+ assertScalarType,
+ assertObjectType,
+ assertInterfaceType,
+ assertUnionType,
+ assertEnumType,
+ assertInputObjectType,
+ assertListType,
+ assertNonNullType,
+ assertInputType,
+ assertOutputType,
+ assertLeafType,
+ assertCompositeType,
+ assertAbstractType,
+ assertWrappingType,
+ assertNullableType,
+ assertNamedType,
+ // Un-modifiers
+ getNullableType,
+ getNamedType,
+ // Validate GraphQL schema.
+ validateSchema,
+ assertValidSchema,
+ // type
+ GraphQLType,
+ GraphQLInputType,
+ GraphQLOutputType,
+ GraphQLLeafType,
+ GraphQLCompositeType,
+ GraphQLAbstractType,
+ GraphQLWrappingType,
+ GraphQLNullableType,
+ GraphQLNamedType,
+ Thunk,
+ GraphQLSchemaConfig,
+ GraphQLArgument,
+ GraphQLArgumentConfig,
+ GraphQLEnumTypeConfig,
+ GraphQLEnumValue,
+ GraphQLEnumValueConfig,
+ GraphQLEnumValueConfigMap,
+ GraphQLField,
+ GraphQLFieldConfig,
+ GraphQLFieldConfigArgumentMap,
+ GraphQLFieldConfigMap,
+ GraphQLFieldMap,
+ GraphQLFieldResolver,
+ GraphQLInputField,
+ GraphQLInputFieldConfig,
+ GraphQLInputFieldConfigMap,
+ GraphQLInputFieldMap,
+ GraphQLInputObjectTypeConfig,
+ GraphQLInterfaceTypeConfig,
+ GraphQLIsTypeOfFn,
+ GraphQLObjectTypeConfig,
+ GraphQLResolveInfo,
+ ResponsePath,
+ GraphQLScalarTypeConfig,
+ GraphQLTypeResolver,
+ GraphQLUnionTypeConfig,
+ GraphQLDirectiveConfig,
+ GraphQLScalarSerializer,
+ GraphQLScalarValueParser,
+ GraphQLScalarLiteralParser,
+} from "./type";
+
+// Parse and operate on GraphQL language source files.
+export {
+ Source,
+ getLocation,
+ // Parse
+ parse,
+ parseValue,
+ parseType,
+ // Print
+ print,
+ // Visit
+ visit,
+ visitInParallel,
+ visitWithTypeInfo,
+ getVisitFn,
+ Kind,
+ TokenKind,
+ DirectiveLocation,
+ BREAK,
+ // Predicates
+ isDefinitionNode,
+ isExecutableDefinitionNode,
+ isSelectionNode,
+ isValueNode,
+ isTypeNode,
+ isTypeSystemDefinitionNode,
+ isTypeDefinitionNode,
+ isTypeSystemExtensionNode,
+ isTypeExtensionNode,
+ // type
+ Lexer,
+ ParseOptions,
+ SourceLocation,
+ // Visitor utilities
+ ASTVisitor,
+ Visitor,
+ VisitFn,
+ VisitorKeyMap,
+ // AST nodes
+ Location,
+ Token,
+ ASTNode,
+ ASTKindToNode,
+ NameNode,
+ DocumentNode,
+ DefinitionNode,
+ ExecutableDefinitionNode,
+ OperationDefinitionNode,
+ OperationTypeNode,
+ VariableDefinitionNode,
+ VariableNode,
+ SelectionSetNode,
+ SelectionNode,
+ FieldNode,
+ ArgumentNode,
+ FragmentSpreadNode,
+ InlineFragmentNode,
+ FragmentDefinitionNode,
+ ValueNode,
+ IntValueNode,
+ FloatValueNode,
+ StringValueNode,
+ BooleanValueNode,
+ NullValueNode,
+ EnumValueNode,
+ ListValueNode,
+ ObjectValueNode,
+ ObjectFieldNode,
+ DirectiveNode,
+ TypeNode,
+ NamedTypeNode,
+ ListTypeNode,
+ NonNullTypeNode,
+ TypeSystemDefinitionNode,
+ SchemaDefinitionNode,
+ OperationTypeDefinitionNode,
+ TypeDefinitionNode,
+ ScalarTypeDefinitionNode,
+ ObjectTypeDefinitionNode,
+ FieldDefinitionNode,
+ InputValueDefinitionNode,
+ InterfaceTypeDefinitionNode,
+ UnionTypeDefinitionNode,
+ EnumTypeDefinitionNode,
+ EnumValueDefinitionNode,
+ InputObjectTypeDefinitionNode,
+ DirectiveDefinitionNode,
+ TypeSystemExtensionNode,
+ SchemaExtensionNode,
+ TypeExtensionNode,
+ ScalarTypeExtensionNode,
+ ObjectTypeExtensionNode,
+ InterfaceTypeExtensionNode,
+ UnionTypeExtensionNode,
+ EnumTypeExtensionNode,
+ InputObjectTypeExtensionNode,
+ KindEnum,
+ TokenKindEnum,
+ DirectiveLocationEnum,
+} from "./language";
+
+// Execute GraphQL queries.
+export {
+ execute,
+ defaultFieldResolver,
+ responsePathAsArray,
+ getDirectiveValues,
+ // type
+ ExecutionArgs,
+ ExecutionResult,
+} from "./execution";
+
+export { subscribe, createSourceEventStream } from "./subscription";
+
+// Validate GraphQL queries.
+export {
+ validate,
+ ValidationContext,
+ // All validation rules in the GraphQL Specification.
+ specifiedRules,
+ // Individual validation rules.
+ FieldsOnCorrectTypeRule,
+ FragmentsOnCompositeTypesRule,
+ KnownArgumentNamesRule,
+ KnownDirectivesRule,
+ KnownFragmentNamesRule,
+ KnownTypeNamesRule,
+ LoneAnonymousOperationRule,
+ NoFragmentCyclesRule,
+ NoUndefinedVariablesRule,
+ NoUnusedFragmentsRule,
+ NoUnusedVariablesRule,
+ OverlappingFieldsCanBeMergedRule,
+ PossibleFragmentSpreadsRule,
+ ProvidedRequiredArgumentsRule,
+ ScalarLeafsRule,
+ SingleFieldSubscriptionsRule,
+ UniqueArgumentNamesRule,
+ UniqueDirectivesPerLocationRule,
+ UniqueFragmentNamesRule,
+ UniqueInputFieldNamesRule,
+ UniqueOperationNamesRule,
+ UniqueVariableNamesRule,
+ ValuesOfCorrectTypeRule,
+ VariablesAreInputTypesRule,
+ VariablesInAllowedPositionRule,
+} from "./validation";
+
+// Create and format GraphQL errors.
+export { GraphQLError, formatError, printError, GraphQLFormattedError } from "./error";
+
+// Utilities for operating on GraphQL type schema and parsed sources.
+export {
+ // Produce the GraphQL query recommended for a full schema introspection.
+ // Accepts optional IntrospectionOptions.
+ getIntrospectionQuery,
+ // @deprecated: use getIntrospectionQuery - will be removed in v15
+ introspectionQuery,
+ // Gets the target Operation from a Document
+ getOperationAST,
+ // Gets the Type for the target Operation AST.
+ getOperationRootType,
+ // Convert a GraphQLSchema to an IntrospectionQuery
+ introspectionFromSchema,
+ // Build a GraphQLSchema from an introspection result.
+ buildClientSchema,
+ // Build a GraphQLSchema from a parsed GraphQL Schema language AST.
+ buildASTSchema,
+ // Build a GraphQLSchema from a GraphQL schema language document.
+ buildSchema,
+ // @deprecated: Get the description from a schema AST node and supports legacy
+ // syntax for specifying descriptions - will be removed in v16
+ getDescription,
+ // Extends an existing GraphQLSchema from a parsed GraphQL Schema
+ // language AST.
+ extendSchema,
+ // Sort a GraphQLSchema.
+ lexicographicSortSchema,
+ // Print a GraphQLSchema to GraphQL Schema language.
+ printSchema,
+ // Prints the built-in introspection schema in the Schema Language
+ // format.
+ printIntrospectionSchema,
+ // Print a GraphQLType to GraphQL Schema language.
+ printType,
+ // Create a GraphQLType from a GraphQL language AST.
+ typeFromAST,
+ // Create a JavaScript value from a GraphQL language AST with a Type.
+ valueFromAST,
+ // Create a JavaScript value from a GraphQL language AST without a Type.
+ valueFromASTUntyped,
+ // Create a GraphQL language AST from a JavaScript value.
+ astFromValue,
+ // A helper to use within recursive-descent visitors which need to be aware of
+ // the GraphQL type system.
+ TypeInfo,
+ // Coerces a JavaScript value to a GraphQL type, or produces errors.
+ coerceValue,
+ // @deprecated use coerceValue - will be removed in v15
+ isValidJSValue,
+ // @deprecated use validation - will be removed in v15
+ isValidLiteralValue,
+ // Concatenates multiple AST together.
+ concatAST,
+ // Separates an AST into an AST per Operation.
+ separateOperations,
+ // Comparators for types
+ isEqualType,
+ isTypeSubTypeOf,
+ doTypesOverlap,
+ // Asserts a string is a valid GraphQL name.
+ assertValidName,
+ // Determine if a string is a valid GraphQL name.
+ isValidNameError,
+ // Compares two GraphQLSchemas and detects breaking changes.
+ findBreakingChanges,
+ findDangerousChanges,
+ BreakingChangeType,
+ DangerousChangeType,
+ // Report all deprecated usage within a GraphQL document.
+ findDeprecatedUsages,
+ // type
+ BuildSchemaOptions,
+ BreakingChange,
+ DangerousChange,
+ IntrospectionOptions,
+ IntrospectionDirective,
+ IntrospectionEnumType,
+ IntrospectionEnumValue,
+ IntrospectionField,
+ IntrospectionInputObjectType,
+ IntrospectionInputType,
+ IntrospectionInputTypeRef,
+ IntrospectionInputValue,
+ IntrospectionInterfaceType,
+ IntrospectionListTypeRef,
+ IntrospectionNamedTypeRef,
+ IntrospectionNonNullTypeRef,
+ IntrospectionObjectType,
+ IntrospectionOutputType,
+ IntrospectionOutputTypeRef,
+ IntrospectionQuery,
+ IntrospectionScalarType,
+ IntrospectionSchema,
+ IntrospectionType,
+ IntrospectionTypeRef,
+ IntrospectionUnionType,
+} from "./utilities";
diff --git a/node_modules/@types/graphql/jsutils/MaybePromise.d.ts b/node_modules/@types/graphql/jsutils/MaybePromise.d.ts
new file mode 100644
index 0000000..78e029c
--- /dev/null
+++ b/node_modules/@types/graphql/jsutils/MaybePromise.d.ts
@@ -0,0 +1 @@
+export type MaybePromise = Promise | T;
diff --git a/node_modules/@types/graphql/language/ast.d.ts b/node_modules/@types/graphql/language/ast.d.ts
new file mode 100644
index 0000000..42a98ef
--- /dev/null
+++ b/node_modules/@types/graphql/language/ast.d.ts
@@ -0,0 +1,564 @@
+import { Source } from "./source";
+import { TokenKindEnum } from "./lexer";
+
+/**
+ * Contains a range of UTF-8 character offsets and token references that
+ * identify the region of the source from which the AST derived.
+ */
+export interface Location {
+ /**
+ * The character offset at which this Node begins.
+ */
+ readonly start: number;
+
+ /**
+ * The character offset at which this Node ends.
+ */
+ readonly end: number;
+
+ /**
+ * The Token at which this Node begins.
+ */
+ readonly startToken: Token;
+
+ /**
+ * The Token at which this Node ends.
+ */
+ readonly endToken: Token;
+
+ /**
+ * The Source document the AST represents.
+ */
+ readonly source: Source;
+}
+
+/**
+ * Represents a range of characters represented by a lexical token
+ * within a Source.
+ */
+export interface Token {
+ /**
+ * The kind of Token.
+ */
+ readonly kind: TokenKindEnum;
+
+ /**
+ * The character offset at which this Node begins.
+ */
+ readonly start: number;
+
+ /**
+ * The character offset at which this Node ends.
+ */
+ readonly end: number;
+
+ /**
+ * The 1-indexed line number on which this Token appears.
+ */
+ readonly line: number;
+
+ /**
+ * The 1-indexed column number at which this Token begins.
+ */
+ readonly column: number;
+
+ /**
+ * For non-punctuation tokens, represents the interpreted value of the token.
+ */
+ readonly value: string | undefined;
+
+ /**
+ * Tokens exist as nodes in a double-linked-list amongst all tokens
+ * including ignored tokens. is always the first node and
+ * the last.
+ */
+ readonly prev: Token | null;
+ readonly next: Token | null;
+}
+
+/**
+ * The list of all possible AST node types.
+ */
+export type ASTNode =
+ | NameNode
+ | DocumentNode
+ | OperationDefinitionNode
+ | VariableDefinitionNode
+ | VariableNode
+ | SelectionSetNode
+ | FieldNode
+ | ArgumentNode
+ | FragmentSpreadNode
+ | InlineFragmentNode
+ | FragmentDefinitionNode
+ | IntValueNode
+ | FloatValueNode
+ | StringValueNode
+ | BooleanValueNode
+ | NullValueNode
+ | EnumValueNode
+ | ListValueNode
+ | ObjectValueNode
+ | ObjectFieldNode
+ | DirectiveNode
+ | NamedTypeNode
+ | ListTypeNode
+ | NonNullTypeNode
+ | SchemaDefinitionNode
+ | OperationTypeDefinitionNode
+ | ScalarTypeDefinitionNode
+ | ObjectTypeDefinitionNode
+ | FieldDefinitionNode
+ | InputValueDefinitionNode
+ | InterfaceTypeDefinitionNode
+ | UnionTypeDefinitionNode
+ | EnumTypeDefinitionNode
+ | EnumValueDefinitionNode
+ | InputObjectTypeDefinitionNode
+ | DirectiveDefinitionNode
+ | SchemaExtensionNode
+ | ScalarTypeExtensionNode
+ | ObjectTypeExtensionNode
+ | InterfaceTypeExtensionNode
+ | UnionTypeExtensionNode
+ | EnumTypeExtensionNode
+ | InputObjectTypeExtensionNode;
+
+/**
+ * Utility type listing all nodes indexed by their kind.
+ */
+export interface ASTKindToNode {
+ Name: NameNode;
+ Document: DocumentNode;
+ OperationDefinition: OperationDefinitionNode;
+ VariableDefinition: VariableDefinitionNode;
+ Variable: VariableNode;
+ SelectionSet: SelectionSetNode;
+ Field: FieldNode;
+ Argument: ArgumentNode;
+ FragmentSpread: FragmentSpreadNode;
+ InlineFragment: InlineFragmentNode;
+ FragmentDefinition: FragmentDefinitionNode;
+ IntValue: IntValueNode;
+ FloatValue: FloatValueNode;
+ StringValue: StringValueNode;
+ BooleanValue: BooleanValueNode;
+ NullValue: NullValueNode;
+ EnumValue: EnumValueNode;
+ ListValue: ListValueNode;
+ ObjectValue: ObjectValueNode;
+ ObjectField: ObjectFieldNode;
+ Directive: DirectiveNode;
+ NamedType: NamedTypeNode;
+ ListType: ListTypeNode;
+ NonNullType: NonNullTypeNode;
+ SchemaDefinition: SchemaDefinitionNode;
+ OperationTypeDefinition: OperationTypeDefinitionNode;
+ ScalarTypeDefinition: ScalarTypeDefinitionNode;
+ ObjectTypeDefinition: ObjectTypeDefinitionNode;
+ FieldDefinition: FieldDefinitionNode;
+ InputValueDefinition: InputValueDefinitionNode;
+ InterfaceTypeDefinition: InterfaceTypeDefinitionNode;
+ UnionTypeDefinition: UnionTypeDefinitionNode;
+ EnumTypeDefinition: EnumTypeDefinitionNode;
+ EnumValueDefinition: EnumValueDefinitionNode;
+ InputObjectTypeDefinition: InputObjectTypeDefinitionNode;
+ DirectiveDefinition: DirectiveDefinitionNode;
+ SchemaExtension: SchemaExtensionNode;
+ ScalarTypeExtension: ScalarTypeExtensionNode;
+ ObjectTypeExtension: ObjectTypeExtensionNode;
+ InterfaceTypeExtension: InterfaceTypeExtensionNode;
+ UnionTypeExtension: UnionTypeExtensionNode;
+ EnumTypeExtension: EnumTypeExtensionNode;
+ InputObjectTypeExtension: InputObjectTypeExtensionNode;
+}
+
+// Name
+
+export interface NameNode {
+ readonly kind: "Name";
+ readonly loc?: Location;
+ readonly value: string;
+}
+
+// Document
+
+export interface DocumentNode {
+ readonly kind: "Document";
+ readonly loc?: Location;
+ readonly definitions: ReadonlyArray;
+}
+
+export type DefinitionNode = ExecutableDefinitionNode | TypeSystemDefinitionNode | TypeSystemExtensionNode;
+
+export type ExecutableDefinitionNode = OperationDefinitionNode | FragmentDefinitionNode;
+
+export interface OperationDefinitionNode {
+ readonly kind: "OperationDefinition";
+ readonly loc?: Location;
+ readonly operation: OperationTypeNode;
+ readonly name?: NameNode;
+ readonly variableDefinitions?: ReadonlyArray;
+ readonly directives?: ReadonlyArray;
+ readonly selectionSet: SelectionSetNode;
+}
+
+export type OperationTypeNode = "query" | "mutation" | "subscription";
+
+export interface VariableDefinitionNode {
+ readonly kind: "VariableDefinition";
+ readonly loc?: Location;
+ readonly variable: VariableNode;
+ readonly type: TypeNode;
+ readonly defaultValue?: ValueNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface VariableNode {
+ readonly kind: "Variable";
+ readonly loc?: Location;
+ readonly name: NameNode;
+}
+
+export interface SelectionSetNode {
+ kind: "SelectionSet";
+ loc?: Location;
+ selections: ReadonlyArray;
+}
+
+export type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;
+
+export interface FieldNode {
+ readonly kind: "Field";
+ readonly loc?: Location;
+ readonly alias?: NameNode;
+ readonly name: NameNode;
+ readonly arguments?: ReadonlyArray;
+ readonly directives?: ReadonlyArray;
+ readonly selectionSet?: SelectionSetNode;
+}
+
+export interface ArgumentNode {
+ readonly kind: "Argument";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly value: ValueNode;
+}
+
+// Fragments
+
+export interface FragmentSpreadNode {
+ readonly kind: "FragmentSpread";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface InlineFragmentNode {
+ readonly kind: "InlineFragment";
+ readonly loc?: Location;
+ readonly typeCondition?: NamedTypeNode;
+ readonly directives?: ReadonlyArray;
+ readonly selectionSet: SelectionSetNode;
+}
+
+export interface FragmentDefinitionNode {
+ readonly kind: "FragmentDefinition";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ // Note: fragment variable definitions are experimental and may be changed
+ // or removed in the future.
+ readonly variableDefinitions?: ReadonlyArray;
+ readonly typeCondition: NamedTypeNode;
+ readonly directives?: ReadonlyArray;
+ readonly selectionSet: SelectionSetNode;
+}
+
+// Values
+
+export type ValueNode =
+ | VariableNode
+ | IntValueNode
+ | FloatValueNode
+ | StringValueNode
+ | BooleanValueNode
+ | NullValueNode
+ | EnumValueNode
+ | ListValueNode
+ | ObjectValueNode;
+
+export interface IntValueNode {
+ readonly kind: "IntValue";
+ readonly loc?: Location;
+ readonly value: string;
+}
+
+export interface FloatValueNode {
+ readonly kind: "FloatValue";
+ readonly loc?: Location;
+ readonly value: string;
+}
+
+export interface StringValueNode {
+ readonly kind: "StringValue";
+ readonly loc?: Location;
+ readonly value: string;
+ readonly block?: boolean;
+}
+
+export interface BooleanValueNode {
+ readonly kind: "BooleanValue";
+ readonly loc?: Location;
+ readonly value: boolean;
+}
+
+export interface NullValueNode {
+ readonly kind: "NullValue";
+ readonly loc?: Location;
+}
+
+export interface EnumValueNode {
+ readonly kind: "EnumValue";
+ readonly loc?: Location;
+ readonly value: string;
+}
+
+export interface ListValueNode {
+ readonly kind: "ListValue";
+ readonly loc?: Location;
+ readonly values: ReadonlyArray;
+}
+
+export interface ObjectValueNode {
+ readonly kind: "ObjectValue";
+ readonly loc?: Location;
+ readonly fields: ReadonlyArray;
+}
+
+export interface ObjectFieldNode {
+ readonly kind: "ObjectField";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly value: ValueNode;
+}
+
+// Directives
+
+export interface DirectiveNode {
+ readonly kind: "Directive";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly arguments?: ReadonlyArray;
+}
+
+// Type Reference
+
+export type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;
+
+export interface NamedTypeNode {
+ readonly kind: "NamedType";
+ readonly loc?: Location;
+ readonly name: NameNode;
+}
+
+export interface ListTypeNode {
+ readonly kind: "ListType";
+ readonly loc?: Location;
+ readonly type: TypeNode;
+}
+
+export interface NonNullTypeNode {
+ readonly kind: "NonNullType";
+ readonly loc?: Location;
+ readonly type: NamedTypeNode | ListTypeNode;
+}
+
+// Type System Definition
+
+export type TypeSystemDefinitionNode = SchemaDefinitionNode | TypeDefinitionNode | DirectiveDefinitionNode;
+
+export interface SchemaDefinitionNode {
+ readonly kind: "SchemaDefinition";
+ readonly loc?: Location;
+ readonly directives?: ReadonlyArray;
+ readonly operationTypes: ReadonlyArray;
+}
+
+export interface OperationTypeDefinitionNode {
+ readonly kind: "OperationTypeDefinition";
+ readonly loc?: Location;
+ readonly operation: OperationTypeNode;
+ readonly type: NamedTypeNode;
+}
+
+// Type Definition
+
+export type TypeDefinitionNode =
+ | ScalarTypeDefinitionNode
+ | ObjectTypeDefinitionNode
+ | InterfaceTypeDefinitionNode
+ | UnionTypeDefinitionNode
+ | EnumTypeDefinitionNode
+ | InputObjectTypeDefinitionNode;
+
+export interface ScalarTypeDefinitionNode {
+ readonly kind: "ScalarTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface ObjectTypeDefinitionNode {
+ readonly kind: "ObjectTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly interfaces?: ReadonlyArray;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
+
+export interface FieldDefinitionNode {
+ readonly kind: "FieldDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly arguments?: ReadonlyArray;
+ readonly type: TypeNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface InputValueDefinitionNode {
+ readonly kind: "InputValueDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly type: TypeNode;
+ readonly defaultValue?: ValueNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface InterfaceTypeDefinitionNode {
+ readonly kind: "InterfaceTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
+
+export interface UnionTypeDefinitionNode {
+ readonly kind: "UnionTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly types?: ReadonlyArray;
+}
+
+export interface EnumTypeDefinitionNode {
+ readonly kind: "EnumTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly values?: ReadonlyArray;
+}
+
+export interface EnumValueDefinitionNode {
+ readonly kind: "EnumValueDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface InputObjectTypeDefinitionNode {
+ readonly kind: "InputObjectTypeDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
+
+// Directive Definitions
+
+export interface DirectiveDefinitionNode {
+ readonly kind: "DirectiveDefinition";
+ readonly loc?: Location;
+ readonly description?: StringValueNode;
+ readonly name: NameNode;
+ readonly arguments?: ReadonlyArray;
+ readonly locations: ReadonlyArray;
+}
+
+// Type System Extensions
+
+export type TypeSystemExtensionNode = SchemaExtensionNode | TypeExtensionNode;
+
+export type SchemaExtensionNode = {
+ readonly kind: "SchemaExtension";
+ readonly loc?: Location;
+ readonly directives?: ReadonlyArray;
+ readonly operationTypes?: ReadonlyArray;
+};
+
+// Type Extensions
+
+export type TypeExtensionNode =
+ | ScalarTypeExtensionNode
+ | ObjectTypeExtensionNode
+ | InterfaceTypeExtensionNode
+ | UnionTypeExtensionNode
+ | EnumTypeExtensionNode
+ | InputObjectTypeExtensionNode;
+
+export interface ScalarTypeExtensionNode {
+ readonly kind: "ScalarTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+}
+
+export interface ObjectTypeExtensionNode {
+ readonly kind: "ObjectTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly interfaces?: ReadonlyArray;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
+
+export interface InterfaceTypeExtensionNode {
+ readonly kind: "InterfaceTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
+
+export interface UnionTypeExtensionNode {
+ readonly kind: "UnionTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly types?: ReadonlyArray;
+}
+
+export interface EnumTypeExtensionNode {
+ readonly kind: "EnumTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly values?: ReadonlyArray;
+}
+
+export interface InputObjectTypeExtensionNode {
+ readonly kind: "InputObjectTypeExtension";
+ readonly loc?: Location;
+ readonly name: NameNode;
+ readonly directives?: ReadonlyArray;
+ readonly fields?: ReadonlyArray;
+}
diff --git a/node_modules/@types/graphql/language/blockStringValue.d.ts b/node_modules/@types/graphql/language/blockStringValue.d.ts
new file mode 100644
index 0000000..61962c7
--- /dev/null
+++ b/node_modules/@types/graphql/language/blockStringValue.d.ts
@@ -0,0 +1,7 @@
+/**
+ * Produces the value of a block string from its parsed raw value, similar to
+ * Coffeescript's block string, Python's docstring trim or Ruby's strip_heredoc.
+ *
+ * This implements the GraphQL spec's BlockStringValue() static algorithm.
+ */
+export default function blockStringValue(rawString: string): string;
diff --git a/node_modules/@types/graphql/language/directiveLocation.d.ts b/node_modules/@types/graphql/language/directiveLocation.d.ts
new file mode 100644
index 0000000..51c7623
--- /dev/null
+++ b/node_modules/@types/graphql/language/directiveLocation.d.ts
@@ -0,0 +1,35 @@
+/**
+ * The set of allowed directive location values.
+ */
+export const DirectiveLocation: _DirectiveLocation;
+
+// @internal
+type _DirectiveLocation = {
+ // Request Definitions
+ QUERY: "QUERY";
+ MUTATION: "MUTATION";
+ SUBSCRIPTION: "SUBSCRIPTION";
+ FIELD: "FIELD";
+ FRAGMENT_DEFINITION: "FRAGMENT_DEFINITION";
+ FRAGMENT_SPREAD: "FRAGMENT_SPREAD";
+ INLINE_FRAGMENT: "INLINE_FRAGMENT";
+ VARIABLE_DEFINITION: "VARIABLE_DEFINITION";
+
+ // Type System Definitions
+ SCHEMA: "SCHEMA";
+ SCALAR: "SCALAR";
+ OBJECT: "OBJECT";
+ FIELD_DEFINITION: "FIELD_DEFINITION";
+ ARGUMENT_DEFINITION: "ARGUMENT_DEFINITION";
+ INTERFACE: "INTERFACE";
+ UNION: "UNION";
+ ENUM: "ENUM";
+ ENUM_VALUE: "ENUM_VALUE";
+ INPUT_OBJECT: "INPUT_OBJECT";
+ INPUT_FIELD_DEFINITION: "INPUT_FIELD_DEFINITION";
+};
+
+/**
+ * The enum type representing the directive location values.
+ */
+export type DirectiveLocationEnum = _DirectiveLocation[keyof _DirectiveLocation];
diff --git a/node_modules/@types/graphql/language/index.d.ts b/node_modules/@types/graphql/language/index.d.ts
new file mode 100644
index 0000000..11ef4a6
--- /dev/null
+++ b/node_modules/@types/graphql/language/index.d.ts
@@ -0,0 +1,93 @@
+export { getLocation, SourceLocation } from "./location";
+export { Kind, KindEnum } from "./kinds";
+export { createLexer, TokenKind, Lexer, TokenKindEnum } from "./lexer";
+export { parse, parseValue, parseType, ParseOptions } from "./parser";
+export { print } from "./printer";
+export { Source } from "./source";
+export {
+ visit,
+ visitInParallel,
+ visitWithTypeInfo,
+ getVisitFn,
+ BREAK,
+ // type
+ ASTVisitor,
+ Visitor,
+ VisitFn,
+ VisitorKeyMap,
+} from "./visitor";
+
+export {
+ Location,
+ Token,
+ ASTNode,
+ ASTKindToNode,
+ // Each kind of AST node
+ NameNode,
+ DocumentNode,
+ DefinitionNode,
+ ExecutableDefinitionNode,
+ OperationDefinitionNode,
+ OperationTypeNode,
+ VariableDefinitionNode,
+ VariableNode,
+ SelectionSetNode,
+ SelectionNode,
+ FieldNode,
+ ArgumentNode,
+ FragmentSpreadNode,
+ InlineFragmentNode,
+ FragmentDefinitionNode,
+ ValueNode,
+ IntValueNode,
+ FloatValueNode,
+ StringValueNode,
+ BooleanValueNode,
+ NullValueNode,
+ EnumValueNode,
+ ListValueNode,
+ ObjectValueNode,
+ ObjectFieldNode,
+ DirectiveNode,
+ TypeNode,
+ NamedTypeNode,
+ ListTypeNode,
+ NonNullTypeNode,
+ TypeSystemDefinitionNode,
+ SchemaDefinitionNode,
+ OperationTypeDefinitionNode,
+ TypeDefinitionNode,
+ ScalarTypeDefinitionNode,
+ ObjectTypeDefinitionNode,
+ FieldDefinitionNode,
+ InputValueDefinitionNode,
+ InterfaceTypeDefinitionNode,
+ UnionTypeDefinitionNode,
+ EnumTypeDefinitionNode,
+ EnumValueDefinitionNode,
+ InputObjectTypeDefinitionNode,
+ DirectiveDefinitionNode,
+ TypeSystemExtensionNode,
+ SchemaExtensionNode,
+ TypeExtensionNode,
+ ScalarTypeExtensionNode,
+ ObjectTypeExtensionNode,
+ InterfaceTypeExtensionNode,
+ UnionTypeExtensionNode,
+ EnumTypeExtensionNode,
+ InputObjectTypeExtensionNode,
+} from "./ast";
+
+export {
+ isDefinitionNode,
+ isExecutableDefinitionNode,
+ isSelectionNode,
+ isValueNode,
+ isTypeNode,
+ isTypeSystemDefinitionNode,
+ isTypeDefinitionNode,
+ isTypeSystemExtensionNode,
+ isTypeExtensionNode,
+} from "./predicates";
+
+export { DirectiveLocation, DirectiveLocationEnum } from "./directiveLocation";
diff --git a/node_modules/@types/graphql/language/kinds.d.ts b/node_modules/@types/graphql/language/kinds.d.ts
new file mode 100644
index 0000000..6b32e8e
--- /dev/null
+++ b/node_modules/@types/graphql/language/kinds.d.ts
@@ -0,0 +1,77 @@
+/**
+ * The set of allowed kind values for AST nodes.
+ */
+export const Kind: _Kind;
+
+// @internal
+type _Kind = {
+ // Name
+ NAME: "Name";
+
+ // Document
+ DOCUMENT: "Document";
+ OPERATION_DEFINITION: "OperationDefinition";
+ VARIABLE_DEFINITION: "VariableDefinition";
+ SELECTION_SET: "SelectionSet";
+ FIELD: "Field";
+ ARGUMENT: "Argument";
+
+ // Fragments
+ FRAGMENT_SPREAD: "FragmentSpread";
+ INLINE_FRAGMENT: "InlineFragment";
+ FRAGMENT_DEFINITION: "FragmentDefinition";
+
+ // Values
+ VARIABLE: "Variable";
+ INT: "IntValue";
+ FLOAT: "FloatValue";
+ STRING: "StringValue";
+ BOOLEAN: "BooleanValue";
+ NULL: "NullValue";
+ ENUM: "EnumValue";
+ LIST: "ListValue";
+ OBJECT: "ObjectValue";
+ OBJECT_FIELD: "ObjectField";
+
+ // Directives
+ DIRECTIVE: "Directive";
+
+ // Types
+ NAMED_TYPE: "NamedType";
+ LIST_TYPE: "ListType";
+ NON_NULL_TYPE: "NonNullType";
+
+ // Type System Definitions
+ SCHEMA_DEFINITION: "SchemaDefinition";
+ OPERATION_TYPE_DEFINITION: "OperationTypeDefinition";
+
+ // Type Definitions
+ SCALAR_TYPE_DEFINITION: "ScalarTypeDefinition";
+ OBJECT_TYPE_DEFINITION: "ObjectTypeDefinition";
+ FIELD_DEFINITION: "FieldDefinition";
+ INPUT_VALUE_DEFINITION: "InputValueDefinition";
+ INTERFACE_TYPE_DEFINITION: "InterfaceTypeDefinition";
+ UNION_TYPE_DEFINITION: "UnionTypeDefinition";
+ ENUM_TYPE_DEFINITION: "EnumTypeDefinition";
+ ENUM_VALUE_DEFINITION: "EnumValueDefinition";
+ INPUT_OBJECT_TYPE_DEFINITION: "InputObjectTypeDefinition";
+
+ // Directive Definitions
+ DIRECTIVE_DEFINITION: "DirectiveDefinition";
+
+ // Type System Extensions
+ SCHEMA_EXTENSION: "SchemaExtension";
+
+ // Type Extensions
+ SCALAR_TYPE_EXTENSION: "ScalarTypeExtension";
+ OBJECT_TYPE_EXTENSION: "ObjectTypeExtension";
+ INTERFACE_TYPE_EXTENSION: "InterfaceTypeExtension";
+ UNION_TYPE_EXTENSION: "UnionTypeExtension";
+ ENUM_TYPE_EXTENSION: "EnumTypeExtension";
+ INPUT_OBJECT_TYPE_EXTENSION: "InputObjectTypeExtension";
+};
+
+/**
+ * The enum type representing the possible kind values of AST nodes.
+ */
+export type KindEnum = _Kind[keyof _Kind];
diff --git a/node_modules/@types/graphql/language/lexer.d.ts b/node_modules/@types/graphql/language/lexer.d.ts
new file mode 100644
index 0000000..d0639b3
--- /dev/null
+++ b/node_modules/@types/graphql/language/lexer.d.ts
@@ -0,0 +1,94 @@
+import { Token } from "./ast";
+import { Source } from "./source";
+import { syntaxError } from "../error";
+
+/**
+ * Given a Source object, this returns a Lexer for that source.
+ * A Lexer is a stateful stream generator in that every time
+ * it is advanced, it returns the next token in the Source. Assuming the
+ * source lexes, the final Token emitted by the lexer will be of kind
+ * EOF, after which the lexer will repeatedly return the same EOF token
+ * whenever called.
+ */
+export function createLexer(source: Source, options: TOptions): Lexer;
+
+/**
+ * The return type of createLexer.
+ */
+export interface Lexer {
+ source: Source;
+ options: TOptions;
+
+ /**
+ * The previously focused non-ignored token.
+ */
+ lastToken: Token;
+
+ /**
+ * The currently focused non-ignored token.
+ */
+ token: Token;
+
+ /**
+ * The (1-indexed) line containing the current token.
+ */
+ line: number;
+
+ /**
+ * The character offset at which the current line begins.
+ */
+ lineStart: number;
+
+ /**
+ * Advances the token stream to the next non-ignored token.
+ */
+ advance(): Token;
+
+ /**
+ * Looks ahead and returns the next non-ignored token, but does not change
+ * the Lexer's state.
+ */
+ lookahead(): Token;
+}
+
+/**
+ * An exported enum describing the different kinds of tokens that the
+ * lexer emits.
+ */
+export const TokenKind: _TokenKind;
+
+// @internal
+type _TokenKind = {
+ SOF: "";
+ EOF: "";
+ BANG: "!";
+ DOLLAR: "$";
+ AMP: "&";
+ PAREN_L: "(";
+ PAREN_R: ")";
+ SPREAD: "...";
+ COLON: ":";
+ EQUALS: "=";
+ AT: "@";
+ BRACKET_L: "[";
+ BRACKET_R: "]";
+ BRACE_L: "{";
+ PIPE: "|";
+ BRACE_R: "}";
+ NAME: "Name";
+ INT: "Int";
+ FLOAT: "Float";
+ STRING: "String";
+ BLOCK_STRING: "BlockString";
+ COMMENT: "Comment";
+};
+
+/**
+ * The enum type representing the token kinds values.
+ */
+export type TokenKindEnum = _TokenKind[keyof _TokenKind];
+
+/**
+ * A helper function to describe a token as a string for debugging
+ */
+export function getTokenDesc(token: Token): string;
diff --git a/node_modules/@types/graphql/language/location.d.ts b/node_modules/@types/graphql/language/location.d.ts
new file mode 100644
index 0000000..281a542
--- /dev/null
+++ b/node_modules/@types/graphql/language/location.d.ts
@@ -0,0 +1,15 @@
+import { Source } from "./source";
+
+/**
+ * Represents a location in a Source.
+ */
+export interface SourceLocation {
+ readonly line: number;
+ readonly column: number;
+}
+
+/**
+ * Takes a Source and a UTF-8 character offset, and returns the corresponding
+ * line and column as a SourceLocation.
+ */
+export function getLocation(source: Source, position: number): SourceLocation;
diff --git a/node_modules/@types/graphql/language/parser.d.ts b/node_modules/@types/graphql/language/parser.d.ts
new file mode 100644
index 0000000..f89ec3e
--- /dev/null
+++ b/node_modules/@types/graphql/language/parser.d.ts
@@ -0,0 +1,106 @@
+import { NamedTypeNode, TypeNode, ValueNode, DocumentNode } from "./ast";
+import { Source } from "./source";
+import { Lexer } from "./lexer";
+
+/**
+ * Configuration options to control parser behavior
+ */
+export interface ParseOptions {
+ /**
+ * By default, the parser creates AST nodes that know the location
+ * in the source that they correspond to. This configuration flag
+ * disables that behavior for performance or testing.
+ */
+ noLocation?: boolean;
+
+ /**
+ * If enabled, the parser will parse empty fields sets in the Schema
+ * Definition Language. Otherwise, the parser will follow the current
+ * specification.
+ *
+ * This option is provided to ease adoption of the final SDL specification
+ * and will be removed in v16.
+ */
+ allowLegacySDLEmptyFields?: boolean;
+
+ /**
+ * If enabled, the parser will parse implemented interfaces with no `&`
+ * character between each interface. Otherwise, the parser will follow the
+ * current specification.
+ *
+ * This option is provided to ease adoption of the final SDL specification
+ * and will be removed in v16.
+ */
+ allowLegacySDLImplementsInterfaces?: boolean;
+
+ /**
+ * EXPERIMENTAL:
+ *
+ * If enabled, the parser will understand and parse variable definitions
+ * contained in a fragment definition. They'll be represented in the
+ * `variableDefinitions` field of the FragmentDefinitionNode.
+ *
+ * The syntax is identical to normal, query-defined variables. For example:
+ *
+ * fragment A($var: Boolean = false) on T {
+ * ...
+ * }
+ *
+ * Note: this feature is experimental and may change or be removed in the
+ * future.
+ */
+ experimentalFragmentVariables?: boolean;
+
+ /**
+ * EXPERIMENTAL:
+ *
+ * If enabled, the parser understands directives on variable definitions:
+ *
+ * query Foo($var: String = "abc" @variable_definition_directive) {
+ * ...
+ * }
+ */
+ experimentalVariableDefinitionDirectives?: boolean;
+}
+
+/**
+ * Given a GraphQL source, parses it into a Document.
+ * Throws GraphQLError if a syntax error is encountered.
+ */
+export function parse(source: string | Source, options?: ParseOptions): DocumentNode;
+
+/**
+ * Given a string containing a GraphQL value, parse the AST for that value.
+ * Throws GraphQLError if a syntax error is encountered.
+ *
+ * This is useful within tools that operate upon GraphQL Values directly and
+ * in isolation of complete GraphQL documents.
+ */
+export function parseValue(source: string | Source, options?: ParseOptions): ValueNode;
+
+/**
+ * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for
+ * that type.
+ * Throws GraphQLError if a syntax error is encountered.
+ *
+ * This is useful within tools that operate upon GraphQL Types directly and
+ * in isolation of complete GraphQL documents.
+ *
+ * Consider providing the results to the utility function: typeFromAST().
+ */
+export function parseType(source: string | Source, options?: ParseOptions): TypeNode;
+
+export function parseConstValue(lexer: Lexer): ValueNode;
+
+/**
+ * Type :
+ * - NamedType
+ * - ListType
+ * - NonNullType
+ */
+export function parseTypeReference(lexer: Lexer): TypeNode;
+
+/**
+ * NamedType : Name
+ */
+export function parseNamedType(lexer: Lexer): NamedTypeNode;
diff --git a/node_modules/@types/graphql/language/predicates.d.ts b/node_modules/@types/graphql/language/predicates.d.ts
new file mode 100644
index 0000000..9859944
--- /dev/null
+++ b/node_modules/@types/graphql/language/predicates.d.ts
@@ -0,0 +1,19 @@
+import { ASTNode } from "./ast";
+
+export function isDefinitionNode(node: ASTNode): boolean;
+
+export function isExecutableDefinitionNode(node: ASTNode): boolean;
+
+export function isSelectionNode(node: ASTNode): boolean;
+
+export function isValueNode(node: ASTNode): boolean;
+
+export function isTypeNode(node: ASTNode): boolean;
+
+export function isTypeSystemDefinitionNode(node: ASTNode): boolean;
+
+export function isTypeDefinitionNode(node: ASTNode): boolean;
+
+export function isTypeSystemExtensionNode(node: ASTNode): boolean;
+
+export function isTypeExtensionNode(node: ASTNode): boolean;
diff --git a/node_modules/@types/graphql/language/printer.d.ts b/node_modules/@types/graphql/language/printer.d.ts
new file mode 100644
index 0000000..fde3888
--- /dev/null
+++ b/node_modules/@types/graphql/language/printer.d.ts
@@ -0,0 +1,5 @@
+/**
+ * Converts an AST into a string, using one set of reasonable
+ * formatting rules.
+ */
+export function print(ast: any): string;
diff --git a/node_modules/@types/graphql/language/source.d.ts b/node_modules/@types/graphql/language/source.d.ts
new file mode 100644
index 0000000..7794dd3
--- /dev/null
+++ b/node_modules/@types/graphql/language/source.d.ts
@@ -0,0 +1,19 @@
+interface Location {
+ line: number;
+ column: number;
+}
+
+/**
+ * A representation of source input to GraphQL.
+ * `name` and `locationOffset` are optional. They are useful for clients who
+ * store GraphQL documents in source files; for example, if the GraphQL input
+ * starts at line 40 in a file named Foo.graphql, it might be useful for name to
+ * be "Foo.graphql" and location to be `{ line: 40, column: 0 }`.
+ * line and column in locationOffset are 1-indexed
+ */
+export class Source {
+ body: string;
+ name: string;
+ locationOffset: Location;
+ constructor(body: string, name?: string, locationOffset?: Location);
+}
diff --git a/node_modules/@types/graphql/language/visitor.d.ts b/node_modules/@types/graphql/language/visitor.d.ts
new file mode 100644
index 0000000..33a3a70
--- /dev/null
+++ b/node_modules/@types/graphql/language/visitor.d.ts
@@ -0,0 +1,161 @@
+import Maybe from "../tsutils/Maybe";
+import { ASTNode, ASTKindToNode } from "./ast";
+import { TypeInfo } from "../utilities/TypeInfo";
+
+interface EnterLeave {
+ readonly enter?: T;
+ readonly leave?: T;
+}
+
+type EnterLeaveVisitor = EnterLeave<
+ VisitFn | { [K in keyof KindToNode]?: VisitFn }
+>;
+
+type ShapeMapVisitor = {
+ [K in keyof KindToNode]?: VisitFn | EnterLeave>
+};
+
+export type ASTVisitor = Visitor;
+export type Visitor =
+ | EnterLeaveVisitor
+ | ShapeMapVisitor;
+
+/**
+ * A visitor is comprised of visit functions, which are called on each node
+ * during the visitor's traversal.
+ */
+export type VisitFn = (
+ // The current node being visiting.
+ node: TVisitedNode,
+ // The index or key to this node from the parent node or Array.
+ key: string | number | undefined,
+ // The parent immediately above this node, which may be an Array.
+ parent: TAnyNode | ReadonlyArray | undefined,
+ // The key path to get to this node from the root node.
+ path: ReadonlyArray,
+ // All nodes and Arrays visited before reaching parent of this node.
+ // These correspond to array indices in `path`.
+ // Note: ancestors includes arrays which contain the parent of visited node.
+ ancestors: ReadonlyArray>
+) => any;
+
+/**
+ * A KeyMap describes each the traversable properties of each kind of node.
+ */
+export type VisitorKeyMap = { [P in keyof T]: ReadonlyArray };
+
+export const QueryDocumentKeys: { [key: string]: string[] };
+
+export const BREAK: any;
+
+/**
+ * visit() will walk through an AST using a depth first traversal, calling
+ * the visitor's enter function at each node in the traversal, and calling the
+ * leave function after visiting that node and all of its child nodes.
+ *
+ * By returning different values from the enter and leave functions, the
+ * behavior of the visitor can be altered, including skipping over a sub-tree of
+ * the AST (by returning false), editing the AST by returning a value or null
+ * to remove the value, or to stop the whole traversal by returning BREAK.
+ *
+ * When using visit() to edit an AST, the original AST will not be modified, and
+ * a new version of the AST with the changes applied will be returned from the
+ * visit function.
+ *
+ * const editedAST = visit(ast, {
+ * enter(node, key, parent, path, ancestors) {
+ * // @return
+ * // undefined: no action
+ * // false: skip visiting this node
+ * // visitor.BREAK: stop visiting altogether
+ * // null: delete this node
+ * // any value: replace this node with the returned value
+ * },
+ * leave(node, key, parent, path, ancestors) {
+ * // @return
+ * // undefined: no action
+ * // false: no action
+ * // visitor.BREAK: stop visiting altogether
+ * // null: delete this node
+ * // any value: replace this node with the returned value
+ * }
+ * });
+ *
+ * Alternatively to providing enter() and leave() functions, a visitor can
+ * instead provide functions named the same as the kinds of AST nodes, or
+ * enter/leave visitors at a named key, leading to four permutations of
+ * visitor API:
+ *
+ * 1) Named visitors triggered when entering a node a specific kind.
+ *
+ * visit(ast, {
+ * Kind(node) {
+ * // enter the "Kind" node
+ * }
+ * })
+ *
+ * 2) Named visitors that trigger upon entering and leaving a node of
+ * a specific kind.
+ *
+ * visit(ast, {
+ * Kind: {
+ * enter(node) {
+ * // enter the "Kind" node
+ * }
+ * leave(node) {
+ * // leave the "Kind" node
+ * }
+ * }
+ * })
+ *
+ * 3) Generic visitors that trigger upon entering and leaving any node.
+ *
+ * visit(ast, {
+ * enter(node) {
+ * // enter any node
+ * },
+ * leave(node) {
+ * // leave any node
+ * }
+ * })
+ *
+ * 4) Parallel visitors for entering and leaving nodes of a specific kind.
+ *
+ * visit(ast, {
+ * enter: {
+ * Kind(node) {
+ * // enter the "Kind" node
+ * }
+ * },
+ * leave: {
+ * Kind(node) {
+ * // leave the "Kind" node
+ * }
+ * }
+ * })
+ */
+export function visit(
+ root: ASTNode,
+ visitor: Visitor,
+ visitorKeys?: VisitorKeyMap // default: QueryDocumentKeys
+): any;
+
+/**
+ * Creates a new visitor instance which delegates to many visitors to run in
+ * parallel. Each visitor will be visited for each node before moving on.
+ *
+ * If a prior visitor edits a node, no following visitors will see that node.
+ */
+export function visitInParallel(visitors: Array>): Visitor;
+
+/**
+ * Creates a new visitor instance which maintains a provided TypeInfo instance
+ * along with visiting visitor.
+ */
+export function visitWithTypeInfo(typeInfo: TypeInfo, visitor: Visitor): Visitor;
+
+/**
+ * Given a visitor instance, if it is leaving or not, and a node kind, return
+ * the function the visitor runtime should call.
+ */
+export function getVisitFn(visitor: Visitor, kind: string, isLeaving: boolean): Maybe>;
diff --git a/node_modules/@types/graphql/subscription/index.d.ts b/node_modules/@types/graphql/subscription/index.d.ts
new file mode 100644
index 0000000..ac4c64f
--- /dev/null
+++ b/node_modules/@types/graphql/subscription/index.d.ts
@@ -0,0 +1 @@
+export { subscribe, createSourceEventStream } from "./subscribe";
diff --git a/node_modules/@types/graphql/subscription/subscribe.d.ts b/node_modules/@types/graphql/subscription/subscribe.d.ts
new file mode 100644
index 0000000..05a5f29
--- /dev/null
+++ b/node_modules/@types/graphql/subscription/subscribe.d.ts
@@ -0,0 +1,75 @@
+import Maybe from "../tsutils/Maybe";
+import { GraphQLSchema } from "../type/schema";
+import { DocumentNode } from "../language/ast";
+import { GraphQLFieldResolver } from "../type/definition";
+import { ExecutionResult, ExecutionResultDataDefault } from "../execution/execute";
+
+/**
+ * Implements the "Subscribe" algorithm described in the GraphQL specification.
+ *
+ * Returns a Promise which resolves to either an AsyncIterator (if successful)
+ * or an ExecutionResult (client error). The promise will be rejected if a
+ * server error occurs.
+ *
+ * If the client-provided arguments to this function do not result in a
+ * compliant subscription, a GraphQL Response (ExecutionResult) with
+ * descriptive errors and no data will be returned.
+ *
+ * If the the source stream could not be created due to faulty subscription
+ * resolver logic or underlying systems, the promise will resolve to a single
+ * ExecutionResult containing `errors` and no `data`.
+ *
+ * If the operation succeeded, the promise resolves to an AsyncIterator, which
+ * yields a stream of ExecutionResults representing the response stream.
+ *
+ * Accepts either an object with named arguments, or individual arguments.
+ */
+export function subscribe(args: {
+ schema: GraphQLSchema;
+ document: DocumentNode;
+ rootValue?: any;
+ contextValue?: any;
+ variableValues?: Maybe<{ [key: string]: any }>;
+ operationName?: Maybe;
+ fieldResolver?: Maybe>;
+ subscribeFieldResolver?: Maybe>;
+}): Promise> | ExecutionResult>;
+
+export function subscribe(
+ schema: GraphQLSchema,
+ document: DocumentNode,
+ rootValue?: any,
+ contextValue?: any,
+ variableValues?: Maybe<{ [key: string]: any }>,
+ operationName?: Maybe,
+ fieldResolver?: Maybe>,
+ subscribeFieldResolver?: Maybe>
+): Promise> | ExecutionResult>;
+
+/**
+ * Implements the "CreateSourceEventStream" algorithm described in the
+ * GraphQL specification, resolving the subscription source event stream.
+ *
+ * Returns a Promise.
+ *
+ * If the client-provided invalid arguments, the source stream could not be
+ * created, or the resolver did not return an AsyncIterable, this function will
+ * will throw an error, which should be caught and handled by the caller.
+ *
+ * A Source Event Stream represents a sequence of events, each of which triggers
+ * a GraphQL execution for that event.
+ *
+ * This may be useful when hosting the stateful subscription service in a
+ * different process or machine than the stateless GraphQL execution engine,
+ * or otherwise separating these two steps. For more on this, see the
+ * "Supporting Subscriptions at Scale" information in the GraphQL specification.
+ */
+export function createSourceEventStream(
+ schema: GraphQLSchema,
+ document: DocumentNode,
+ rootValue?: any,
+ contextValue?: any,
+ variableValues?: { [key: string]: any },
+ operationName?: Maybe,
+ fieldResolver?: Maybe>
+): Promise | ExecutionResult>;
diff --git a/node_modules/@types/graphql/tsutils/Maybe.d.ts b/node_modules/@types/graphql/tsutils/Maybe.d.ts
new file mode 100644
index 0000000..83b04bc
--- /dev/null
+++ b/node_modules/@types/graphql/tsutils/Maybe.d.ts
@@ -0,0 +1,4 @@
+// Conveniently represents flow's "Maybe" type https://flow.org/en/docs/types/maybe/
+type Maybe = null | undefined | T
+
+export default Maybe
diff --git a/node_modules/@types/graphql/type/definition.d.ts b/node_modules/@types/graphql/type/definition.d.ts
new file mode 100644
index 0000000..4f95a4d
--- /dev/null
+++ b/node_modules/@types/graphql/type/definition.d.ts
@@ -0,0 +1,669 @@
+import Maybe from "../tsutils/Maybe";
+import { MaybePromise } from "../jsutils/MaybePromise";
+import {
+ ScalarTypeDefinitionNode,
+ ObjectTypeDefinitionNode,
+ FieldDefinitionNode,
+ InputValueDefinitionNode,
+ InterfaceTypeDefinitionNode,
+ UnionTypeDefinitionNode,
+ EnumTypeDefinitionNode,
+ EnumValueDefinitionNode,
+ InputObjectTypeDefinitionNode,
+ ObjectTypeExtensionNode,
+ InterfaceTypeExtensionNode,
+ OperationDefinitionNode,
+ FieldNode,
+ FragmentDefinitionNode,
+ ValueNode,
+ ScalarTypeExtensionNode,
+ UnionTypeExtensionNode,
+ EnumTypeExtensionNode,
+ InputObjectTypeExtensionNode,
+} from "../language/ast";
+import { GraphQLSchema } from "./schema";
+
+/**
+ * These are all of the possible kinds of types.
+ */
+export type GraphQLType =
+ | GraphQLScalarType
+ | GraphQLObjectType
+ | GraphQLInterfaceType
+ | GraphQLUnionType
+ | GraphQLEnumType
+ | GraphQLInputObjectType
+ | GraphQLList
+ | GraphQLNonNull;
+
+export function isType(type: any): type is GraphQLType;
+
+export function assertType(type: any): GraphQLType;
+
+export function isScalarType(type: any): type is GraphQLScalarType;
+
+export function assertScalarType(type: any): GraphQLScalarType;
+
+export function isObjectType(type: any): type is GraphQLObjectType;
+
+export function assertObjectType(type: any): GraphQLObjectType;
+
+export function isInterfaceType(type: any): type is GraphQLInterfaceType;
+
+export function assertInterfaceType(type: any): GraphQLInterfaceType;
+
+export function isUnionType(type: any): type is GraphQLUnionType;
+
+export function assertUnionType(type: any): GraphQLUnionType;
+
+export function isEnumType(type: any): type is GraphQLEnumType;
+
+export function assertEnumType(type: any): GraphQLEnumType;
+
+export function isInputObjectType(type: any): type is GraphQLInputObjectType;
+
+export function assertInputObjectType(type: any): GraphQLInputObjectType;
+
+export function isListType(type: any): type is GraphQLList;
+
+export function assertListType(type: any): GraphQLList;
+
+export function isNonNullType(type: any): type is GraphQLNonNull;
+
+export function assertNonNullType(type: any): GraphQLNonNull;
+
+/**
+ * These types may be used as input types for arguments and directives.
+ */
+export type GraphQLInputType =
+ | GraphQLScalarType
+ | GraphQLEnumType
+ | GraphQLInputObjectType
+ | GraphQLList
+ | GraphQLNonNull>;
+
+export function isInputType(type: any): type is GraphQLInputType;
+
+export function assertInputType(type: any): GraphQLInputType;
+
+/**
+ * These types may be used as output types as the result of fields.
+ */
+export type GraphQLOutputType =
+ | GraphQLScalarType
+ | GraphQLObjectType
+ | GraphQLInterfaceType
+ | GraphQLUnionType
+ | GraphQLEnumType
+ | GraphQLList
+ | GraphQLNonNull<
+ | GraphQLScalarType
+ | GraphQLObjectType
+ | GraphQLInterfaceType
+ | GraphQLUnionType
+ | GraphQLEnumType
+ | GraphQLList
+ >;
+
+export function isOutputType(type: any): type is GraphQLOutputType;
+
+export function assertOutputType(type: any): GraphQLOutputType;
+
+/**
+ * These types may describe types which may be leaf values.
+ */
+export type GraphQLLeafType = GraphQLScalarType | GraphQLEnumType;
+
+export function isLeafType(type: any): type is GraphQLLeafType;
+
+export function assertLeafType(type: any): GraphQLLeafType;
+
+/**
+ * These types may describe the parent context of a selection set.
+ */
+export type GraphQLCompositeType = GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType;
+
+export function isCompositeType(type: any): type is GraphQLCompositeType;
+
+export function assertCompositeType(type: any): GraphQLCompositeType;
+
+/**
+ * These types may describe the parent context of a selection set.
+ */
+export type GraphQLAbstractType = GraphQLInterfaceType | GraphQLUnionType;
+
+export function isAbstractType(type: any): type is GraphQLAbstractType;
+
+export function assertAbstractType(type: any): GraphQLAbstractType;
+
+/**
+ * List Modifier
+ *
+ * A list is a kind of type marker, a wrapping type which points to another
+ * type. Lists are often created within the context of defining the fields of
+ * an object type.
+ *
+ * Example:
+ *
+ * const PersonType = new GraphQLObjectType({
+ * name: 'Person',
+ * fields: () => ({
+ * parents: { type: new GraphQLList(Person) },
+ * children: { type: new GraphQLList(Person) },
+ * })
+ * })
+ *
+ */
+export class GraphQLList {
+ readonly ofType: T;
+ constructor(ofType: T);
+ toString(): string;
+ toJSON(): string;
+ inspect(): string;
+}
+
+/**
+ * Non-Null Modifier
+ *
+ * A non-null is a kind of type marker, a wrapping type which points to another
+ * type. Non-null types enforce that their values are never null and can ensure
+ * an error is raised if this ever occurs during a request. It is useful for
+ * fields which you can make a strong guarantee on non-nullability, for example
+ * usually the id field of a database row will never be null.
+ *
+ * Example:
+ *
+ * const RowType = new GraphQLObjectType({
+ * name: 'Row',
+ * fields: () => ({
+ * id: { type: new GraphQLNonNull(GraphQLString) },
+ * })
+ * })
+ *
+ * Note: the enforcement of non-nullability occurs within the executor.
+ */
+export class GraphQLNonNull {
+ readonly ofType: T;
+ constructor(ofType: T);
+ toString(): string;
+ toJSON(): string;
+ inspect(): string;
+}
+
+export type GraphQLWrappingType = GraphQLList | GraphQLNonNull;
+
+export function isWrappingType(type: any): type is GraphQLWrappingType;
+
+export function assertWrappingType(type: any): GraphQLWrappingType;
+
+/**
+ * These types can all accept null as a value.
+ */
+export type GraphQLNullableType =
+ | GraphQLScalarType
+ | GraphQLObjectType
+ | GraphQLInterfaceType
+ | GraphQLUnionType
+ | GraphQLEnumType
+ | GraphQLInputObjectType
+ | GraphQLList;
+
+export function isNullableType(type: any): type is GraphQLNullableType;
+
+export function assertNullableType(type: any): GraphQLNullableType;
+
+export function getNullableType(type: void): undefined;
+export function getNullableType(type: T): T;
+export function getNullableType(type: GraphQLNonNull): T;
+
+/**
+ * These named types do not include modifiers like List or NonNull.
+ */
+export type GraphQLNamedType =
+ | GraphQLScalarType
+ | GraphQLObjectType
+ | GraphQLInterfaceType
+ | GraphQLUnionType
+ | GraphQLEnumType
+ | GraphQLInputObjectType;
+
+export function isNamedType(type: any): type is GraphQLNamedType;
+
+export function assertNamedType(type: any): GraphQLNamedType;
+
+export function getNamedType(type: void): undefined;
+export function getNamedType(type: GraphQLType): GraphQLNamedType;
+
+/**
+ * Used while defining GraphQL types to allow for circular references in
+ * otherwise immutable type definitions.
+ */
+export type Thunk = (() => T) | T;
+
+/**
+ * Scalar Type Definition
+ *
+ * The leaf values of any request and input values to arguments are
+ * Scalars (or Enums) and are defined with a name and a series of functions
+ * used to parse input from ast or variables and to ensure validity.
+ *
+ * Example:
+ *
+ * const OddType = new GraphQLScalarType({
+ * name: 'Odd',
+ * serialize(value) {
+ * return value % 2 === 1 ? value : null;
+ * }
+ * });
+ *
+ */
+export class GraphQLScalarType {
+ name: string;
+ description: Maybe;
+ serialize: GraphQLScalarSerializer