apollo-client
Version:
A simple yet functional GraphQL client.
66 lines (65 loc) • 2.56 kB
TypeScript
/// <reference types="graphql" />
/// <reference types="isomorphic-fetch" />
import 'whatwg-fetch';
import { ExecutionResult, DocumentNode } from 'graphql';
import { MiddlewareInterface } from './middleware';
import { AfterwareInterface } from './afterware';
export interface Request {
debugName?: string;
query?: DocumentNode;
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<ExecutionResult>;
}
export interface BatchedNetworkInterface extends NetworkInterface {
batchQuery(requests: Request[]): Promise<ExecutionResult[]>;
}
export interface SubscriptionNetworkInterface extends NetworkInterface {
subscribe(request: Request, handler: (error: any, result: any) => void): number;
unsubscribe(id: Number): void;
}
export interface HTTPNetworkInterface extends NetworkInterface {
_uri: string;
_opts: RequestInit;
_middlewares: MiddlewareInterface[];
_afterwares: AfterwareInterface[];
use(middlewares: MiddlewareInterface[]): HTTPNetworkInterface;
useAfter(afterwares: AfterwareInterface[]): HTTPNetworkInterface;
}
export interface RequestAndOptions {
request: Request;
options: RequestInit;
}
export interface ResponseAndOptions {
response: IResponse;
options: RequestInit;
}
export declare function printRequest(request: Request): PrintedRequest;
export declare class HTTPFetchNetworkInterface implements NetworkInterface {
_uri: string;
_opts: RequestInit;
_middlewares: MiddlewareInterface[];
_afterwares: AfterwareInterface[];
constructor(uri: string | undefined, opts?: RequestInit);
applyMiddlewares({request, options}: RequestAndOptions): Promise<RequestAndOptions>;
applyAfterwares({response, options}: ResponseAndOptions): Promise<ResponseAndOptions>;
fetchFromRemoteEndpoint({request, options}: RequestAndOptions): Promise<IResponse>;
query(request: Request): Promise<ExecutionResult>;
use(middlewares: MiddlewareInterface[]): HTTPNetworkInterface;
useAfter(afterwares: AfterwareInterface[]): HTTPNetworkInterface;
}
export interface NetworkInterfaceOptions {
uri?: string;
opts?: RequestInit;
}
export declare function createNetworkInterface(uriOrInterfaceOpts: string | NetworkInterfaceOptions, secondArgOpts?: NetworkInterfaceOptions): HTTPNetworkInterface;