diff --git a/tstypes/subscription/asyncIteratorReject.d.ts b/tstypes/subscription/asyncIteratorReject.d.ts new file mode 100644 index 0000000000..e30c40a6fe --- /dev/null +++ b/tstypes/subscription/asyncIteratorReject.d.ts @@ -0,0 +1,6 @@ +/** + * Given an error, returns an AsyncIterable which will fail with that error. + * + * Similar to Promise.reject(error) + */ +export default function asyncIteratorReject(error: Error): AsyncIterator; diff --git a/tstypes/subscription/index.d.ts b/tstypes/subscription/index.d.ts index 11b0a7f26d..ba8835f196 100644 --- a/tstypes/subscription/index.d.ts +++ b/tstypes/subscription/index.d.ts @@ -1 +1,5 @@ -export { subscribe, createSourceEventStream } from './subscribe'; +export { + subscribe, + createSourceEventStream, + SubscriptionArgs, +} from './subscribe'; diff --git a/tstypes/subscription/mapAsyncIterator.d.ts b/tstypes/subscription/mapAsyncIterator.d.ts new file mode 100644 index 0000000000..cb13dbbd8e --- /dev/null +++ b/tstypes/subscription/mapAsyncIterator.d.ts @@ -0,0 +1,9 @@ +/** + * Given an AsyncIterable and a callback function, return an AsyncIterator + * which produces values mapped via calling the callback function. + */ +export default function mapAsyncIterator( + iterable: AsyncIterable, + callback: (arg: T) => PromiseOrValue, + rejectCallback?: (arg: any) => PromiseOrValue, +): AsyncGenerator; diff --git a/tstypes/subscription/subscribe.d.ts b/tstypes/subscription/subscribe.d.ts index 632af63c01..a2a2d0820e 100644 --- a/tstypes/subscription/subscribe.d.ts +++ b/tstypes/subscription/subscribe.d.ts @@ -1,11 +1,22 @@ 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'; +import { GraphQLSchema } from '../type/schema'; +import { GraphQLFieldResolver } from '../type/definition'; + +export interface SubscriptionArgs { + schema: GraphQLSchema; + document: DocumentNode; + rootValue?: any; + contextValue?: any; + variableValues?: Maybe>; + operationName?: Maybe; + fieldResolver?: Maybe>; + subscribeFieldResolver?: Maybe>; +} /** * Implements the "Subscribe" algorithm described in the GraphQL specification. @@ -27,16 +38,9 @@ import { * * 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< +export function subscribe( + args: SubscriptionArgs, +): Promise< AsyncIterableIterator> | ExecutionResult >;