@@ -57,9 +57,7 @@ export const createClient = ({
5757 endpoint,
5858 contentId,
5959 queries = { } ,
60- method,
61- customHeaders,
62- customBody,
60+ requestInit,
6361 } : MakeRequest ) => {
6462 const fetchClient = generateFetchClient ( apiKey , customFetch ) ;
6563 const queryString = parseQuery ( queries ) ;
@@ -82,9 +80,8 @@ export const createClient = ({
8280 async ( bail ) => {
8381 try {
8482 const response = await fetchClient ( url , {
85- method : method || 'GET' ,
86- headers : customHeaders ,
87- body : customBody ,
83+ ...requestInit ,
84+ method : requestInit ?. method ?? 'GET' ,
8885 } ) ;
8986
9087 // If a status code in the 400 range other than 429 is returned, do not retry.
@@ -117,7 +114,7 @@ export const createClient = ({
117114 ) ;
118115 }
119116
120- if ( method === 'DELETE' ) return ;
117+ if ( requestInit ?. method === 'DELETE' ) return ;
121118
122119 return response . json ( ) ;
123120 } catch ( error ) {
@@ -152,11 +149,17 @@ export const createClient = ({
152149 endpoint,
153150 contentId,
154151 queries = { } ,
152+ customRequestInit,
155153 } : GetRequest ) : Promise < T > => {
156154 if ( ! endpoint ) {
157155 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
158156 }
159- return await makeRequest ( { endpoint, contentId, queries } ) ;
157+ return await makeRequest ( {
158+ endpoint,
159+ contentId,
160+ queries,
161+ requestInit : customRequestInit ,
162+ } ) ;
160163 } ;
161164
162165 /**
@@ -165,11 +168,16 @@ export const createClient = ({
165168 const getList = async < T = any > ( {
166169 endpoint,
167170 queries = { } ,
171+ customRequestInit,
168172 } : GetListRequest ) : Promise < MicroCMSListResponse < T > > => {
169173 if ( ! endpoint ) {
170174 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
171175 }
172- return await makeRequest ( { endpoint, queries } ) ;
176+ return await makeRequest ( {
177+ endpoint,
178+ queries,
179+ requestInit : customRequestInit ,
180+ } ) ;
173181 } ;
174182
175183 /**
@@ -179,6 +187,7 @@ export const createClient = ({
179187 endpoint,
180188 contentId,
181189 queries = { } ,
190+ customRequestInit,
182191 } : GetListDetailRequest ) : Promise < T & MicroCMSListContent > => {
183192 if ( ! endpoint ) {
184193 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
@@ -187,6 +196,7 @@ export const createClient = ({
187196 endpoint,
188197 contentId,
189198 queries,
199+ requestInit : customRequestInit ,
190200 } ) ;
191201 } ;
192202
@@ -196,13 +206,15 @@ export const createClient = ({
196206 const getObject = async < T = any > ( {
197207 endpoint,
198208 queries = { } ,
209+ customRequestInit,
199210 } : GetObjectRequest ) : Promise < T & MicroCMSObjectContent > => {
200211 if ( ! endpoint ) {
201212 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
202213 }
203214 return await makeRequest ( {
204215 endpoint,
205216 queries,
217+ requestInit : customRequestInit ,
206218 } ) ;
207219 } ;
208220
@@ -214,25 +226,27 @@ export const createClient = ({
214226 contentId,
215227 content,
216228 isDraft = false ,
229+ customRequestInit,
217230 } : CreateRequest < T > ) : Promise < WriteApiRequestResult > => {
218231 if ( ! endpoint ) {
219232 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
220233 }
221234
222235 const queries : MakeRequest [ 'queries' ] = isDraft ? { status : 'draft' } : { } ;
223- const method : MakeRequest [ 'method' ] = contentId ? 'PUT' : 'POST' ;
224- const customHeaders : MakeRequest [ 'customHeaders' ] = {
225- 'Content-Type' : 'application/json' ,
236+ const requestInit : MakeRequest [ 'requestInit' ] = {
237+ ...customRequestInit ,
238+ method : contentId ? 'PUT' : 'POST' ,
239+ headers : {
240+ 'Content-Type' : 'application/json' ,
241+ } ,
242+ body : JSON . stringify ( content ) ,
226243 } ;
227- const customBody : MakeRequest [ 'customBody' ] = JSON . stringify ( content ) ;
228244
229245 return makeRequest ( {
230246 endpoint,
231247 contentId,
232248 queries,
233- method,
234- customHeaders,
235- customBody,
249+ requestInit,
236250 } ) ;
237251 } ;
238252
@@ -243,23 +257,25 @@ export const createClient = ({
243257 endpoint,
244258 contentId,
245259 content,
260+ customRequestInit,
246261 } : UpdateRequest < T > ) : Promise < WriteApiRequestResult > => {
247262 if ( ! endpoint ) {
248263 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
249264 }
250265
251- const method : MakeRequest [ 'method' ] = 'PATCH' ;
252- const customHeaders : MakeRequest [ 'customHeaders' ] = {
253- 'Content-Type' : 'application/json' ,
266+ const requestInit : MakeRequest [ 'requestInit' ] = {
267+ ...customRequestInit ,
268+ method : 'PATCH' ,
269+ headers : {
270+ 'Content-Type' : 'application/json' ,
271+ } ,
272+ body : JSON . stringify ( content ) ,
254273 } ;
255- const customBody : MakeRequest [ 'customBody' ] = JSON . stringify ( content ) ;
256274
257275 return makeRequest ( {
258276 endpoint,
259277 contentId,
260- method,
261- customHeaders,
262- customBody,
278+ requestInit,
263279 } ) ;
264280 } ;
265281
@@ -269,6 +285,7 @@ export const createClient = ({
269285 const _delete = async ( {
270286 endpoint,
271287 contentId,
288+ customRequestInit,
272289 } : DeleteRequest ) : Promise < void > => {
273290 if ( ! endpoint ) {
274291 return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
@@ -278,9 +295,14 @@ export const createClient = ({
278295 return Promise . reject ( new Error ( 'contentId is required' ) ) ;
279296 }
280297
281- const method : MakeRequest [ 'method' ] = 'DELETE' ;
298+ const requestInit : MakeRequest [ 'requestInit' ] = {
299+ ...customRequestInit ,
300+ method : 'DELETE' ,
301+ headers : { } ,
302+ body : undefined ,
303+ } ;
282304
283- await makeRequest ( { endpoint, contentId, method } ) ;
305+ await makeRequest ( { endpoint, contentId, requestInit } ) ;
284306 } ;
285307
286308 return {
0 commit comments