import { Operation, NextLink, FetchResult } from '../types'; import Observable from 'zen-observable-ts'; import { ApolloLink } from '../link'; export default class SetContextLink extends ApolloLink { constructor( private setContext: ( context: Record<string, any>, ) => Record<string, any> = c => c, ) { super(); } public request( operation: Operation, forward: NextLink, ): Observable<FetchResult> { operation.setContext(this.setContext(operation.getContext())); return forward(operation); } }