@gqlts/runtime
Version:
Gqlts runtime client
45 lines • 2.1 kB
TypeScript
import { type BatchOptions } from '../fetcher';
import { type LinkedType } from '../types';
import { type GraphqlOperation, ParseRequestOptions } from './generateGraphqlOperation';
import type { AxiosInstance, AxiosRequestConfig } from 'axios';
import { type Client as WSClient, type ClientOptions as WSClientOptions } from 'graphql-ws';
import { Observable } from 'zen-observable-ts';
type HeaderValue = string | string[] | number | boolean | null;
type RawHeaders = Record<string, HeaderValue>;
export type Headers = RawHeaders | (() => RawHeaders) | (() => Promise<RawHeaders>);
export interface ClientRequestConfig<D = any> extends AxiosRequestConfig<D> {
headers?: RawHeaders;
}
export type BaseFetcher = {
fetcherMethod: (operation: GraphqlOperation | GraphqlOperation[], config?: ClientRequestConfig) => Promise<any>;
fetcherInstance: AxiosInstance | unknown | undefined;
};
export type ClientOptions = Omit<ClientRequestConfig, 'body' | 'headers'> & {
url?: string;
timeout?: number;
batch?: BatchOptions | boolean;
fetcherMethod?: BaseFetcher['fetcherMethod'];
fetcherInstance?: BaseFetcher['fetcherInstance'];
headers?: Headers;
subscription?: {
url?: string;
headers?: Headers;
} & Partial<WSClientOptions>;
webSocketImpl?: unknown;
generateGraphqlOperationOptions?: ParseRequestOptions;
};
export interface GraphQLClient {
wsClient?: WSClient;
query?: <T = any>(request: any, config?: ClientRequestConfig) => Promise<T>;
mutation?: <T = any>(request: any, config?: ClientRequestConfig) => Promise<T>;
subscription?: <T = any>(request: any, config?: ClientOptions) => Observable<T>;
fetcherInstance: BaseFetcher['fetcherInstance'];
fetcherMethod: BaseFetcher['fetcherMethod'];
}
export declare function createClient({ queryRoot, mutationRoot, subscriptionRoot, generateGraphqlOperationOptions, ...options }: ClientOptions & {
queryRoot?: LinkedType;
mutationRoot?: LinkedType;
subscriptionRoot?: LinkedType;
}): GraphQLClient;
export {};
//# sourceMappingURL=createClient.d.ts.map