@@ -5,24 +5,6 @@ import type { EndpointInterface } from "@octokit/types";
5
5
export default function fetchWrapper (
6
6
requestOptions : ReturnType < EndpointInterface > ,
7
7
) {
8
- const log =
9
- requestOptions . request && requestOptions . request . log
10
- ? requestOptions . request . log
11
- : console ;
12
- const parseSuccessResponseBody =
13
- requestOptions . request ?. parseSuccessResponseBody !== false ;
14
-
15
- if (
16
- isPlainObject ( requestOptions . body ) ||
17
- Array . isArray ( requestOptions . body )
18
- ) {
19
- requestOptions . body = JSON . stringify ( requestOptions . body ) ;
20
- }
21
-
22
- let headers : { [ header : string ] : string } = { } ;
23
- let status : number ;
24
- let url : string ;
25
-
26
8
const fetch : typeof globalThis . fetch =
27
9
requestOptions . request ?. fetch || globalThis . fetch ;
28
10
@@ -32,17 +14,32 @@ export default function fetchWrapper(
32
14
) ;
33
15
}
34
16
17
+ const log = requestOptions . request ?. log || console ;
18
+ const parseSuccessResponseBody =
19
+ requestOptions . request ?. parseSuccessResponseBody !== false ;
20
+
21
+ const body =
22
+ isPlainObject ( requestOptions . body ) || Array . isArray ( requestOptions . body )
23
+ ? JSON . stringify ( requestOptions . body )
24
+ : requestOptions . body ;
25
+
26
+ const requestHeaders = Object . fromEntries (
27
+ Object . entries ( requestOptions . headers ) . map ( ( [ name , value ] ) => [
28
+ name ,
29
+ String ( value ) ,
30
+ ] ) ,
31
+ ) ;
32
+
33
+ let responseHeaders : { [ header : string ] : string } = { } ;
34
+ let status : number ;
35
+ let url : string ;
36
+
35
37
return fetch ( requestOptions . url , {
36
38
method : requestOptions . method ,
37
- body : requestOptions . body ,
39
+ body,
38
40
redirect : requestOptions . request ?. redirect ,
39
41
// Header values must be `string`
40
- headers : Object . fromEntries (
41
- Object . entries ( requestOptions . headers ) . map ( ( [ name , value ] ) => [
42
- name ,
43
- String ( value ) ,
44
- ] ) ,
45
- ) ,
42
+ headers : requestHeaders ,
46
43
signal : requestOptions . request ?. signal ,
47
44
// duplex must be set if request.body is ReadableStream or Async Iterables.
48
45
// See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
@@ -53,17 +50,18 @@ export default function fetchWrapper(
53
50
status = response . status ;
54
51
55
52
for ( const keyAndValue of response . headers ) {
56
- headers [ keyAndValue [ 0 ] ] = keyAndValue [ 1 ] ;
53
+ responseHeaders [ keyAndValue [ 0 ] ] = keyAndValue [ 1 ] ;
57
54
}
58
55
59
- if ( "deprecation" in headers ) {
56
+ if ( "deprecation" in responseHeaders ) {
60
57
const matches =
61
- headers . link && headers . link . match ( / < ( [ ^ > ] + ) > ; r e l = " d e p r e c a t i o n " / ) ;
58
+ responseHeaders . link &&
59
+ responseHeaders . link . match ( / < ( [ ^ > ] + ) > ; r e l = " d e p r e c a t i o n " / ) ;
62
60
const deprecationLink = matches && matches . pop ( ) ;
63
61
log . warn (
64
62
`[@octokit/request] "${ requestOptions . method } ${
65
63
requestOptions . url
66
- } " is deprecated. It is scheduled to be removed on ${ headers . sunset } ${
64
+ } " is deprecated. It is scheduled to be removed on ${ responseHeaders . sunset } ${
67
65
deprecationLink ? `. See ${ deprecationLink } ` : ""
68
66
} `,
69
67
) ;
@@ -83,7 +81,7 @@ export default function fetchWrapper(
83
81
response : {
84
82
url,
85
83
status,
86
- headers,
84
+ headers : responseHeaders ,
87
85
data : undefined ,
88
86
} ,
89
87
request : requestOptions ,
@@ -95,7 +93,7 @@ export default function fetchWrapper(
95
93
response : {
96
94
url,
97
95
status,
98
- headers,
96
+ headers : responseHeaders ,
99
97
data : await getResponseData ( response ) ,
100
98
} ,
101
99
request : requestOptions ,
@@ -109,7 +107,7 @@ export default function fetchWrapper(
109
107
response : {
110
108
url,
111
109
status,
112
- headers,
110
+ headers : responseHeaders ,
113
111
data,
114
112
} ,
115
113
request : requestOptions ,
@@ -126,7 +124,7 @@ export default function fetchWrapper(
126
124
return {
127
125
status,
128
126
url,
129
- headers,
127
+ headers : responseHeaders ,
130
128
data,
131
129
} ;
132
130
} )
0 commit comments