UNPKG

@uozi-admin/request

Version:

Easy to create curd request functions.

1 lines 11.1 kB
{"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"]}