import {RequestParams} from '../graphql-client/types'; import { AllOperations, ApiClient, ApiClientConfig, ApiClientRequestOptions, } from './types'; export function generateGetHeaders( config: ApiClientConfig, ): ApiClient['getHeaders'] { return (customHeaders) => { return {...(customHeaders ?? {}), ...config.headers}; }; } export function generateGetGQLClientParams< Operations extends AllOperations = AllOperations, >({getHeaders, getApiUrl}: Pick) { return ( operation: Operation, options?: ApiClientRequestOptions, ): RequestParams => { const props: RequestParams = [operation as string]; if (options && Object.keys(options).length > 0) { const { variables, apiVersion: propApiVersion, headers, retries, signal, } = options as any; props.push({ ...(variables ? {variables} : {}), ...(headers ? {headers: getHeaders(headers)} : {}), ...(propApiVersion ? {url: getApiUrl(propApiVersion)} : {}), ...(retries ? {retries} : {}), ...(signal ? {signal} : {}), }); } return props; }; }