@graphql-tools/links
Version:
A set of utils for faster development of GraphQL tools
24 lines (23 loc) • 938 B
JavaScript
import * as apolloImport from '@apollo/client';
import { getOperationASTFromRequest, observableToAsyncIterable, } from '@graphql-tools/utils';
const apollo = apolloImport?.default ?? apolloImport;
export function linkToExecutor(link) {
return function executorFromLink(request) {
const observable = apollo.execute(link, {
query: request.document,
operationName: request.operationName,
variables: request.variables,
context: {
graphqlContext: request.context,
graphqlResolveInfo: request.info,
clientAwareness: {},
},
extensions: request.extensions,
});
const operationAst = getOperationASTFromRequest(request);
if (operationAst.operation === 'subscription') {
return observableToAsyncIterable(observable);
}
return apollo.toPromise(observable);
};
}