Spaces:
Build error
Build error
File size: 1,720 Bytes
d9494a5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | // @ts-nocheck
import { type BatchOptions, createFetcher } from './fetcher'
import type { ExecutionResult, LinkedType } from './types'
import {
generateGraphqlOperation,
type GraphqlOperation,
} from './generateGraphqlOperation'
export type Headers =
| HeadersInit
| (() => HeadersInit)
| (() => Promise<HeadersInit>)
export type BaseFetcher = (
operation: GraphqlOperation | GraphqlOperation[],
) => Promise<ExecutionResult | ExecutionResult[]>
export type ClientOptions = Omit<RequestInit, 'body' | 'headers'> & {
url?: string
batch?: BatchOptions | boolean
fetcher?: BaseFetcher
fetch?: Function
headers?: Headers
}
export const createClient = ({
queryRoot,
mutationRoot,
subscriptionRoot,
...options
}: ClientOptions & {
queryRoot?: LinkedType
mutationRoot?: LinkedType
subscriptionRoot?: LinkedType
}) => {
const fetcher = createFetcher(options)
const client: {
query?: Function
mutation?: Function
} = {}
if (queryRoot) {
client.query = (request: any) => {
if (!queryRoot) throw new Error('queryRoot argument is missing')
const resultPromise = fetcher(
generateGraphqlOperation('query', queryRoot, request),
)
return resultPromise
}
}
if (mutationRoot) {
client.mutation = (request: any) => {
if (!mutationRoot)
throw new Error('mutationRoot argument is missing')
const resultPromise = fetcher(
generateGraphqlOperation('mutation', mutationRoot, request),
)
return resultPromise
}
}
return client as any
}
|