Skip to content

Commit 0e53aed

Browse files
authored
feat!: replace GraphQLClientRequestHeaders with built-in HeadersInit type (#616)
1 parent dbd7c7f commit 0e53aed

File tree

4 files changed

+23
-30
lines changed

4 files changed

+23
-30
lines changed

src/index.ts

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { resolveRequestDocument } from './resolveRequestDocument.js'
1111
import type {
1212
BatchRequestDocument,
1313
FetchOptions,
14-
GraphQLClientRequestHeaders,
1514
GraphQLClientResponse,
1615
HTTPMethodInput,
1716
JsonSerializer,
@@ -37,7 +36,7 @@ import type { TypedDocumentNode } from '@graphql-typed-document-node/core'
3736
/**
3837
* Convert the given headers configuration into a plain object.
3938
*/
40-
const resolveHeaders = (headers?: GraphQLClientRequestHeaders): Record<string, string> => {
39+
const resolveHeaders = (headers?: HeadersInit): Record<string, string> => {
4140
let oHeaders: Record<string, string> = {}
4241
if (headers) {
4342
if (headers instanceof Headers) {
@@ -124,7 +123,7 @@ interface RequestVerbParams<V extends Variables = Variables> {
124123
fetch: Fetch
125124
fetchOptions: FetchOptions
126125
variables?: V
127-
headers?: GraphQLClientRequestHeaders
126+
headers?: HeadersInit
128127
operationName?: string
129128
middleware?: RequestMiddleware<V>
130129
}
@@ -297,11 +296,11 @@ class GraphQLClient {
297296
* Send GraphQL documents in batch to the server.
298297
*/
299298
// prettier-ignore
300-
batchRequests<T extends BatchResult, V extends Variables = Variables>(documents: BatchRequestDocument<V>[], requestHeaders?: GraphQLClientRequestHeaders): Promise<T>
299+
batchRequests<T extends BatchResult, V extends Variables = Variables>(documents: BatchRequestDocument<V>[], requestHeaders?: HeadersInit): Promise<T>
301300
// prettier-ignore
302301
batchRequests<T extends BatchResult, V extends Variables = Variables>(options: BatchRequestsOptions<V>): Promise<T>
303302
// prettier-ignore
304-
batchRequests<T extends BatchResult, V extends Variables = Variables>(documentsOrOptions: BatchRequestDocument<V>[] | BatchRequestsOptions<V>, requestHeaders?: GraphQLClientRequestHeaders): Promise<T> {
303+
batchRequests<T extends BatchResult, V extends Variables = Variables>(documentsOrOptions: BatchRequestDocument<V>[] | BatchRequestsOptions<V>, requestHeaders?: HeadersInit): Promise<T> {
305304
const batchRequestOptions = parseBatchRequestArgs<V>(documentsOrOptions, requestHeaders)
306305
const { headers, ...fetchOptions } = this.requestConfig
307306

@@ -343,7 +342,7 @@ class GraphQLClient {
343342
})
344343
}
345344

346-
setHeaders(headers: GraphQLClientRequestHeaders): GraphQLClient {
345+
setHeaders(headers: HeadersInit): GraphQLClient {
347346
this.requestConfig.headers = headers
348347
return this
349348
}
@@ -378,7 +377,7 @@ const makeRequest = async <T = unknown, V extends Variables = Variables>(params:
378377
url: string
379378
query: string | string[]
380379
variables?: V
381-
headers?: GraphQLClientRequestHeaders
380+
headers?: HeadersInit
382381
operationName?: string
383382
fetch: Fetch
384383
method?: HTTPMethodInput
@@ -431,13 +430,13 @@ const makeRequest = async <T = unknown, V extends Variables = Variables>(params:
431430

432431
// prettier-ignore
433432
interface RawRequestMethod {
434-
<T, V extends Variables = Variables>(query: string, variables?: V, requestHeaders?: GraphQLClientRequestHeaders): Promise<GraphQLClientResponse<T>>
433+
<T, V extends Variables = Variables>(query: string, variables?: V, requestHeaders?: HeadersInit): Promise<GraphQLClientResponse<T>>
435434
<T, V extends Variables = Variables>(options: RawRequestOptions<V>): Promise<GraphQLClientResponse<T>>
436435
}
437436

438437
// prettier-ignore
439438
type RawRequestMethodArgs<V extends Variables> =
440-
| [query: string, variables?: V, requestHeaders?: GraphQLClientRequestHeaders]
439+
| [query: string, variables?: V, requestHeaders?: HeadersInit]
441440
| [RawRequestOptions<V>]
442441

443442
// prettier-ignore
@@ -563,12 +562,12 @@ type BatchResult = [Result, ...Result[]]
563562

564563
// prettier-ignore
565564
interface BatchRequests {
566-
<T extends BatchResult, V extends Variables = Variables>(url: string, documents: BatchRequestDocument<V>[], requestHeaders?: GraphQLClientRequestHeaders): Promise<T>
565+
<T extends BatchResult, V extends Variables = Variables>(url: string, documents: BatchRequestDocument<V>[], requestHeaders?: HeadersInit): Promise<T>
567566
<T extends BatchResult, V extends Variables = Variables>(options: BatchRequestsExtendedOptions<V>): Promise<T>
568567
}
569568

570569
type BatchRequestsArgs =
571-
| [url: string, documents: BatchRequestDocument[], requestHeaders?: GraphQLClientRequestHeaders]
570+
| [url: string, documents: BatchRequestDocument[], requestHeaders?: HeadersInit]
572571
| [options: BatchRequestsExtendedOptions]
573572

574573
const parseBatchRequestsArgsExtended = (args: BatchRequestsArgs): BatchRequestsExtendedOptions => {
@@ -674,7 +673,6 @@ export {
674673
BatchRequestsOptions,
675674
ClientError,
676675
GraphQLClient,
677-
GraphQLClientRequestHeaders,
678676
rawRequest,
679677
RawRequestExtendedOptions,
680678
RawRequestOptions,

src/parseArgs.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type {
22
BatchRequestDocument,
33
BatchRequestsOptions,
4-
GraphQLClientRequestHeaders,
54
RawRequestExtendedOptions,
65
RawRequestOptions,
76
RequestDocument,
@@ -14,7 +13,7 @@ import type {
1413
export const parseRequestArgs = <V extends Variables = Variables>(
1514
documentOrOptions: RequestDocument | RequestOptions<V>,
1615
variables?: V,
17-
requestHeaders?: GraphQLClientRequestHeaders,
16+
requestHeaders?: HeadersInit,
1817
): RequestOptions<V> => {
1918
return (documentOrOptions as RequestOptions<V>).document
2019
? (documentOrOptions as RequestOptions<V>)
@@ -29,7 +28,7 @@ export const parseRequestArgs = <V extends Variables = Variables>(
2928
export const parseRawRequestArgs = <V extends Variables = Variables>(
3029
queryOrOptions: string | RawRequestOptions<V>,
3130
variables?: V,
32-
requestHeaders?: GraphQLClientRequestHeaders,
31+
requestHeaders?: HeadersInit,
3332
): RawRequestOptions<V> => {
3433
return (queryOrOptions as RawRequestOptions<V>).query
3534
? (queryOrOptions as RawRequestOptions<V>)
@@ -43,7 +42,7 @@ export const parseRawRequestArgs = <V extends Variables = Variables>(
4342

4443
export const parseBatchRequestArgs = <V extends Variables = Variables>(
4544
documentsOrOptions: BatchRequestDocument<V>[] | BatchRequestsOptions<V>,
46-
requestHeaders?: GraphQLClientRequestHeaders,
45+
requestHeaders?: HeadersInit,
4746
): BatchRequestsOptions<V> => {
4847
return (documentsOrOptions as BatchRequestsOptions<V>).documents
4948
? (documentsOrOptions as BatchRequestsOptions<V>)

src/types.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export type HTTPMethodInput = 'GET' | 'POST' | 'get' | 'post'
9393
export interface RequestConfig extends Omit<RequestInit, 'headers' | 'method'>, AdditionalRequestOptions {
9494
fetch?: Fetch
9595
method?: HTTPMethodInput
96-
headers?: MaybeLazy<GraphQLClientRequestHeaders>
96+
headers?: MaybeLazy<HeadersInit>
9797
requestMiddleware?: RequestMiddleware
9898
responseMiddleware?: ResponseMiddleware
9999
jsonSerializer?: JsonSerializer
@@ -106,7 +106,7 @@ export type BatchRequestDocument<V extends Variables = Variables> = {
106106

107107
export type RawRequestOptions<V extends Variables = Variables> = {
108108
query: string
109-
requestHeaders?: GraphQLClientRequestHeaders
109+
requestHeaders?: HeadersInit
110110
signal?: RequestInit['signal']
111111
} & (V extends Record<any, never>
112112
? { variables?: V }
@@ -116,7 +116,7 @@ export type RawRequestOptions<V extends Variables = Variables> = {
116116

117117
export type RequestOptions<V extends Variables = Variables, T = unknown> = {
118118
document: RequestDocument | TypedDocumentNode<T, V>
119-
requestHeaders?: GraphQLClientRequestHeaders
119+
requestHeaders?: HeadersInit
120120
signal?: RequestInit['signal']
121121
} & (V extends Record<any, never>
122122
? { variables?: V }
@@ -126,7 +126,7 @@ export type RequestOptions<V extends Variables = Variables, T = unknown> = {
126126

127127
export interface BatchRequestsOptions<V extends Variables = Variables> {
128128
documents: BatchRequestDocument<V>[]
129-
requestHeaders?: GraphQLClientRequestHeaders
129+
requestHeaders?: HeadersInit
130130
signal?: RequestInit['signal']
131131
}
132132

@@ -154,14 +154,10 @@ type RequestExtendedInit<V extends Variables = Variables> = RequestInit & {
154154
variables?: V
155155
}
156156

157-
// TODO: Replace this type with the built-in `HeadersInit` type.
158-
// See: https://github.com/jasonkuhrt/graphql-request/issues/608
159-
export type GraphQLClientRequestHeaders = Headers | string[][] | Record<string, string>
160-
161157
// prettier-ignore
162158
export type VariablesAndRequestHeadersArgs<V extends Variables> =
163159
V extends Record<any, never> // do we have explicitly no variables allowed?
164-
? [variables?: V, requestHeaders?: GraphQLClientRequestHeaders]
160+
? [variables?: V, requestHeaders?: HeadersInit]
165161
: keyof RemoveIndex<V> extends never // do we get an empty variables object?
166-
? [variables?: V, requestHeaders?: GraphQLClientRequestHeaders]
167-
: [variables: V, requestHeaders?: GraphQLClientRequestHeaders]
162+
? [variables?: V, requestHeaders?: HeadersInit]
163+
: [variables: V, requestHeaders?: HeadersInit]

tests/headers.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ describe(`using class`, () => {
3838
})
3939

4040
describe(`custom header in the request`, () => {
41-
describe.each([
41+
describe.each<HeadersInit[]>([
4242
[new Headers({ 'x-request-foo': `request-bar` })],
4343
[{ 'x-request-foo': `request-bar` }],
4444
[[[`x-request-foo`, `request-bar`]]],
@@ -66,7 +66,7 @@ describe(`using class`, () => {
6666
})
6767
})
6868

69-
describe.each([
69+
describe.each<HeadersInit[]>([
7070
[new Headers({ 'x-foo': `request-bar` })],
7171
[{ 'x-foo': `request-bar` }],
7272
[[[`x-foo`, `request-bar`]]],
@@ -129,7 +129,7 @@ describe(`using class`, () => {
129129
})
130130

131131
describe(`using request function`, () => {
132-
describe.each([
132+
describe.each<HeadersInit[]>([
133133
[new Headers({ 'x-request-foo': `request-bar` })],
134134
[{ 'x-request-foo': `request-bar` }],
135135
[[[`x-request-foo`, `request-bar`]]],

0 commit comments

Comments
 (0)