@kubb/plugin-client
Version:
API client generator plugin for Kubb, creating type-safe HTTP clients (Axios, Fetch) from OpenAPI specifications for making API requests.
42 lines (41 loc) • 1.35 kB
JavaScript
// src/clients/fetch.ts
var _config = {};
var getConfig = () => _config;
var setConfig = (config) => {
_config = config;
return getConfig();
};
var client = async (paramsConfig) => {
const normalizedParams = new URLSearchParams();
const globalConfig = getConfig();
const config = { ...globalConfig, ...paramsConfig };
Object.entries(config.params || {}).forEach(([key, value]) => {
if (value !== void 0) {
normalizedParams.append(key, value === null ? "null" : value.toString());
}
});
let targetUrl = [config.baseURL, config.url].filter(Boolean).join("");
if (config.params) {
targetUrl += `?${normalizedParams}`;
}
const response = await fetch(targetUrl, {
credentials: config.credentials || "same-origin",
method: config.method?.toUpperCase(),
body: JSON.stringify(config.data),
signal: config.signal,
headers: config.headers
});
const data = [204, 205, 304].includes(response.status) || !response.body ? {} : await response.json();
return {
data,
status: response.status,
statusText: response.statusText,
headers: response.headers
};
};
client.getConfig = getConfig;
client.setConfig = setConfig;
var fetch_default = client;
export { client, fetch_default as default, getConfig, setConfig };
//# sourceMappingURL=fetch.js.map
//# sourceMappingURL=fetch.js.map