@openapi-qraft/react
Version:
OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.
52 lines (49 loc) • 1.79 kB
JavaScript
;
/**
* Processes the response from the server.
* @beta
*/ async function processResponse(response) {
if (response.status === 204 || response.headers.get('Content-Length') === '0') return response.ok ? {
data: null,
response
} : {
error: null,
response
};
const contentType = response.headers.get('Content-Type')?.toLowerCase();
const isJsonResponse = contentType?.includes('/json') || contentType?.includes('+json');
if (isJsonResponse) {
// clone response before parsing every time to allow multiple reads
const jsonResponse = response.clone().json();
return resolveResponse(response, response.ok ? jsonResponse : Promise.reject(await jsonResponse));
}
const textResponse = response.clone().text();
return resolveResponse(response, response.ok ? textResponse : Promise.reject(await textResponse));
}
function resolveResponse(responseToReturn, responsePromise) {
if (!responsePromise) {
if (responseToReturn instanceof Response) {
return Promise.resolve({
error: new Error('Unhandled response without promise to resolve'),
response: responseToReturn,
data: undefined
});
} else {
return Promise.resolve({
error: responseToReturn,
response: undefined,
data: undefined
});
}
}
return responsePromise.then((data)=>({
data,
response: responseToReturn
})).catch((error)=>({
error,
response: responseToReturn
}));
}
exports.processResponse = processResponse;
exports.resolveResponse = resolveResponse;
//# sourceMappingURL=responseUtils.cjs.map