UNPKG

api-wizard

Version:

A powerful TypeScript wrapper for native Fetch API with token management, interceptors, and type-safe HTTP requests

38 lines (37 loc) 1.63 kB
import { FetchClientImpl } from "./fetchClient"; import { InterceptedFetchClient } from "./interceptor"; import { fetchRequestConfig, createFetchDefaults } from "./config"; function instance(baseUrl, option) { const fetchDefaults = createFetchDefaults({ baseUrl, option, }); // 인터셉터가 있으면 InterceptedFetchClient, 없으면 기본 FetchClientImpl 사용 const fetchInstance = option?.interceptor ? new InterceptedFetchClient({ baseURL: fetchDefaults.baseURL, headers: fetchDefaults.headers, requestConfig: { credentials: fetchDefaults.credentials, ...fetchRequestConfig }, interceptor: option.interceptor }) : new FetchClientImpl({ baseURL: fetchDefaults.baseURL, headers: fetchDefaults.headers, requestConfig: { credentials: fetchDefaults.credentials, ...fetchRequestConfig } }); return { get: (url, config) => fetchInstance.get(url, { ...fetchRequestConfig, ...config }), post: (url, data, config) => fetchInstance.post(url, data, { ...fetchRequestConfig, ...config }), put: (url, data, config) => fetchInstance.put(url, data, { ...fetchRequestConfig, ...config }), patch: (url, data, config) => fetchInstance.patch(url, data, { ...fetchRequestConfig, ...config }), delete: (url, config) => fetchInstance.delete(url, { ...fetchRequestConfig, ...config }), getInstance: () => fetchInstance }; } export default instance;