Erick Wendel Contributions MCP

// @ts-nocheck import { QueryBatcher } from './batcher.ts' import type { ClientOptions } from './createClient.ts' import type { GraphqlOperation } from './generateGraphqlOperation.ts' import { GenqlError } from './error.ts' export interface Fetcher { (gql: GraphqlOperation): Promise<any> } export type BatchOptions = { batchInterval?: number // ms maxBatchSize?: number } const DEFAULT_BATCH_OPTIONS = { maxBatchSize: 10, batchInterval: 40, } export const createFetcher = ({ url, headers = {}, fetcher, fetch: _fetch, batch = false, ...rest }: ClientOptions): Fetcher => { if (!url && !fetcher) { throw new Error('url or fetcher is required') } fetcher = fetcher || (async (body) => { let headersObject = typeof headers == 'function' ? await headers() : headers headersObject = headersObject || {} if (typeof fetch === 'undefined' && !_fetch) { throw new Error( 'Global `fetch` function is not available, pass a fetch polyfill to Genql `createClient`', ) } let fetchImpl = _fetch || fetch const res = await fetchImpl(url!, { headers: { 'Content-Type': 'application/json', ...headersObject, }, method: 'POST', body: JSON.stringify(body), ...rest, }) if (!res.ok) { throw new Error(`${res.statusText}: ${await res.text()}`) } const json = await res.json() return json }) if (!batch) { return async (body) => { const json = await fetcher!(body) if (Array.isArray(json)) { return json.map((json) => { if (json?.errors?.length) { throw new GenqlError(json.errors || [], json.data) } return json.data }) } else { if (json?.errors?.length) { throw new GenqlError(json.errors || [], json.data) } return json.data } } } const batcher = new QueryBatcher( async (batchedQuery) => { // console.log(batchedQuery) // [{ query: 'query{user{age}}', variables: {} }, ...] const json = await fetcher!(batchedQuery) return json as any }, batch === true ? DEFAULT_BATCH_OPTIONS : batch, ) return async ({ query, variables }) => { const json = await batcher.fetch(query, variables) if (json?.data) { return json.data } throw new Error( 'Genql batch fetcher returned unexpected result ' + JSON.stringify(json), ) } }