UNPKG

graphql-request

Version:

Minimal GraphQL client supporting Node and browsers for scripts or simple apps.

90 lines 3.43 kB
import type { TypedDocumentNode } from '@graphql-typed-document-node/core'; import type { GraphQLError } from 'graphql'; import type { DocumentNode } from 'graphql'; import type { MaybeLazy, MaybePromise, RemoveIndex } from '../../lib/prelude.js'; import type { ClientError } from '../classes/ClientError.js'; export type Fetch = typeof fetch; /** * 'None' will throw whenever the response contains errors * * 'Ignore' will ignore incoming errors and resolve like no errors occurred * * 'All' will return both the errors and data */ export type ErrorPolicy = 'none' | 'ignore' | 'all'; export interface JsonSerializer { stringify: (obj: any) => string; parse: (obj: string) => unknown; } export interface AdditionalRequestOptions { jsonSerializer?: JsonSerializer; /** * Decide how to handle GraphQLErrors in response */ errorPolicy?: ErrorPolicy; } export interface FetchOptions extends RequestInit, AdditionalRequestOptions { } export type { GraphQLError }; export type Variables = object; export type BatchVariables = (Variables | undefined)[]; export interface GraphQLResponse<T = unknown> { data?: T; errors?: GraphQLError[]; extensions?: unknown; status: number; [key: string]: unknown; } export interface GraphQLRequestContext<V extends Variables = Variables> { query: string | string[]; variables?: V; } export type RequestDocument = string | DocumentNode; export interface GraphQLClientResponse<Data> { status: number; headers: Headers; data: Data; extensions?: unknown; errors?: GraphQLError[]; } export type HTTPMethodInput = 'GET' | 'POST' | 'get' | 'post'; export interface RequestConfig extends Omit<RequestInit, 'headers' | 'method'>, AdditionalRequestOptions { fetch?: Fetch; method?: HTTPMethodInput; headers?: MaybeLazy<HeadersInit>; requestMiddleware?: RequestMiddleware; responseMiddleware?: ResponseMiddleware; jsonSerializer?: JsonSerializer; excludeOperationName?: boolean; } export type RawRequestOptions<V extends Variables = Variables> = { query: string; requestHeaders?: HeadersInit; signal?: RequestInit['signal']; } & (V extends Record<any, never> ? { variables?: V; } : keyof RemoveIndex<V> extends never ? { variables?: V; } : { variables: V; }); export type RequestOptions<V extends Variables = Variables, T = unknown> = { document: RequestDocument | TypedDocumentNode<T, V>; requestHeaders?: HeadersInit; signal?: RequestInit['signal']; } & (V extends Record<any, never> ? { variables?: V; } : keyof RemoveIndex<V> extends never ? { variables?: V; } : { variables: V; }); export type ResponseMiddleware = (response: GraphQLClientResponse<unknown> | ClientError | Error, request: RequestInitExtended) => MaybePromise<void>; export type RequestMiddleware<V extends Variables = Variables> = (request: RequestInitExtended<V>) => RequestInitExtended | Promise<RequestInitExtended>; export type RequestInitExtended<V extends Variables = Variables> = RequestInit & { url: string; operationName?: string; variables?: V; }; export type VariablesAndRequestHeadersArgs<V extends Variables> = V extends Record<any, never> ? [variables?: V, requestHeaders?: HeadersInit] : keyof RemoveIndex<V> extends never ? [variables?: V, requestHeaders?: HeadersInit] : [variables: V, requestHeaders?: HeadersInit]; //# sourceMappingURL=types.d.ts.map