UNPKG

@gqlts/runtime

Version:

Gqlts runtime client

45 lines 2.1 kB
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