UNPKG

@kubb/plugin-client

Version:

API client generator plugin for Kubb, creating type-safe HTTP clients (Axios, Fetch) from OpenAPI specifications for making API requests.

58 lines (56 loc) 1.86 kB
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const require_chunk = require('../chunk-CNbaEX1y.cjs'); //#region src/clients/fetch.ts let _config = {}; const getConfig = () => _config; const setConfig = (config) => { _config = config; return getConfig(); }; const mergeConfig = (...configs) => { return configs.reduce((merged, config) => { return { ...merged, ...config, headers: { ...Array.isArray(merged.headers) ? Object.fromEntries(merged.headers) : merged.headers, ...Array.isArray(config.headers) ? Object.fromEntries(config.headers) : config.headers } }; }, {}); }; const client = async (paramsConfig) => { const normalizedParams = new URLSearchParams(); const config = mergeConfig(getConfig(), 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: config.data instanceof FormData ? config.data : JSON.stringify(config.data), signal: config.signal, headers: config.headers }); return { data: [ 204, 205, 304 ].includes(response.status) || !response.body ? {} : await response.json(), status: response.status, statusText: response.statusText, headers: response.headers }; }; client.getConfig = getConfig; client.setConfig = setConfig; //#endregion exports.client = client; exports.default = client; exports.getConfig = getConfig; exports.mergeConfig = mergeConfig; exports.setConfig = setConfig; //# sourceMappingURL=fetch.cjs.map