{"version":3,"sources":["../src/index.ts","../src/axios.ts","../src/config.ts","../src/http.ts","../src/useAxios.ts","../src/useCurdApi.ts"],"sourcesContent":["export * from './axios'\nexport * from './config'\nexport * from './http'\nexport * from './useAxios'\nexport * from './useCurdApi'\n","import type {\n  AxiosRequestConfig,\n} from 'axios'\nimport axios from 'axios'\nimport { config, setRequestConfig } from './config'\n\nfunction createService() {\n  return axios.create(config)\n}\n\nexport const service = createService()\n\n/**\n * @deprecated use createRequestConfig instead\n */\nexport function setOverrideConfig(userConfig: AxiosRequestConfig) {\n  const c = setRequestConfig(userConfig)\n  Object.assign(service.defaults, c)\n}\n\nexport * from 'axios'\n","import type { AxiosRequestConfig, Method } from 'axios'\nimport { merge } from 'lodash-es'\n\nexport type RequestConfig = AxiosRequestConfig & {\n  curd?: {\n    methods?: {\n      getList?: Method\n      getItem?: Method\n      createItem?: Method\n      updateItem?: Method\n      deleteItem?: Method\n      restoreItem?: Method\n    }\n  }\n}\n\n/**\n * @private\n * @description internal config\n */\nexport const config: RequestConfig = {\n  curd: {\n    methods: {\n      getList: 'get',\n      getItem: 'get',\n      createItem: 'post',\n      updateItem: 'put',\n      deleteItem: 'delete',\n      restoreItem: 'post',\n    },\n  },\n  baseURL: '/api',\n  headers: {\n    'Content-Type': 'application/json',\n  },\n  timeout: 5000,\n}\n\n/**\n * @description set request and curd api config\n */\nexport function setRequestConfig(userConfig: RequestConfig) {\n  Object.assign(config, merge(config, userConfig))\n  return config\n}\n","import type { AxiosRequestConfig } from 'axios'\nimport { service } from './axios'\n\nexport const http = {\n  get<T = any>(url: string, config: AxiosRequestConfig = {}) {\n    return service<any, T>(url, {\n      method: config.method || 'get',\n      ...config,\n    })\n  },\n  post<T = any>(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {\n    return service<any, T>(url, {\n      method: config.method || 'post',\n      data,\n      ...config,\n    })\n  },\n  put<T = any>(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {\n    return service<any, T>(url, {\n      method: config.method || 'put',\n      data,\n      ...config,\n    })\n  },\n  delete<T = any>(url: string, config: AxiosRequestConfig = {}) {\n    return service<any, T>(url, {\n      method: config.method || 'delete',\n      ...config,\n    })\n  },\n  patch<T = any>(url: string, data: any = undefined, config: AxiosRequestConfig = {}) {\n    return service<any, T>(url, {\n      method: config.method || 'patch',\n      data,\n      ...config,\n    })\n  },\n}\n","import type { AxiosInterceptorOptions, InternalAxiosRequestConfig } from 'axios'\nimport { service } from './axios'\n\n// 记录已注册的拦截器\nconst registeredRequestInterceptors = new Set<string>()\nconst registeredResponseInterceptors = new Set<string>()\n\nexport function useAxios() {\n  return {\n    service,\n    setRequestInterceptor(\n      onFulfilled: (value: InternalAxiosRequestConfig<any>) => InternalAxiosRequestConfig<any> | Promise<InternalAxiosRequestConfig<any>>,\n      onRejected?: (error: any) => any | null,\n      options?: AxiosInterceptorOptions,\n    ) {\n      const id = onFulfilled.toString() + onRejected?.toString() + JSON.stringify(options)\n      if (registeredRequestInterceptors.has(id))\n        return\n\n      service.interceptors.request.use(onFulfilled, onRejected, options)\n      registeredRequestInterceptors.add(id)\n    },\n    setResponseInterceptor(\n      onFulfilled: (value: any) => any | Promise<any>,\n      onRejected?: (error: any) => any | null,\n    ) {\n      const id = onFulfilled.toString() + onRejected?.toString()\n      if (registeredResponseInterceptors.has(id))\n        return\n\n      service.interceptors.response.use(onFulfilled, onRejected)\n      registeredResponseInterceptors.add(id)\n    },\n  }\n}\n","import type { AxiosRequestConfig } from 'axios'\nimport { http } from './http'\n\nexport type ApiMethod<TParams = any, TResponse = any> = (\n  ...args: TParams[]\n) => Promise<TResponse>\n\nexport type MoreApis = Record<string, ApiMethod>\n\nexport interface BaseCurdApi<T = any, P = any> {\n  getList: (params?: Record<string, any>, config?: AxiosRequestConfig) => Promise<{ data: T[], pagination: P }>\n  getItem: (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => Promise<T>\n  createItem: (data: Record<string, any>, config?: AxiosRequestConfig) => Promise<T>\n  updateItem: (id: string | number, data: Record<string, any>, config?: AxiosRequestConfig) => Promise<T>\n  deleteItem: (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => Promise<any>\n  restoreItem: (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => Promise<any>\n  getUrl: () => string\n}\n\nexport type CurdApi<\n  T = any,\n  P = any,\n  M extends MoreApis = MoreApis,\n> = BaseCurdApi<T, P> & M\n\nexport function useCurdApi<\n  T = any,\n  P = any,\n  M extends MoreApis = MoreApis,\n>(url: string | (() => string), moreApis?: M): CurdApi<T, P, M> {\n  const getUrl = () => {\n    if (typeof url === 'function') {\n      return url()\n    }\n    return url\n  }\n\n  const getList = async (params?: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.get<{\n        data: T[]\n        pagination: P\n      }>(getUrl(), { params, ...config })\n\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  const getItem = async (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.get<T>(`${getUrl()}/${id}`, { params, ...config })\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  const createItem = async (data: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.post<T>(getUrl(), data, config)\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  const updateItem = async (id: string | number, data: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.post<T>(`${getUrl()}/${id}`, data, config)\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  const deleteItem = async (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.delete(`${getUrl()}/${id}`, { params, ...config })\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  const restoreItem = async (id: string | number, params?: Record<string, any>, config?: AxiosRequestConfig) => {\n    try {\n      const res = await http.patch<T>(`${getUrl()}/${id}`, {}, { params, ...config })\n      return Promise.resolve(res)\n    }\n    catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  return {\n    getList,\n    getItem,\n    createItem,\n    updateItem,\n    deleteItem,\n    restoreItem,\n    getUrl,\n    ...moreApis,\n  } as CurdApi<T, P, M>\n}\n\nexport function extendCurdApi<\n  T,\n  M extends MoreApis,\n  N extends MoreApis,\n>(baseCurd: CurdApi<T, any, M>, newApis: N): CurdApi<T, any, M & N> {\n  return Object.assign(baseCurd, newApis)\n}\n"],"mappings":"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","names":["config","config"]}