/// /// /// import 'whatwg-fetch'; import { GraphQLResult, Document } from 'graphql'; import { MiddlewareInterface } from './middleware'; import { AfterwareInterface } from './afterware'; export interface Request { debugName?: string; query?: Document; variables?: Object; operationName?: string; [additionalKey: string]: any; } export interface PrintedRequest { debugName?: string; query?: string; variables?: Object; operationName?: string; } export interface NetworkInterface { [others: string]: any; query(request: Request): Promise; } export interface SubscriptionNetworkInterface extends NetworkInterface { subscribe(request: Request, handler: (error: any, result: any) => void): number; unsubscribe(id: Number): void; } export interface BatchedNetworkInterface extends NetworkInterface { batchQuery(requests: Request[]): Promise; } export interface HTTPNetworkInterface extends BatchedNetworkInterface { _uri: string; _opts: RequestInit; _middlewares: MiddlewareInterface[]; _afterwares: AfterwareInterface[]; use(middlewares: MiddlewareInterface[]): any; useAfter(afterwares: AfterwareInterface[]): any; } export interface RequestAndOptions { request: Request; options: RequestInit; } export interface ResponseAndOptions { response: IResponse; options: RequestInit; } export declare function addQueryMerging(networkInterface: NetworkInterface): BatchedNetworkInterface; export declare function printRequest(request: Request): PrintedRequest; export declare class HTTPFetchNetworkInterface implements NetworkInterface { _uri: string; _opts: RequestInit; _middlewares: MiddlewareInterface[]; _afterwares: AfterwareInterface[]; constructor(uri: string, opts?: RequestInit); applyMiddlewares({request, options}: RequestAndOptions): Promise; applyAfterwares({response, options}: ResponseAndOptions): Promise; fetchFromRemoteEndpoint({request, options}: RequestAndOptions): Promise; query(request: Request): Promise; use(middlewares: MiddlewareInterface[]): void; useAfter(afterwares: AfterwareInterface[]): void; } export interface NetworkInterfaceOptions { uri: string; opts?: RequestInit; transportBatching?: boolean; } export declare function createNetworkInterface(interfaceOpts: (NetworkInterfaceOptions | string), backOpts?: RequestInit): HTTPNetworkInterface;