@qxs-bns/utils 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.mjs +1 -1
- package/es/src/api-client/axios-client.mjs +2 -0
- package/es/src/api-client/axios-client.mjs.map +1 -0
- package/es/src/api-client/fetch-client.mjs +2 -0
- package/es/src/api-client/fetch-client.mjs.map +1 -0
- package/es/src/oss-uploader.mjs +1 -1
- package/es/src/oss-uploader.mjs.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/src/api-client/axios-client.cjs +2 -0
- package/lib/src/api-client/axios-client.cjs.map +1 -0
- package/lib/src/api-client/fetch-client.cjs +2 -0
- package/lib/src/api-client/fetch-client.cjs.map +1 -0
- package/lib/src/oss-uploader.cjs +1 -1
- package/lib/src/oss-uploader.cjs.map +1 -1
- package/package.json +6 -2
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/src/{use-api.d.ts → api-client/axios-client.d.ts} +7 -44
- package/types/src/api-client/axios-client.d.ts.map +1 -0
- package/types/src/api-client/fetch-client.d.ts +56 -0
- package/types/src/api-client/fetch-client.d.ts.map +1 -0
- package/types/src/api-client/index.d.ts +4 -0
- package/types/src/api-client/index.d.ts.map +1 -0
- package/types/src/api-client/types.d.ts +56 -0
- package/types/src/api-client/types.d.ts.map +1 -0
- package/types/src/oss-uploader.d.ts +4 -0
- package/types/src/oss-uploader.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
- package/es/src/use-api.mjs +0 -2
- package/es/src/use-api.mjs.map +0 -1
- package/lib/src/use-api.cjs +0 -2
- package/lib/src/use-api.cjs.map +0 -1
- package/types/src/use-api.d.ts.map +0 -1
package/es/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{ArgoLog}from"./src/argo-log.mjs";export{formatDuration}from"./src/date-transfer.mjs";export{getDeviceType,isAndroid,isIOS,isMobile}from"./src/device.mjs";export{createVideoUploader,downloadFile}from"./src/file-operations.mjs";export{JsonToExcel,excelToJson}from"./src/json.mjs";export{OssError,OssUploader,generateSignedUrl,uploadFile}from"./src/oss-uploader.mjs";export{Storage}from"./src/storage.mjs";export{isBoolean,isElement,isImageByMimeType,isJSONString,isNumber,isPlainObject,isUndefined,isWindow}from"./src/types.mjs";export{
|
|
1
|
+
export{ApiService}from"./src/api-client/axios-client.mjs";export{ApiError,FetchApiService}from"./src/api-client/fetch-client.mjs";export{ArgoLog}from"./src/argo-log.mjs";export{formatDuration}from"./src/date-transfer.mjs";export{getDeviceType,isAndroid,isIOS,isMobile}from"./src/device.mjs";export{createVideoUploader,downloadFile}from"./src/file-operations.mjs";export{JsonToExcel,excelToJson}from"./src/json.mjs";export{OssError,OssUploader,generateSignedUrl,getClient,uploadFile}from"./src/oss-uploader.mjs";export{Storage}from"./src/storage.mjs";export{isBoolean,isElement,isImageByMimeType,isJSONString,isNumber,isPlainObject,isUndefined,isWindow}from"./src/types.mjs";export{watermark}from"./src/watermark.mjs";
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isPlainObject as e}from"../types.mjs";var s=Object.defineProperty,t=(e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r);const r=class s{constructor(e,r){var i=this;if(this.apiInstance=e,this.isWholeResponse=r,t(this,"useApi",async function(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.isWholeResponse,r=null,o=null;try{const o={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};o.url=(o.proxyPrefix||"")+e.url,delete o.proxyPrefix;const n=await i.apiInstance(o);r=t?n.data:n.data.data}catch(e){"AxiosError"!==e.name?i.isAxiosResponse(e)?o=e.data:i.isErrorResponse(e)&&(o=e):console.error(e)}return{res:r,error:o}}),t(this,"apiClient",async(e,s,t)=>{t??this.isWholeResponse;const r={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};return r.proxyPrefix&&(r.url=(r.proxyPrefix||"")+e.url,delete r.proxyPrefix),await this.apiInstance(r)}),s.instance)return s.instance;s.instance=this,this.isWholeResponse=r}isBusinessError(s){return e(s)&&"string"==typeof s.message&&"number"==typeof s.code&&0!==s.code}isAxiosResponse(s){return e(s)&&void 0!==s.data&&this.isBusinessError(s.data)&&void 0!==s.status&&void 0!==s.statusText&&void 0!==s.headers&&void 0!==s.config&&void 0!==s.request}isErrorResponse(e){return"code"in e&&"data"in e&&"message"in e&&0!==e.code}};t(r,"instance");let i=r;export{i as ApiService};
|
|
2
|
+
//# sourceMappingURL=axios-client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-client.mjs","sources":["../../../../../packages/utils/src/api-client/axios-client.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n} from './types'\nimport { isPlainObject } from '../types'\n\n// 重新导出共享类型\nexport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n Method,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n UseApiResponse,\n} from './types'\n\n/**\n * 成功响应的基础约束接口\n * @template T - 响应数据的类型\n */\nexport interface BaseSuccessResponse<T = unknown> {\n data: T\n [key: string]: any\n}\n\n/**\n * 成功响应的数据结构(默认实现)\n * @template T - 响应数据的类型\n */\nexport interface SuccessResponse<T> extends BaseSuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * Axios 专用的 API 响应封装(支持完整响应选项)\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n */\nexport interface AxiosUseApiResponse<\n W extends boolean = false,\n T = unknown,\n S extends BaseSuccessResponse<T> = SuccessResponse<T>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n res: W extends true ? S : T\n error: E | null\n}\n\n/**\n * API 服务类,提供统一的请求处理和错误处理\n * @template T - API 类型映射\n * @template U - URL 配置对象类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n *\n * @example\n * ```typescript\n * // 定义 API 类型映射\n * interface UserApi extends ApiTypeMap<UserUrlObject> {\n * '/user/list': {\n * request: { page: number; size: number }\n * response: User[]\n * }\n * }\n *\n * // 使用默认响应类型\n * const api = new ApiService<UserApi, UserUrlObject>(axios.create(), false)\n *\n * // 使用自定义响应类型\n * interface CustomSuccessResponse<T> {\n * status: number\n * result: T\n * msg: string\n * }\n *\n * interface CustomErrorResponse {\n * status: number\n * result: null\n * msg: string\n * }\n *\n * const customApi = new ApiService<\n * UserApi,\n * UserUrlObject,\n * CustomSuccessResponse<unknown>,\n * CustomErrorResponse\n * >(axios.create(), false)\n *\n * // 发起请求\n * const { res, error } = await api.useApi({\n * url: '/user/list',\n * method: 'GET',\n * params: { page: 1, size: 10 }\n * })\n * ```\n */\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n S extends BaseSuccessResponse = SuccessResponse<unknown>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: ApiService<any, any, any, any>\n\n /**\n * 构造函数,实现单例模式\n * @param apiInstance - Axios 实例\n * @param isWholeResponse - 是否返回完整响应\n */\n constructor(\n private apiInstance: AxiosInstance,\n private isWholeResponse: boolean,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U, S, E>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: E): boolean {\n return isPlainObject(obj)\n && typeof (obj as any).message === 'string'\n && typeof (obj as any).code === 'number'\n && (obj as any).code !== 0\n }\n\n /**\n * 判断是否为 Axios 响应对象\n * @param value - 待判断的值\n */\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n /**\n * 判断是否为错误响应\n * @param value - 待判断的值\n */\n private isErrorResponse(value: any): value is E {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应,true 返回 SuccessResponse,false 只返回 data\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数(GET 请求会自动转为 params,其他方法转为 data)\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns Promise<UseApiResponse<W, T, S, E>> - 包含 res 和 error 的统一响应对象\n */\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse: W = this.isWholeResponse as W,\n ): Promise<AxiosUseApiResponse<W, T[K['url']]['response'], S, E>> => {\n let res: AxiosUseApiResponse<W, T[K['url']]['response'], S, E>['res'] | null = null\n let error: AxiosUseApiResponse<W, T[K['url']]['response'], S, E>['error'] = null\n\n try {\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n // 发起请求\n const response = await this.apiInstance<S & { data: T[K['url']]['response'] }>(config)\n res = isWholeResponse\n ? (response.data as any)\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data as E\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n\n /**\n * 发起 API 请求\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns 根据 isWholeResponse 返回完整响应或解包后的数据\n */\n public apiClient = async <K extends U, W extends boolean = false>(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<W extends true ? AxiosResponse<T[K['url']]['response']> : T[K['url']]['response']> => {\n const useWholeResponse = isWholeResponse ?? this.isWholeResponse\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n if (config.proxyPrefix) {\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n }\n\n // 发起请求,利用 axios 的第二个泛型参数 R 控制解包\n if (useWholeResponse) {\n return await this.apiInstance<T[K['url']]['response']>(config)\n }\n else {\n return await this.apiInstance<any, T[K['url']]['response']>(config)\n }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","isWholeResponse","_this","this","__publicField","async","axiosConfig","params","arguments","length","undefined","res","error","config","method","includes","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":"uMA4GO,MAAMA,EAAN,MAAMA,EAaXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAEmE,IADnEN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAA2E,KAC3EC,EAAwE,KAE5E,IAEE,MAAMC,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAI5HM,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,YAGd,MAAMC,QAAiBlB,EAAKF,YAAmDa,GAC/EF,EAAMV,EACDmB,EAASH,KACVG,EAASH,KAAKA,IACpB,OACOI,GAEY,eAAbA,EAAIC,KACFpB,EAAKqB,gBAAgBF,GACvBT,EAAQS,EAAIJ,KAELf,EAAKsB,gBAAgBH,KAC5BT,EAAQS,GAIVI,QAAQb,MAAMS,EAElB,CAEA,MAAO,CAAEV,MAAWC,QACtB,GAWAR,EAAAD,KAAO,YAAYE,MACjBC,EAGAC,EACAN,KAEyBA,GAAmBE,KAAKF,gBAAjD,MAEMY,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAU5H,OANIM,EAAOM,cACTN,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,mBAKDhB,KAAKH,YAAqCa,KAjIrDf,EAAW4B,SACb,OAAO5B,EAAW4B,SAEpB5B,EAAW4B,SAAWvB,KACtBA,KAAKF,gBAAkBA,CACzB,CAMQ0B,eAAAA,CAAgBC,GACtB,OAAOC,EAAcD,IACgB,iBAAxBA,EAAYE,SACS,iBAArBF,EAAYG,MACE,IAArBH,EAAYG,IACpB,CAMQR,eAAAA,CAAgBS,GACtB,OAAOH,EAAcG,SACD,IAAfA,EAAMf,MACNd,KAAKwB,gBAAgBK,EAAMf,YACV,IAAjBe,EAAMC,aACe,IAArBD,EAAME,iBACY,IAAlBF,EAAMG,cACW,IAAjBH,EAAMnB,aACY,IAAlBmB,EAAMI,OACb,CAMQZ,eAAAA,CAAgBQ,GACtB,MAAO,SAAUA,GAAS,SAAUA,GAAS,YAAaA,GAAwB,IAAfA,EAAMD,IAC3E,GAlDA3B,EANWN,EAMI,YANV,IAAMuC,EAANvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e=Object.defineProperty,t=(t,s,a)=>((t,s,a)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[s]=a)(t,"symbol"!=typeof s?s+"":s,a);class s extends Error{constructor(e,s,a,r){super(s),t(this,"code"),t(this,"details"),t(this,"status"),this.name="ApiError",this.code=e,this.status=a,this.details=r}}const a=class e{constructor(a){if(this.client=a,t(this,"useApi",async(e,t)=>{let a=null,r=null;try{const{url:s,method:r,proxyPrefix:o,params:n,data:i,...c}=e,l=(o||"")+s,d={...c,method:r.toLowerCase()},h=t||n,u=t||i;"GET"===r.toUpperCase()&&h?d.searchParams=h:u&&(d.json=u);const m=await this.client(l,d);a=(m.headers.get("content-type")??"").toLowerCase().includes("text/event-stream")?m.body:await m.json()}catch(e){r=e instanceof s?{code:e.code,message:e.message,details:e.details}:{code:"UNKNOWN_ERROR",message:e.message||"Unknown error"}}return{res:a,error:r}}),t(this,"apiClient",async(e,t)=>{const{url:s,method:a,proxyPrefix:r,params:o,data:n,...i}=e,c=(r||"")+s,l={...i,method:a.toLowerCase(),throwOnError:!0},d=t||o,h=t||n;"GET"===a.toUpperCase()&&d?l.searchParams=d:h&&(l.json=h);const u=await this.client(c,l);return(u.headers.get("content-type")??"").toLowerCase().includes("text/event-stream")?u.body:await u.json()}),e.instance)return e.instance;e.instance=this}};t(a,"instance");let r=a;export{s as ApiError,r as FetchApiService};
|
|
2
|
+
//# sourceMappingURL=fetch-client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.mjs","sources":["../../../../../packages/utils/src/api-client/fetch-client.ts"],"sourcesContent":["import type { Options } from 'ky'\nimport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n UseApiResponse,\n} from './types'\n\n/**\n * 扩展的 API 请求配置选项\n */\ninterface ExtendedOptions extends Options {\n /** 内部标记:是否为重试请求 @internal */\n _isRetry?: boolean\n /** 静默模式:401 错误不弹出登录弹窗 @default false */\n _silent?: boolean\n /** 操作上下文:用于登录弹窗说明 */\n _actionContext?: string\n /** 错误处理策略:是否抛出错误 @default false */\n throwOnError?: boolean\n}\n\n/**\n * 自定义 API 错误类\n */\nexport class ApiError extends Error {\n code: string\n details?: string\n status: number\n\n constructor(code: string, message: string, status: number, details?: string) {\n super(message)\n this.name = 'ApiError'\n this.code = code\n this.status = status\n this.details = details\n }\n}\n\n// ============================================================================\n// Fetch API 服务类\n// ============================================================================\n\n/**\n * Fetch API 服务类,基于 ky 提供统一的请求处理\n */\nexport class FetchApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: FetchApiService<any, any, any>\n\n constructor(private client: any) {\n if (FetchApiService.instance) {\n return FetchApiService.instance as FetchApiService<T, U, E>\n }\n FetchApiService.instance = this\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @param config - 请求配置\n * @param params - 请求参数(GET 用 params,POST 等用 data)\n * @returns Promise<{ res, error }> - 统一响应格式\n */\n public useApi = async <K extends U>(\n config: Omit<ExtendedOptions, 'method'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n data?: RequestPayload<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']> | RequestPayload<T[K['url']]['request']>,\n ): Promise<UseApiResponse<T[K['url']]['response'], E>> => {\n let res: T[K['url']]['response'] | null = null\n let error: E | null = null\n\n try {\n // 构建请求配置\n const { url, method, proxyPrefix, params: configParams, data: configData, ...restOptions } = config\n const fullUrl = (proxyPrefix || '') + url\n\n const options: ExtendedOptions = {\n ...restOptions,\n method: method.toLowerCase() as any,\n }\n\n // 处理请求参数(优先使用第二个参数 params)\n const finalParams = params || configParams\n const finalData = params || configData\n\n if (method.toUpperCase() === 'GET' && finalParams) {\n (options as any).searchParams = finalParams\n }\n else if (finalData) {\n (options as any).json = finalData\n }\n\n // 发起请求\n const response = await this.client(fullUrl, options)\n\n // 处理 SSE 流式响应\n const contentType = response.headers.get('content-type') ?? ''\n if (contentType.toLowerCase().includes('text/event-stream')) {\n res = response.body as any\n }\n else {\n res = await response.json()\n }\n }\n catch (err: any) {\n // 错误已在 ky hooks 中处理,这里只需捕获\n if (err instanceof ApiError) {\n error = {\n code: err.code,\n message: err.message,\n details: err.details,\n } as unknown as E\n }\n else {\n error = {\n code: 'UNKNOWN_ERROR',\n message: err.message || 'Unknown error',\n } as unknown as E\n }\n }\n\n return { res, error }\n }\n\n /**\n * 发起 API 请求,直接返回数据或抛出错误\n * @template K - URL 配置对象类型\n * @param config - 请求配置\n * @param params - 请求参数(GET 用 params,POST 等用 data)\n * @returns Promise<Response> - 直接返回响应数据\n */\n public apiClient = async <K extends U>(\n config: Omit<ExtendedOptions, 'method'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n data?: RequestPayload<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']> | RequestPayload<T[K['url']]['request']>,\n ): Promise<T[K['url']]['response']> => {\n const { url, method, proxyPrefix, params: configParams, data: configData, ...restOptions } = config\n const fullUrl = (proxyPrefix || '') + url\n\n const options: ExtendedOptions = {\n ...restOptions,\n method: method.toLowerCase() as any,\n throwOnError: true,\n }\n\n // 处理请求参数(优先使用第二个参数 params)\n const finalParams = params || configParams\n const finalData = params || configData\n\n if (method.toUpperCase() === 'GET' && finalParams) {\n (options as any).searchParams = finalParams\n }\n else if (finalData) {\n (options as any).json = finalData\n }\n\n // 发起请求\n const response = await this.client(fullUrl, options)\n\n // 处理 SSE 流式响应\n const contentType = response.headers.get('content-type') ?? ''\n if (contentType.toLowerCase().includes('text/event-stream')) {\n return response.body as any\n }\n\n return await response.json()\n }\n}\n"],"names":["ApiError","Error","constructor","code","message","status","details","super","__publicField","this","name","_FetchApiService","client","async","config","params","res","error","url","method","proxyPrefix","configParams","data","configData","restOptions","fullUrl","options","toLowerCase","finalParams","finalData","toUpperCase","searchParams","json","response","headers","get","includes","body","err","throwOnError","instance","FetchApiService"],"mappings":"0JA4BO,MAAMA,UAAiBC,MAK5BC,WAAAA,CAAYC,EAAcC,EAAiBC,EAAgBC,GACzDC,MAAMH,GALRI,EAAAC,KAAA,QACAD,EAAAC,KAAA,WACAD,EAAAC,KAAA,UAIEA,KAAKC,KAAO,WACZD,KAAKN,KAAOA,EACZM,KAAKJ,OAASA,EACdI,KAAKH,QAAUA,CACjB,EAUK,MAAMK,EAAN,MAAMA,EAOXT,WAAAA,CAAoBU,GAClB,GADkBH,KAAAG,OAAAA,EAcpBJ,EAAAC,KAAO,SAASI,MACdC,EAIAC,KAEA,IAAIC,EAAsC,KACtCC,EAAkB,KAEtB,IAEE,MAAMC,IAAEA,EAAAC,OAAKA,EAAAC,YAAQA,EAAaL,OAAQM,EAAcC,KAAMC,KAAeC,GAAgBV,EACvFW,GAAWL,GAAe,IAAMF,EAEhCQ,EAA2B,IAC5BF,EACHL,OAAQA,EAAOQ,eAIXC,EAAcb,GAAUM,EACxBQ,EAAYd,GAAUQ,EAEC,QAAzBJ,EAAOW,eAA2BF,EACnCF,EAAgBK,aAAeH,EAEzBC,IACNH,EAAgBM,KAAOH,GAI1B,MAAMI,QAAiBxB,KAAKG,OAAOa,EAASC,GAK1CV,GAFkBiB,EAASC,QAAQC,IAAI,iBAAmB,IAC5CR,cAAcS,SAAS,qBAC/BH,EAASI,WAGHJ,EAASD,MAEzB,OACOM,GAGHrB,EADEqB,aAAetC,EACT,CACNG,KAAMmC,EAAInC,KACVC,QAASkC,EAAIlC,QACbE,QAASgC,EAAIhC,SAIP,CACNH,KAAM,gBACNC,QAASkC,EAAIlC,SAAW,gBAG9B,CAEA,MAAO,CAAEY,MAAKC,WAUhBT,EAAAC,KAAO,YAAYI,MACjBC,EAIAC,KAEA,MAAMG,IAAEA,EAAAC,OAAKA,EAAAC,YAAQA,EAAaL,OAAQM,EAAcC,KAAMC,KAAeC,GAAgBV,EACvFW,GAAWL,GAAe,IAAMF,EAEhCQ,EAA2B,IAC5BF,EACHL,OAAQA,EAAOQ,cACfY,cAAc,GAIVX,EAAcb,GAAUM,EACxBQ,EAAYd,GAAUQ,EAEC,QAAzBJ,EAAOW,eAA2BF,EACnCF,EAAgBK,aAAeH,EAEzBC,IACNH,EAAgBM,KAAOH,GAI1B,MAAMI,QAAiBxB,KAAKG,OAAOa,EAASC,GAI5C,OADoBO,EAASC,QAAQC,IAAI,iBAAmB,IAC5CR,cAAcS,SAAS,qBAC9BH,EAASI,WAGLJ,EAASD,SAvHlBrB,EAAgB6B,SAClB,OAAO7B,EAAgB6B,SAEzB7B,EAAgB6B,SAAW/B,IAC7B,GAPAD,EALWG,EAKI,YALV,IAAM8B,EAAN9B"}
|
package/es/src/oss-uploader.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"ali-oss";var t=Object.defineProperty,s=(e,s,i)=>((e,s,i)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[s]=i)(e,"symbol"!=typeof s?s+"":s,i);class i extends Error{constructor(e){super(e),this.name="OssError"}}const
|
|
1
|
+
import e from"ali-oss";var t=Object.defineProperty,s=(e,s,i)=>((e,s,i)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[s]=i)(e,"symbol"!=typeof s?s+"":s,i);class i extends Error{constructor(e){super(e),this.name="OssError"}}const n={accessKeyId:"",accessKeySecret:"",stsToken:"",secure:!0,bucket:"yao-file-daily",region:"oss-cn-hangzhou",timeout:6e4};class r{static async getOssCredentials(e){const t=await e();if(!t)throw new i("获取凭证失败");return t}static getClientKey(e){return`${e.endpoint||""}-${e.region||n.region}-${e.bucket||n.bucket}`}static async initOssClient(t,s){const r=this.getClientKey(t),a=this.clients.get(r),c=Date.now();if(a&&c-a.createTime<this.expireTime)return a.client;try{const{accessKeyId:i,accessKeySecret:a,securityToken:o,bucket:l,region:d,endpoint:u,cname:g,secure:h,timeout:y}=t,p={...n,accessKeyId:i,accessKeySecret:a,stsToken:o,bucket:l||n.bucket,region:d||n.region,endpoint:u,cname:g,secure:void 0!==h?h:n.secure,timeout:y||n.timeout,refreshSTSToken:async()=>{const e=await this.getOssCredentials(s);return{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,stsToken:e.securityToken}},refreshSTSTokenInterval:3e5},w=new e(p);return this.clients.set(r,{client:w,createTime:c,credentials:t}),w}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async getClient(e){const{getCredentials:t}=e,s=await this.getOssCredentials(t);return await this.initOssClient(s,t)}static async uploadFile(e){const{file:t,onProgress:s=()=>{},path:n,headers:r,getCredentials:a}=e,c=await this.getOssCredentials(a),o=await this.initOssClient(c,a);try{const e=n||c.path||"ksh/pdf",i=e&&/\.\w+$/.test(e)?e:`${e}/${t.name}`,a=r||c.headers,l={progress(e){const t=Math.round(100*e);s({percent:t})}};a&&(l.headers=a);return await o.multipartUpload(i,t,l)}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e){const{objectKey:t,getCredentials:s,expires:n=3600}=e,r=await this.getOssCredentials(s),a=await this.initOssClient(r,s);try{return await a.signatureUrl(t,{expires:n})}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static clearExpiredClients(){const e=Date.now();for(const[t,s]of this.clients.entries())e-s.createTime>=this.expireTime&&this.clients.delete(t)}static clearAllClients(){this.clients.clear()}}s(r,"clients",new Map),s(r,"expireTime",9e5);const a=r.getClient.bind(r),c=r.uploadFile.bind(r),o=r.generateSignedUrl.bind(r);export{i as OssError,r as OssUploader,o as generateSignedUrl,a as getClient,c as uploadFile};
|
|
2
2
|
//# sourceMappingURL=oss-uploader.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oss-uploader.mjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\n// OSS 凭证和配置(由 getCredentials 返回)\nexport interface OssCredentialsConfig {\n // 必需的凭证\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n\n // OSS 配置\n bucket?: string\n region?: string\n endpoint?: string\n cname?: boolean\n secure?: boolean\n timeout?: number\n\n // 上传相关配置\n path?: string // 上传路径/对象键\n headers?: Record<string, string> // 自定义 headers(如 OSS 回调)\n}\n\n// uploadFile 的参数(补充性参数)\nexport interface UploadFileOptions {\n file: File\n getCredentials: () => Promise<OssCredentialsConfig | null>\n onProgress?: (p: { percent: number }) => void\n\n // 以下参数可以覆盖 getCredentials 返回的配置\n path?: string\n headers?: Record<string, string>\n}\n\n// generateSignedUrl 的参数\nexport interface GenerateSignedUrlOptions {\n objectKey: string\n getCredentials: () => Promise<OssCredentialsConfig | null>\n expires?: number // 过期时间(秒)\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OSS.Options = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n timeout: 60000,\n}\n\nexport class OssUploader {\n // 使用 Map 缓存不同配置的 client\n private static clients: Map<string, { client: OSS, createTime: number, credentials: OssCredentialsConfig }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证配置\n private static async getOssCredentials(getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OssCredentialsConfig> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return credentials\n }\n\n // 生成 client 缓存 key\n private static getClientKey(config: OssCredentialsConfig): string {\n const endpoint = config.endpoint || ''\n const region = config.region || ossConfig.region\n const bucket = config.bucket || ossConfig.bucket\n return `${endpoint}-${region}-${bucket}`\n }\n\n // 初始化 OSS Client\n private static async initOssClient(credentialsConfig: OssCredentialsConfig, getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OSS> {\n const clientKey = this.getClientKey(credentialsConfig)\n const cached = this.clients.get(clientKey)\n const now = Date.now()\n\n // 检查缓存是否有效\n if (cached && (now - cached.createTime) < this.expireTime) {\n return cached.client\n }\n\n try {\n const { accessKeyId, accessKeySecret, securityToken, bucket, region, endpoint, cname, secure, timeout } = credentialsConfig\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n accessKeyId,\n accessKeySecret,\n stsToken: securityToken,\n bucket: bucket || ossConfig.bucket,\n region: region || ossConfig.region,\n endpoint,\n cname,\n secure: secure !== undefined ? secure : ossConfig.secure,\n timeout: timeout || ossConfig.timeout,\n refreshSTSToken: async () => {\n const creds = await this.getOssCredentials(getCredentials)\n return {\n accessKeyId: creds.accessKeyId,\n accessKeySecret: creds.accessKeySecret,\n stsToken: creds.securityToken,\n }\n },\n refreshSTSTokenInterval: 300000,\n }\n\n // 创建新 client\n const client = new OSS(finalConfig)\n\n // 缓存 client\n this.clients.set(clientKey, {\n client,\n createTime: now,\n credentials: credentialsConfig,\n })\n\n return client\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 上传文件方法\n public static async uploadFile(opts: UploadFileOptions): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path, headers, getCredentials } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n // 确定上传路径:优先使用 opts.path,其次使用 credentialsConfig.path,最后使用默认值\n const uploadPath = path || credentialsConfig.path || 'ksh/pdf'\n\n // 确定上传的对象键\n const uploadKey = (() => {\n // 1. 判断 path 是否已经是完整路径(带文件后缀)\n if (uploadPath && /\\.\\w+$/.test(uploadPath)) {\n return uploadPath\n }\n\n // 2. 否则使用 path + filename 组合\n return `${uploadPath}/${file.name}`\n })()\n\n // 确定 headers:优先使用 opts.headers,其次使用 credentialsConfig.headers\n const finalHeaders = headers || credentialsConfig.headers\n\n // 构建上传选项\n const uploadOptions: OSS.MultipartUploadOptions = {\n progress(p: number) {\n const percent = Math.round(p * 100)\n onProgress({ percent })\n },\n }\n\n // 如果有自定义 headers,添加到上传选项中\n if (finalHeaders) {\n uploadOptions.headers = finalHeaders\n }\n\n const result = await client.multipartUpload(uploadKey, file, uploadOptions)\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 生成签名URL方法\n public static async generateSignedUrl(opts: GenerateSignedUrlOptions): Promise<string> {\n const { objectKey, getCredentials, expires = 3600 } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n return await client.signatureUrl(objectKey, { expires })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 清理过期的 client 缓存\n public static clearExpiredClients(): void {\n const now = Date.now()\n for (const [key, value] of this.clients.entries()) {\n if (now - value.createTime >= this.expireTime) {\n this.clients.delete(key)\n }\n }\n }\n\n // 清理所有缓存\n public static clearAllClients(): void {\n this.clients.clear()\n }\n}\n\n// 导出便捷方法\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","super","this","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","timeout","OssUploader","getOssCredentials","getCredentials","credentials","getClientKey","config","endpoint","initOssClient","credentialsConfig","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","cname","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","uploadFile","opts","file","onProgress","path","headers","uploadPath","uploadKey","test","finalHeaders","uploadOptions","progress","p","percent","Math","round","multipartUpload","generateSignedUrl","objectKey","expires","signatureUrl","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oss-uploader.mjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\n// OSS 凭证和配置(由 getCredentials 返回)\nexport interface OssCredentialsConfig {\n // 必需的凭证\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n\n // OSS 配置\n bucket?: string\n region?: string\n endpoint?: string\n cname?: boolean\n secure?: boolean\n timeout?: number\n\n // 上传相关配置\n path?: string // 上传路径/对象键\n headers?: Record<string, string> // 自定义 headers(如 OSS 回调)\n}\n\n// uploadFile 的参数(补充性参数)\nexport interface UploadFileOptions {\n file: File\n getCredentials: () => Promise<OssCredentialsConfig | null>\n onProgress?: (p: { percent: number }) => void\n\n // 以下参数可以覆盖 getCredentials 返回的配置\n path?: string\n headers?: Record<string, string>\n}\n\n// generateSignedUrl 的参数\nexport interface GenerateSignedUrlOptions {\n objectKey: string\n getCredentials: () => Promise<OssCredentialsConfig | null>\n expires?: number // 过期时间(秒)\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OSS.Options = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n timeout: 60000,\n}\n\nexport class OssUploader {\n // 使用 Map 缓存不同配置的 client\n private static clients: Map<string, { client: OSS, createTime: number, credentials: OssCredentialsConfig }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证配置\n private static async getOssCredentials(getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OssCredentialsConfig> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return credentials\n }\n\n // 生成 client 缓存 key\n private static getClientKey(config: OssCredentialsConfig): string {\n const endpoint = config.endpoint || ''\n const region = config.region || ossConfig.region\n const bucket = config.bucket || ossConfig.bucket\n return `${endpoint}-${region}-${bucket}`\n }\n\n // 初始化 OSS Client\n private static async initOssClient(credentialsConfig: OssCredentialsConfig, getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OSS> {\n const clientKey = this.getClientKey(credentialsConfig)\n const cached = this.clients.get(clientKey)\n const now = Date.now()\n\n // 检查缓存是否有效\n if (cached && (now - cached.createTime) < this.expireTime) {\n return cached.client\n }\n\n try {\n const { accessKeyId, accessKeySecret, securityToken, bucket, region, endpoint, cname, secure, timeout } = credentialsConfig\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n accessKeyId,\n accessKeySecret,\n stsToken: securityToken,\n bucket: bucket || ossConfig.bucket,\n region: region || ossConfig.region,\n endpoint,\n cname,\n secure: secure !== undefined ? secure : ossConfig.secure,\n timeout: timeout || ossConfig.timeout,\n refreshSTSToken: async () => {\n const creds = await this.getOssCredentials(getCredentials)\n return {\n accessKeyId: creds.accessKeyId,\n accessKeySecret: creds.accessKeySecret,\n stsToken: creds.securityToken,\n }\n },\n refreshSTSTokenInterval: 300000,\n }\n\n // 创建新 client\n const client = new OSS(finalConfig)\n\n // 缓存 client\n this.clients.set(clientKey, {\n client,\n createTime: now,\n credentials: credentialsConfig,\n })\n\n return client\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 获取 OSS Client(用于手动控制上传流程)\n public static async getClient(opts: {\n getCredentials: () => Promise<OssCredentialsConfig | null>\n }): Promise<OSS> {\n const { getCredentials } = opts\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n return await this.initOssClient(credentialsConfig, getCredentials)\n }\n\n // 上传文件方法\n public static async uploadFile(opts: UploadFileOptions): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path, headers, getCredentials } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n // 确定上传路径:优先使用 opts.path,其次使用 credentialsConfig.path,最后使用默认值\n const uploadPath = path || credentialsConfig.path || 'ksh/pdf'\n\n // 确定上传的对象键\n const uploadKey = (() => {\n // 1. 判断 path 是否已经是完整路径(带文件后缀)\n if (uploadPath && /\\.\\w+$/.test(uploadPath)) {\n return uploadPath\n }\n\n // 2. 否则使用 path + filename 组合\n return `${uploadPath}/${file.name}`\n })()\n\n // 确定 headers:优先使用 opts.headers,其次使用 credentialsConfig.headers\n const finalHeaders = headers || credentialsConfig.headers\n\n // 构建上传选项\n const uploadOptions: OSS.MultipartUploadOptions = {\n progress(p: number) {\n const percent = Math.round(p * 100)\n onProgress({ percent })\n },\n }\n\n // 如果有自定义 headers,添加到上传选项中\n if (finalHeaders) {\n uploadOptions.headers = finalHeaders\n }\n\n const result = await client.multipartUpload(uploadKey, file, uploadOptions)\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 生成签名URL方法\n public static async generateSignedUrl(opts: GenerateSignedUrlOptions): Promise<string> {\n const { objectKey, getCredentials, expires = 3600 } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n return await client.signatureUrl(objectKey, { expires })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 清理过期的 client 缓存\n public static clearExpiredClients(): void {\n const now = Date.now()\n for (const [key, value] of this.clients.entries()) {\n if (now - value.createTime >= this.expireTime) {\n this.clients.delete(key)\n }\n }\n }\n\n // 清理所有缓存\n public static clearAllClients(): void {\n this.clients.clear()\n }\n}\n\n// 导出便捷方法\nexport const getClient = OssUploader.getClient.bind(OssUploader)\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","super","this","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","timeout","OssUploader","getOssCredentials","getCredentials","credentials","getClientKey","config","endpoint","initOssClient","credentialsConfig","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","cname","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","getClient","opts","uploadFile","file","onProgress","path","headers","uploadPath","uploadKey","test","finalHeaders","uploadOptions","progress","p","percent","Math","round","multipartUpload","generateSignedUrl","objectKey","expires","signatureUrl","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"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"}
|
package/lib/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("./src/
|
|
1
|
+
"use strict";var e=require("./src/api-client/axios-client.cjs"),r=require("./src/api-client/fetch-client.cjs"),s=require("./src/argo-log.cjs"),i=require("./src/date-transfer.cjs"),o=require("./src/device.cjs"),t=require("./src/file-operations.cjs"),p=require("./src/json.cjs"),c=require("./src/oss-uploader.cjs"),a=require("./src/storage.cjs"),n=require("./src/types.cjs"),l=require("./src/watermark.cjs");exports.ApiService=e.ApiService,exports.ApiError=r.ApiError,exports.FetchApiService=r.FetchApiService,exports.ArgoLog=s.ArgoLog,exports.formatDuration=i.formatDuration,exports.getDeviceType=o.getDeviceType,exports.isAndroid=o.isAndroid,exports.isIOS=o.isIOS,exports.isMobile=o.isMobile,exports.createVideoUploader=t.createVideoUploader,exports.downloadFile=t.downloadFile,exports.JsonToExcel=p.JsonToExcel,exports.excelToJson=p.excelToJson,exports.OssError=c.OssError,exports.OssUploader=c.OssUploader,exports.generateSignedUrl=c.generateSignedUrl,exports.getClient=c.getClient,exports.uploadFile=c.uploadFile,exports.Storage=a.Storage,exports.isBoolean=n.isBoolean,exports.isElement=n.isElement,exports.isImageByMimeType=n.isImageByMimeType,exports.isJSONString=n.isJSONString,exports.isNumber=n.isNumber,exports.isPlainObject=n.isPlainObject,exports.isUndefined=n.isUndefined,exports.isWindow=n.isWindow,exports.watermark=l.watermark;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../types.cjs"),s=Object.defineProperty,t=(e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r);const r=class s{constructor(e,r){var i=this;if(this.apiInstance=e,this.isWholeResponse=r,t(this,"useApi",async function(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.isWholeResponse,r=null,o=null;try{const o={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};o.url=(o.proxyPrefix||"")+e.url,delete o.proxyPrefix;const n=await i.apiInstance(o);r=t?n.data:n.data.data}catch(e){"AxiosError"!==e.name?i.isAxiosResponse(e)?o=e.data:i.isErrorResponse(e)&&(o=e):console.error(e)}return{res:r,error:o}}),t(this,"apiClient",async(e,s,t)=>{t??this.isWholeResponse;const r={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};return r.proxyPrefix&&(r.url=(r.proxyPrefix||"")+e.url,delete r.proxyPrefix),await this.apiInstance(r)}),s.instance)return s.instance;s.instance=this,this.isWholeResponse=r}isBusinessError(s){return e.isPlainObject(s)&&"string"==typeof s.message&&"number"==typeof s.code&&0!==s.code}isAxiosResponse(s){return e.isPlainObject(s)&&void 0!==s.data&&this.isBusinessError(s.data)&&void 0!==s.status&&void 0!==s.statusText&&void 0!==s.headers&&void 0!==s.config&&void 0!==s.request}isErrorResponse(e){return"code"in e&&"data"in e&&"message"in e&&0!==e.code}};t(r,"instance");let i=r;exports.ApiService=i;
|
|
2
|
+
//# sourceMappingURL=axios-client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-client.cjs","sources":["../../../../../packages/utils/src/api-client/axios-client.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n} from './types'\nimport { isPlainObject } from '../types'\n\n// 重新导出共享类型\nexport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n Method,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n UseApiResponse,\n} from './types'\n\n/**\n * 成功响应的基础约束接口\n * @template T - 响应数据的类型\n */\nexport interface BaseSuccessResponse<T = unknown> {\n data: T\n [key: string]: any\n}\n\n/**\n * 成功响应的数据结构(默认实现)\n * @template T - 响应数据的类型\n */\nexport interface SuccessResponse<T> extends BaseSuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * Axios 专用的 API 响应封装(支持完整响应选项)\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n */\nexport interface AxiosUseApiResponse<\n W extends boolean = false,\n T = unknown,\n S extends BaseSuccessResponse<T> = SuccessResponse<T>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n res: W extends true ? S : T\n error: E | null\n}\n\n/**\n * API 服务类,提供统一的请求处理和错误处理\n * @template T - API 类型映射\n * @template U - URL 配置对象类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n *\n * @example\n * ```typescript\n * // 定义 API 类型映射\n * interface UserApi extends ApiTypeMap<UserUrlObject> {\n * '/user/list': {\n * request: { page: number; size: number }\n * response: User[]\n * }\n * }\n *\n * // 使用默认响应类型\n * const api = new ApiService<UserApi, UserUrlObject>(axios.create(), false)\n *\n * // 使用自定义响应类型\n * interface CustomSuccessResponse<T> {\n * status: number\n * result: T\n * msg: string\n * }\n *\n * interface CustomErrorResponse {\n * status: number\n * result: null\n * msg: string\n * }\n *\n * const customApi = new ApiService<\n * UserApi,\n * UserUrlObject,\n * CustomSuccessResponse<unknown>,\n * CustomErrorResponse\n * >(axios.create(), false)\n *\n * // 发起请求\n * const { res, error } = await api.useApi({\n * url: '/user/list',\n * method: 'GET',\n * params: { page: 1, size: 10 }\n * })\n * ```\n */\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n S extends BaseSuccessResponse = SuccessResponse<unknown>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: ApiService<any, any, any, any>\n\n /**\n * 构造函数,实现单例模式\n * @param apiInstance - Axios 实例\n * @param isWholeResponse - 是否返回完整响应\n */\n constructor(\n private apiInstance: AxiosInstance,\n private isWholeResponse: boolean,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U, S, E>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: E): boolean {\n return isPlainObject(obj)\n && typeof (obj as any).message === 'string'\n && typeof (obj as any).code === 'number'\n && (obj as any).code !== 0\n }\n\n /**\n * 判断是否为 Axios 响应对象\n * @param value - 待判断的值\n */\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n /**\n * 判断是否为错误响应\n * @param value - 待判断的值\n */\n private isErrorResponse(value: any): value is E {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应,true 返回 SuccessResponse,false 只返回 data\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数(GET 请求会自动转为 params,其他方法转为 data)\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns Promise<UseApiResponse<W, T, S, E>> - 包含 res 和 error 的统一响应对象\n */\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse: W = this.isWholeResponse as W,\n ): Promise<AxiosUseApiResponse<W, T[K['url']]['response'], S, E>> => {\n let res: AxiosUseApiResponse<W, T[K['url']]['response'], S, E>['res'] | null = null\n let error: AxiosUseApiResponse<W, T[K['url']]['response'], S, E>['error'] = null\n\n try {\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n // 发起请求\n const response = await this.apiInstance<S & { data: T[K['url']]['response'] }>(config)\n res = isWholeResponse\n ? (response.data as any)\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data as E\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n\n /**\n * 发起 API 请求\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns 根据 isWholeResponse 返回完整响应或解包后的数据\n */\n public apiClient = async <K extends U, W extends boolean = false>(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<W extends true ? AxiosResponse<T[K['url']]['response']> : T[K['url']]['response']> => {\n const useWholeResponse = isWholeResponse ?? this.isWholeResponse\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n if (config.proxyPrefix) {\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n }\n\n // 发起请求,利用 axios 的第二个泛型参数 R 控制解包\n if (useWholeResponse) {\n return await this.apiInstance<T[K['url']]['response']>(config)\n }\n else {\n return await this.apiInstance<any, T[K['url']]['response']>(config)\n }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","isWholeResponse","_this","this","__publicField","async","axiosConfig","params","arguments","length","undefined","res","error","config","method","includes","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":"iMA4GO,MAAMA,EAAN,MAAMA,EAaXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAEmE,IADnEN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAA2E,KAC3EC,EAAwE,KAE5E,IAEE,MAAMC,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAI5HM,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,YAGd,MAAMC,QAAiBlB,EAAKF,YAAmDa,GAC/EF,EAAMV,EACDmB,EAASH,KACVG,EAASH,KAAKA,IACpB,OACOI,GAEY,eAAbA,EAAIC,KACFpB,EAAKqB,gBAAgBF,GACvBT,EAAQS,EAAIJ,KAELf,EAAKsB,gBAAgBH,KAC5BT,EAAQS,GAIVI,QAAQb,MAAMS,EAElB,CAEA,MAAO,CAAEV,MAAWC,QACtB,GAWAR,EAAAD,KAAO,YAAYE,MACjBC,EAGAC,EACAN,KAEyBA,GAAmBE,KAAKF,gBAAjD,MAEMY,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAU5H,OANIM,EAAOM,cACTN,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,mBAKDhB,KAAKH,YAAqCa,KAjIrDf,EAAW4B,SACb,OAAO5B,EAAW4B,SAEpB5B,EAAW4B,SAAWvB,KACtBA,KAAKF,gBAAkBA,CACzB,CAMQ0B,eAAAA,CAAgBC,GACtB,OAAOC,EAAAA,cAAcD,IACgB,iBAAxBA,EAAYE,SACS,iBAArBF,EAAYG,MACE,IAArBH,EAAYG,IACpB,CAMQR,eAAAA,CAAgBS,GACtB,OAAOH,gBAAcG,SACD,IAAfA,EAAMf,MACNd,KAAKwB,gBAAgBK,EAAMf,YACV,IAAjBe,EAAMC,aACe,IAArBD,EAAME,iBACY,IAAlBF,EAAMG,cACW,IAAjBH,EAAMnB,aACY,IAAlBmB,EAAMI,OACb,CAMQZ,eAAAA,CAAgBQ,GACtB,MAAO,SAAUA,GAAS,SAAUA,GAAS,YAAaA,GAAwB,IAAfA,EAAMD,IAC3E,GAlDA3B,EANWN,EAMI,YANV,IAAMuC,EAANvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=Object.defineProperty,t=(t,s,r)=>((t,s,r)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r)(t,"symbol"!=typeof s?s+"":s,r);class s extends Error{constructor(e,s,r,a){super(s),t(this,"code"),t(this,"details"),t(this,"status"),this.name="ApiError",this.code=e,this.status=r,this.details=a}}const r=class e{constructor(r){if(this.client=r,t(this,"useApi",async(e,t)=>{let r=null,a=null;try{const{url:s,method:a,proxyPrefix:o,params:n,data:i,...c}=e,l=(o||"")+s,h={...c,method:a.toLowerCase()},d=t||n,p=t||i;"GET"===a.toUpperCase()&&d?h.searchParams=d:p&&(h.json=p);const u=await this.client(l,h);r=(u.headers.get("content-type")??"").toLowerCase().includes("text/event-stream")?u.body:await u.json()}catch(e){a=e instanceof s?{code:e.code,message:e.message,details:e.details}:{code:"UNKNOWN_ERROR",message:e.message||"Unknown error"}}return{res:r,error:a}}),t(this,"apiClient",async(e,t)=>{const{url:s,method:r,proxyPrefix:a,params:o,data:n,...i}=e,c=(a||"")+s,l={...i,method:r.toLowerCase(),throwOnError:!0},h=t||o,d=t||n;"GET"===r.toUpperCase()&&h?l.searchParams=h:d&&(l.json=d);const p=await this.client(c,l);return(p.headers.get("content-type")??"").toLowerCase().includes("text/event-stream")?p.body:await p.json()}),e.instance)return e.instance;e.instance=this}};t(r,"instance");let a=r;exports.ApiError=s,exports.FetchApiService=a;
|
|
2
|
+
//# sourceMappingURL=fetch-client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.cjs","sources":["../../../../../packages/utils/src/api-client/fetch-client.ts"],"sourcesContent":["import type { Options } from 'ky'\nimport type {\n ApiTypeMap,\n BaseErrorResponse,\n ErrorResponse,\n RequestParams,\n RequestPayload,\n UrlObjectType,\n UseApiResponse,\n} from './types'\n\n/**\n * 扩展的 API 请求配置选项\n */\ninterface ExtendedOptions extends Options {\n /** 内部标记:是否为重试请求 @internal */\n _isRetry?: boolean\n /** 静默模式:401 错误不弹出登录弹窗 @default false */\n _silent?: boolean\n /** 操作上下文:用于登录弹窗说明 */\n _actionContext?: string\n /** 错误处理策略:是否抛出错误 @default false */\n throwOnError?: boolean\n}\n\n/**\n * 自定义 API 错误类\n */\nexport class ApiError extends Error {\n code: string\n details?: string\n status: number\n\n constructor(code: string, message: string, status: number, details?: string) {\n super(message)\n this.name = 'ApiError'\n this.code = code\n this.status = status\n this.details = details\n }\n}\n\n// ============================================================================\n// Fetch API 服务类\n// ============================================================================\n\n/**\n * Fetch API 服务类,基于 ky 提供统一的请求处理\n */\nexport class FetchApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: FetchApiService<any, any, any>\n\n constructor(private client: any) {\n if (FetchApiService.instance) {\n return FetchApiService.instance as FetchApiService<T, U, E>\n }\n FetchApiService.instance = this\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @param config - 请求配置\n * @param params - 请求参数(GET 用 params,POST 等用 data)\n * @returns Promise<{ res, error }> - 统一响应格式\n */\n public useApi = async <K extends U>(\n config: Omit<ExtendedOptions, 'method'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n data?: RequestPayload<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']> | RequestPayload<T[K['url']]['request']>,\n ): Promise<UseApiResponse<T[K['url']]['response'], E>> => {\n let res: T[K['url']]['response'] | null = null\n let error: E | null = null\n\n try {\n // 构建请求配置\n const { url, method, proxyPrefix, params: configParams, data: configData, ...restOptions } = config\n const fullUrl = (proxyPrefix || '') + url\n\n const options: ExtendedOptions = {\n ...restOptions,\n method: method.toLowerCase() as any,\n }\n\n // 处理请求参数(优先使用第二个参数 params)\n const finalParams = params || configParams\n const finalData = params || configData\n\n if (method.toUpperCase() === 'GET' && finalParams) {\n (options as any).searchParams = finalParams\n }\n else if (finalData) {\n (options as any).json = finalData\n }\n\n // 发起请求\n const response = await this.client(fullUrl, options)\n\n // 处理 SSE 流式响应\n const contentType = response.headers.get('content-type') ?? ''\n if (contentType.toLowerCase().includes('text/event-stream')) {\n res = response.body as any\n }\n else {\n res = await response.json()\n }\n }\n catch (err: any) {\n // 错误已在 ky hooks 中处理,这里只需捕获\n if (err instanceof ApiError) {\n error = {\n code: err.code,\n message: err.message,\n details: err.details,\n } as unknown as E\n }\n else {\n error = {\n code: 'UNKNOWN_ERROR',\n message: err.message || 'Unknown error',\n } as unknown as E\n }\n }\n\n return { res, error }\n }\n\n /**\n * 发起 API 请求,直接返回数据或抛出错误\n * @template K - URL 配置对象类型\n * @param config - 请求配置\n * @param params - 请求参数(GET 用 params,POST 等用 data)\n * @returns Promise<Response> - 直接返回响应数据\n */\n public apiClient = async <K extends U>(\n config: Omit<ExtendedOptions, 'method'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n data?: RequestPayload<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']> | RequestPayload<T[K['url']]['request']>,\n ): Promise<T[K['url']]['response']> => {\n const { url, method, proxyPrefix, params: configParams, data: configData, ...restOptions } = config\n const fullUrl = (proxyPrefix || '') + url\n\n const options: ExtendedOptions = {\n ...restOptions,\n method: method.toLowerCase() as any,\n throwOnError: true,\n }\n\n // 处理请求参数(优先使用第二个参数 params)\n const finalParams = params || configParams\n const finalData = params || configData\n\n if (method.toUpperCase() === 'GET' && finalParams) {\n (options as any).searchParams = finalParams\n }\n else if (finalData) {\n (options as any).json = finalData\n }\n\n // 发起请求\n const response = await this.client(fullUrl, options)\n\n // 处理 SSE 流式响应\n const contentType = response.headers.get('content-type') ?? ''\n if (contentType.toLowerCase().includes('text/event-stream')) {\n return response.body as any\n }\n\n return await response.json()\n }\n}\n"],"names":["ApiError","Error","constructor","code","message","status","details","super","__publicField","this","name","_FetchApiService","client","async","config","params","res","error","url","method","proxyPrefix","configParams","data","configData","restOptions","fullUrl","options","toLowerCase","finalParams","finalData","toUpperCase","searchParams","json","response","headers","get","includes","body","err","throwOnError","instance","FetchApiService"],"mappings":"uKA4BO,MAAMA,UAAiBC,MAK5BC,WAAAA,CAAYC,EAAcC,EAAiBC,EAAgBC,GACzDC,MAAMH,GALRI,EAAAC,KAAA,QACAD,EAAAC,KAAA,WACAD,EAAAC,KAAA,UAIEA,KAAKC,KAAO,WACZD,KAAKN,KAAOA,EACZM,KAAKJ,OAASA,EACdI,KAAKH,QAAUA,CACjB,EAUK,MAAMK,EAAN,MAAMA,EAOXT,WAAAA,CAAoBU,GAClB,GADkBH,KAAAG,OAAAA,EAcpBJ,EAAAC,KAAO,SAASI,MACdC,EAIAC,KAEA,IAAIC,EAAsC,KACtCC,EAAkB,KAEtB,IAEE,MAAMC,IAAEA,EAAAC,OAAKA,EAAAC,YAAQA,EAAaL,OAAQM,EAAcC,KAAMC,KAAeC,GAAgBV,EACvFW,GAAWL,GAAe,IAAMF,EAEhCQ,EAA2B,IAC5BF,EACHL,OAAQA,EAAOQ,eAIXC,EAAcb,GAAUM,EACxBQ,EAAYd,GAAUQ,EAEC,QAAzBJ,EAAOW,eAA2BF,EACnCF,EAAgBK,aAAeH,EAEzBC,IACNH,EAAgBM,KAAOH,GAI1B,MAAMI,QAAiBxB,KAAKG,OAAOa,EAASC,GAK1CV,GAFkBiB,EAASC,QAAQC,IAAI,iBAAmB,IAC5CR,cAAcS,SAAS,qBAC/BH,EAASI,WAGHJ,EAASD,MAEzB,OACOM,GAGHrB,EADEqB,aAAetC,EACT,CACNG,KAAMmC,EAAInC,KACVC,QAASkC,EAAIlC,QACbE,QAASgC,EAAIhC,SAIP,CACNH,KAAM,gBACNC,QAASkC,EAAIlC,SAAW,gBAG9B,CAEA,MAAO,CAAEY,MAAKC,WAUhBT,EAAAC,KAAO,YAAYI,MACjBC,EAIAC,KAEA,MAAMG,IAAEA,EAAAC,OAAKA,EAAAC,YAAQA,EAAaL,OAAQM,EAAcC,KAAMC,KAAeC,GAAgBV,EACvFW,GAAWL,GAAe,IAAMF,EAEhCQ,EAA2B,IAC5BF,EACHL,OAAQA,EAAOQ,cACfY,cAAc,GAIVX,EAAcb,GAAUM,EACxBQ,EAAYd,GAAUQ,EAEC,QAAzBJ,EAAOW,eAA2BF,EACnCF,EAAgBK,aAAeH,EAEzBC,IACNH,EAAgBM,KAAOH,GAI1B,MAAMI,QAAiBxB,KAAKG,OAAOa,EAASC,GAI5C,OADoBO,EAASC,QAAQC,IAAI,iBAAmB,IAC5CR,cAAcS,SAAS,qBAC9BH,EAASI,WAGLJ,EAASD,SAvHlBrB,EAAgB6B,SAClB,OAAO7B,EAAgB6B,SAEzB7B,EAAgB6B,SAAW/B,IAC7B,GAPAD,EALWG,EAKI,YALV,IAAM8B,EAAN9B"}
|
package/lib/src/oss-uploader.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("ali-oss"),t=Object.defineProperty,s=(e,s,
|
|
1
|
+
"use strict";var e=require("ali-oss"),t=Object.defineProperty,s=(e,s,i)=>((e,s,i)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[s]=i)(e,"symbol"!=typeof s?s+"":s,i);class i extends Error{constructor(e){super(e),this.name="OssError"}}const r={accessKeyId:"",accessKeySecret:"",stsToken:"",secure:!0,bucket:"yao-file-daily",region:"oss-cn-hangzhou",timeout:6e4};class n{static async getOssCredentials(e){const t=await e();if(!t)throw new i("获取凭证失败");return t}static getClientKey(e){return`${e.endpoint||""}-${e.region||r.region}-${e.bucket||r.bucket}`}static async initOssClient(t,s){const n=this.getClientKey(t),a=this.clients.get(n),c=Date.now();if(a&&c-a.createTime<this.expireTime)return a.client;try{const{accessKeyId:i,accessKeySecret:a,securityToken:o,bucket:l,region:d,endpoint:u,cname:g,secure:h,timeout:p}=t,y={...r,accessKeyId:i,accessKeySecret:a,stsToken:o,bucket:l||r.bucket,region:d||r.region,endpoint:u,cname:g,secure:void 0!==h?h:r.secure,timeout:p||r.timeout,refreshSTSToken:async()=>{const e=await this.getOssCredentials(s);return{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,stsToken:e.securityToken}},refreshSTSTokenInterval:3e5},w=new e(y);return this.clients.set(n,{client:w,createTime:c,credentials:t}),w}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async getClient(e){const{getCredentials:t}=e,s=await this.getOssCredentials(t);return await this.initOssClient(s,t)}static async uploadFile(e){const{file:t,onProgress:s=()=>{},path:r,headers:n,getCredentials:a}=e,c=await this.getOssCredentials(a),o=await this.initOssClient(c,a);try{const e=r||c.path||"ksh/pdf",i=e&&/\.\w+$/.test(e)?e:`${e}/${t.name}`,a=n||c.headers,l={progress(e){const t=Math.round(100*e);s({percent:t})}};a&&(l.headers=a);return await o.multipartUpload(i,t,l)}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e){const{objectKey:t,getCredentials:s,expires:r=3600}=e,n=await this.getOssCredentials(s),a=await this.initOssClient(n,s);try{return await a.signatureUrl(t,{expires:r})}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static clearExpiredClients(){const e=Date.now();for(const[t,s]of this.clients.entries())e-s.createTime>=this.expireTime&&this.clients.delete(t)}static clearAllClients(){this.clients.clear()}}s(n,"clients",new Map),s(n,"expireTime",9e5);const a=n.getClient.bind(n),c=n.uploadFile.bind(n),o=n.generateSignedUrl.bind(n);exports.OssError=i,exports.OssUploader=n,exports.generateSignedUrl=o,exports.getClient=a,exports.uploadFile=c;
|
|
2
2
|
//# sourceMappingURL=oss-uploader.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oss-uploader.cjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\n// OSS 凭证和配置(由 getCredentials 返回)\nexport interface OssCredentialsConfig {\n // 必需的凭证\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n\n // OSS 配置\n bucket?: string\n region?: string\n endpoint?: string\n cname?: boolean\n secure?: boolean\n timeout?: number\n\n // 上传相关配置\n path?: string // 上传路径/对象键\n headers?: Record<string, string> // 自定义 headers(如 OSS 回调)\n}\n\n// uploadFile 的参数(补充性参数)\nexport interface UploadFileOptions {\n file: File\n getCredentials: () => Promise<OssCredentialsConfig | null>\n onProgress?: (p: { percent: number }) => void\n\n // 以下参数可以覆盖 getCredentials 返回的配置\n path?: string\n headers?: Record<string, string>\n}\n\n// generateSignedUrl 的参数\nexport interface GenerateSignedUrlOptions {\n objectKey: string\n getCredentials: () => Promise<OssCredentialsConfig | null>\n expires?: number // 过期时间(秒)\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OSS.Options = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n timeout: 60000,\n}\n\nexport class OssUploader {\n // 使用 Map 缓存不同配置的 client\n private static clients: Map<string, { client: OSS, createTime: number, credentials: OssCredentialsConfig }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证配置\n private static async getOssCredentials(getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OssCredentialsConfig> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return credentials\n }\n\n // 生成 client 缓存 key\n private static getClientKey(config: OssCredentialsConfig): string {\n const endpoint = config.endpoint || ''\n const region = config.region || ossConfig.region\n const bucket = config.bucket || ossConfig.bucket\n return `${endpoint}-${region}-${bucket}`\n }\n\n // 初始化 OSS Client\n private static async initOssClient(credentialsConfig: OssCredentialsConfig, getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OSS> {\n const clientKey = this.getClientKey(credentialsConfig)\n const cached = this.clients.get(clientKey)\n const now = Date.now()\n\n // 检查缓存是否有效\n if (cached && (now - cached.createTime) < this.expireTime) {\n return cached.client\n }\n\n try {\n const { accessKeyId, accessKeySecret, securityToken, bucket, region, endpoint, cname, secure, timeout } = credentialsConfig\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n accessKeyId,\n accessKeySecret,\n stsToken: securityToken,\n bucket: bucket || ossConfig.bucket,\n region: region || ossConfig.region,\n endpoint,\n cname,\n secure: secure !== undefined ? secure : ossConfig.secure,\n timeout: timeout || ossConfig.timeout,\n refreshSTSToken: async () => {\n const creds = await this.getOssCredentials(getCredentials)\n return {\n accessKeyId: creds.accessKeyId,\n accessKeySecret: creds.accessKeySecret,\n stsToken: creds.securityToken,\n }\n },\n refreshSTSTokenInterval: 300000,\n }\n\n // 创建新 client\n const client = new OSS(finalConfig)\n\n // 缓存 client\n this.clients.set(clientKey, {\n client,\n createTime: now,\n credentials: credentialsConfig,\n })\n\n return client\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 上传文件方法\n public static async uploadFile(opts: UploadFileOptions): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path, headers, getCredentials } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n // 确定上传路径:优先使用 opts.path,其次使用 credentialsConfig.path,最后使用默认值\n const uploadPath = path || credentialsConfig.path || 'ksh/pdf'\n\n // 确定上传的对象键\n const uploadKey = (() => {\n // 1. 判断 path 是否已经是完整路径(带文件后缀)\n if (uploadPath && /\\.\\w+$/.test(uploadPath)) {\n return uploadPath\n }\n\n // 2. 否则使用 path + filename 组合\n return `${uploadPath}/${file.name}`\n })()\n\n // 确定 headers:优先使用 opts.headers,其次使用 credentialsConfig.headers\n const finalHeaders = headers || credentialsConfig.headers\n\n // 构建上传选项\n const uploadOptions: OSS.MultipartUploadOptions = {\n progress(p: number) {\n const percent = Math.round(p * 100)\n onProgress({ percent })\n },\n }\n\n // 如果有自定义 headers,添加到上传选项中\n if (finalHeaders) {\n uploadOptions.headers = finalHeaders\n }\n\n const result = await client.multipartUpload(uploadKey, file, uploadOptions)\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 生成签名URL方法\n public static async generateSignedUrl(opts: GenerateSignedUrlOptions): Promise<string> {\n const { objectKey, getCredentials, expires = 3600 } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n return await client.signatureUrl(objectKey, { expires })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 清理过期的 client 缓存\n public static clearExpiredClients(): void {\n const now = Date.now()\n for (const [key, value] of this.clients.entries()) {\n if (now - value.createTime >= this.expireTime) {\n this.clients.delete(key)\n }\n }\n }\n\n // 清理所有缓存\n public static clearAllClients(): void {\n this.clients.clear()\n }\n}\n\n// 导出便捷方法\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","super","this","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","timeout","OssUploader","getOssCredentials","getCredentials","credentials","getClientKey","config","endpoint","initOssClient","credentialsConfig","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","cname","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","uploadFile","opts","file","onProgress","path","headers","uploadPath","uploadKey","test","finalHeaders","uploadOptions","progress","p","percent","Math","round","multipartUpload","generateSignedUrl","objectKey","expires","signatureUrl","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oss-uploader.cjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\n// OSS 凭证和配置(由 getCredentials 返回)\nexport interface OssCredentialsConfig {\n // 必需的凭证\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n\n // OSS 配置\n bucket?: string\n region?: string\n endpoint?: string\n cname?: boolean\n secure?: boolean\n timeout?: number\n\n // 上传相关配置\n path?: string // 上传路径/对象键\n headers?: Record<string, string> // 自定义 headers(如 OSS 回调)\n}\n\n// uploadFile 的参数(补充性参数)\nexport interface UploadFileOptions {\n file: File\n getCredentials: () => Promise<OssCredentialsConfig | null>\n onProgress?: (p: { percent: number }) => void\n\n // 以下参数可以覆盖 getCredentials 返回的配置\n path?: string\n headers?: Record<string, string>\n}\n\n// generateSignedUrl 的参数\nexport interface GenerateSignedUrlOptions {\n objectKey: string\n getCredentials: () => Promise<OssCredentialsConfig | null>\n expires?: number // 过期时间(秒)\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OSS.Options = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n timeout: 60000,\n}\n\nexport class OssUploader {\n // 使用 Map 缓存不同配置的 client\n private static clients: Map<string, { client: OSS, createTime: number, credentials: OssCredentialsConfig }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证配置\n private static async getOssCredentials(getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OssCredentialsConfig> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return credentials\n }\n\n // 生成 client 缓存 key\n private static getClientKey(config: OssCredentialsConfig): string {\n const endpoint = config.endpoint || ''\n const region = config.region || ossConfig.region\n const bucket = config.bucket || ossConfig.bucket\n return `${endpoint}-${region}-${bucket}`\n }\n\n // 初始化 OSS Client\n private static async initOssClient(credentialsConfig: OssCredentialsConfig, getCredentials: () => Promise<OssCredentialsConfig | null>): Promise<OSS> {\n const clientKey = this.getClientKey(credentialsConfig)\n const cached = this.clients.get(clientKey)\n const now = Date.now()\n\n // 检查缓存是否有效\n if (cached && (now - cached.createTime) < this.expireTime) {\n return cached.client\n }\n\n try {\n const { accessKeyId, accessKeySecret, securityToken, bucket, region, endpoint, cname, secure, timeout } = credentialsConfig\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n accessKeyId,\n accessKeySecret,\n stsToken: securityToken,\n bucket: bucket || ossConfig.bucket,\n region: region || ossConfig.region,\n endpoint,\n cname,\n secure: secure !== undefined ? secure : ossConfig.secure,\n timeout: timeout || ossConfig.timeout,\n refreshSTSToken: async () => {\n const creds = await this.getOssCredentials(getCredentials)\n return {\n accessKeyId: creds.accessKeyId,\n accessKeySecret: creds.accessKeySecret,\n stsToken: creds.securityToken,\n }\n },\n refreshSTSTokenInterval: 300000,\n }\n\n // 创建新 client\n const client = new OSS(finalConfig)\n\n // 缓存 client\n this.clients.set(clientKey, {\n client,\n createTime: now,\n credentials: credentialsConfig,\n })\n\n return client\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 获取 OSS Client(用于手动控制上传流程)\n public static async getClient(opts: {\n getCredentials: () => Promise<OssCredentialsConfig | null>\n }): Promise<OSS> {\n const { getCredentials } = opts\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n return await this.initOssClient(credentialsConfig, getCredentials)\n }\n\n // 上传文件方法\n public static async uploadFile(opts: UploadFileOptions): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path, headers, getCredentials } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n // 确定上传路径:优先使用 opts.path,其次使用 credentialsConfig.path,最后使用默认值\n const uploadPath = path || credentialsConfig.path || 'ksh/pdf'\n\n // 确定上传的对象键\n const uploadKey = (() => {\n // 1. 判断 path 是否已经是完整路径(带文件后缀)\n if (uploadPath && /\\.\\w+$/.test(uploadPath)) {\n return uploadPath\n }\n\n // 2. 否则使用 path + filename 组合\n return `${uploadPath}/${file.name}`\n })()\n\n // 确定 headers:优先使用 opts.headers,其次使用 credentialsConfig.headers\n const finalHeaders = headers || credentialsConfig.headers\n\n // 构建上传选项\n const uploadOptions: OSS.MultipartUploadOptions = {\n progress(p: number) {\n const percent = Math.round(p * 100)\n onProgress({ percent })\n },\n }\n\n // 如果有自定义 headers,添加到上传选项中\n if (finalHeaders) {\n uploadOptions.headers = finalHeaders\n }\n\n const result = await client.multipartUpload(uploadKey, file, uploadOptions)\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 生成签名URL方法\n public static async generateSignedUrl(opts: GenerateSignedUrlOptions): Promise<string> {\n const { objectKey, getCredentials, expires = 3600 } = opts\n\n // 获取凭证配置\n const credentialsConfig = await this.getOssCredentials(getCredentials)\n\n // 初始化 client\n const client = await this.initOssClient(credentialsConfig, getCredentials)\n\n try {\n return await client.signatureUrl(objectKey, { expires })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 清理过期的 client 缓存\n public static clearExpiredClients(): void {\n const now = Date.now()\n for (const [key, value] of this.clients.entries()) {\n if (now - value.createTime >= this.expireTime) {\n this.clients.delete(key)\n }\n }\n }\n\n // 清理所有缓存\n public static clearAllClients(): void {\n this.clients.clear()\n }\n}\n\n// 导出便捷方法\nexport const getClient = OssUploader.getClient.bind(OssUploader)\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","super","this","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","timeout","OssUploader","getOssCredentials","getCredentials","credentials","getClientKey","config","endpoint","initOssClient","credentialsConfig","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","cname","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","getClient","opts","uploadFile","file","onProgress","path","headers","uploadPath","uploadKey","test","finalHeaders","uploadOptions","progress","p","percent","Math","round","multipartUpload","generateSignedUrl","objectKey","expires","signatureUrl","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qxs-bns/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.36",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://qxs-bns.pages.dev/guide/utils/",
|
|
@@ -15,11 +15,15 @@
|
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"main": "./lib/index.cjs",
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"axios": "^1.7.9"
|
|
18
|
+
"axios": "^1.7.9",
|
|
19
|
+
"ky": "^1.14.1"
|
|
19
20
|
},
|
|
20
21
|
"peerDependenciesMeta": {
|
|
21
22
|
"axios": {
|
|
22
23
|
"optional": true
|
|
24
|
+
},
|
|
25
|
+
"ky": {
|
|
26
|
+
"optional": true
|
|
23
27
|
}
|
|
24
28
|
},
|
|
25
29
|
"dependencies": {
|
package/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './src/api-client';
|
|
1
2
|
export * from './src/argo-log';
|
|
2
3
|
export * from './src/date-transfer';
|
|
3
4
|
export * from './src/device';
|
|
@@ -6,6 +7,5 @@ export * from './src/json';
|
|
|
6
7
|
export * from './src/oss-uploader';
|
|
7
8
|
export * from './src/storage';
|
|
8
9
|
export * from './src/types';
|
|
9
|
-
export * from './src/use-api';
|
|
10
10
|
export * from './src/watermark';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse
|
|
1
|
+
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
|
+
import type { ApiTypeMap, BaseErrorResponse, ErrorResponse, RequestParams, RequestPayload, UrlObjectType } from './types';
|
|
3
|
+
export type { ApiTypeMap, BaseErrorResponse, ErrorResponse, Method, RequestParams, RequestPayload, UrlObjectType, UseApiResponse, } from './types';
|
|
2
4
|
/**
|
|
3
5
|
* 成功响应的基础约束接口
|
|
4
6
|
* @template T - 响应数据的类型
|
|
@@ -7,12 +9,6 @@ export interface BaseSuccessResponse<T = unknown> {
|
|
|
7
9
|
data: T;
|
|
8
10
|
[key: string]: any;
|
|
9
11
|
}
|
|
10
|
-
/**
|
|
11
|
-
* 错误响应的基础约束接口
|
|
12
|
-
*/
|
|
13
|
-
export interface BaseErrorResponse {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}
|
|
16
12
|
/**
|
|
17
13
|
* 成功响应的数据结构(默认实现)
|
|
18
14
|
* @template T - 响应数据的类型
|
|
@@ -24,48 +20,16 @@ export interface SuccessResponse<T> extends BaseSuccessResponse<T> {
|
|
|
24
20
|
message: string;
|
|
25
21
|
}
|
|
26
22
|
/**
|
|
27
|
-
*
|
|
28
|
-
*/
|
|
29
|
-
export interface ErrorResponse extends BaseErrorResponse {
|
|
30
|
-
code: number;
|
|
31
|
-
data: null;
|
|
32
|
-
message: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* API 响应的统一封装
|
|
23
|
+
* Axios 专用的 API 响应封装(支持完整响应选项)
|
|
36
24
|
* @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data
|
|
37
25
|
* @template T - 响应数据的类型
|
|
38
26
|
* @template S - 自定义成功响应类型
|
|
39
27
|
* @template E - 自定义错误响应类型
|
|
40
28
|
*/
|
|
41
|
-
export interface
|
|
29
|
+
export interface AxiosUseApiResponse<W extends boolean = false, T = unknown, S extends BaseSuccessResponse<T> = SuccessResponse<T>, E extends BaseErrorResponse = ErrorResponse> {
|
|
42
30
|
res: W extends true ? S : T;
|
|
43
31
|
error: E | null;
|
|
44
32
|
}
|
|
45
|
-
/**
|
|
46
|
-
* API URL 配置对象类型
|
|
47
|
-
*/
|
|
48
|
-
export interface UrlObjectType {
|
|
49
|
-
url: string;
|
|
50
|
-
method: Method;
|
|
51
|
-
proxyPrefix?: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* API 类型映射,用于定义每个接口的请求和响应类型
|
|
55
|
-
* @template U - URL 配置对象类型
|
|
56
|
-
*/
|
|
57
|
-
export type ApiTypeMap<U extends UrlObjectType> = {
|
|
58
|
-
[K in U['url']]: {
|
|
59
|
-
request: any;
|
|
60
|
-
response: any;
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
type RequestPayload<T> = T extends {
|
|
64
|
-
data: any;
|
|
65
|
-
} ? T['data'] : T;
|
|
66
|
-
type RequestParams<T> = T extends {
|
|
67
|
-
params: any;
|
|
68
|
-
} ? T['params'] : T;
|
|
69
33
|
/**
|
|
70
34
|
* API 服务类,提供统一的请求处理和错误处理
|
|
71
35
|
* @template T - API 类型映射
|
|
@@ -150,7 +114,7 @@ export declare class ApiService<T extends ApiTypeMap<U>, U extends UrlObjectType
|
|
|
150
114
|
*/
|
|
151
115
|
useApi: <K extends U, W extends boolean = false>(axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K["url"]]["request"]>>, "params"> & K & {
|
|
152
116
|
params?: RequestParams<T[K["url"]]["request"]>;
|
|
153
|
-
}, params?: RequestParams<T[K["url"]]["request"]>, isWholeResponse?: W) => Promise<
|
|
117
|
+
}, params?: RequestParams<T[K["url"]]["request"]>, isWholeResponse?: W) => Promise<AxiosUseApiResponse<W, T[K["url"]]["response"], S, E>>;
|
|
154
118
|
/**
|
|
155
119
|
* 发起 API 请求
|
|
156
120
|
* @template K - URL 配置对象类型
|
|
@@ -164,5 +128,4 @@ export declare class ApiService<T extends ApiTypeMap<U>, U extends UrlObjectType
|
|
|
164
128
|
params?: RequestParams<T[K["url"]]["request"]>;
|
|
165
129
|
}, params?: RequestParams<T[K["url"]]["request"]>, isWholeResponse?: W) => Promise<W extends true ? AxiosResponse<T[K["url"]]["response"]> : T[K["url"]]["response"]>;
|
|
166
130
|
}
|
|
167
|
-
|
|
168
|
-
//# sourceMappingURL=use-api.d.ts.map
|
|
131
|
+
//# sourceMappingURL=axios-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"axios-client.d.ts","sourceRoot":"","sources":["../../../../../packages/utils/src/api-client/axios-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Options } from 'ky';
|
|
2
|
+
import type { ApiTypeMap, BaseErrorResponse, ErrorResponse, RequestParams, RequestPayload, UrlObjectType, UseApiResponse } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* 扩展的 API 请求配置选项
|
|
5
|
+
*/
|
|
6
|
+
interface ExtendedOptions extends Options {
|
|
7
|
+
/** 内部标记:是否为重试请求 @internal */
|
|
8
|
+
_isRetry?: boolean;
|
|
9
|
+
/** 静默模式:401 错误不弹出登录弹窗 @default false */
|
|
10
|
+
_silent?: boolean;
|
|
11
|
+
/** 操作上下文:用于登录弹窗说明 */
|
|
12
|
+
_actionContext?: string;
|
|
13
|
+
/** 错误处理策略:是否抛出错误 @default false */
|
|
14
|
+
throwOnError?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 自定义 API 错误类
|
|
18
|
+
*/
|
|
19
|
+
export declare class ApiError extends Error {
|
|
20
|
+
code: string;
|
|
21
|
+
details?: string;
|
|
22
|
+
status: number;
|
|
23
|
+
constructor(code: string, message: string, status: number, details?: string);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fetch API 服务类,基于 ky 提供统一的请求处理
|
|
27
|
+
*/
|
|
28
|
+
export declare class FetchApiService<T extends ApiTypeMap<U>, U extends UrlObjectType, E extends BaseErrorResponse = ErrorResponse> {
|
|
29
|
+
private client;
|
|
30
|
+
private static instance;
|
|
31
|
+
constructor(client: any);
|
|
32
|
+
/**
|
|
33
|
+
* 发起 API 请求,返回统一的响应格式 { res, error }
|
|
34
|
+
* @template K - URL 配置对象类型
|
|
35
|
+
* @param config - 请求配置
|
|
36
|
+
* @param params - 请求参数(GET 用 params,POST 等用 data)
|
|
37
|
+
* @returns Promise<{ res, error }> - 统一响应格式
|
|
38
|
+
*/
|
|
39
|
+
useApi: <K extends U>(config: Omit<ExtendedOptions, "method"> & K & {
|
|
40
|
+
params?: RequestParams<T[K["url"]]["request"]>;
|
|
41
|
+
data?: RequestPayload<T[K["url"]]["request"]>;
|
|
42
|
+
}, params?: RequestParams<T[K["url"]]["request"]> | RequestPayload<T[K["url"]]["request"]>) => Promise<UseApiResponse<T[K["url"]]["response"], E>>;
|
|
43
|
+
/**
|
|
44
|
+
* 发起 API 请求,直接返回数据或抛出错误
|
|
45
|
+
* @template K - URL 配置对象类型
|
|
46
|
+
* @param config - 请求配置
|
|
47
|
+
* @param params - 请求参数(GET 用 params,POST 等用 data)
|
|
48
|
+
* @returns Promise<Response> - 直接返回响应数据
|
|
49
|
+
*/
|
|
50
|
+
apiClient: <K extends U>(config: Omit<ExtendedOptions, "method"> & K & {
|
|
51
|
+
params?: RequestParams<T[K["url"]]["request"]>;
|
|
52
|
+
data?: RequestPayload<T[K["url"]]["request"]>;
|
|
53
|
+
}, params?: RequestParams<T[K["url"]]["request"]> | RequestPayload<T[K["url"]]["request"]>) => Promise<T[K["url"]]["response"]>;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=fetch-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.d.ts","sourceRoot":"","sources":["../../../../../packages/utils/src/api-client/fetch-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAA;AAEhB;;GAEG;AACH,UAAU,eAAgB,SAAQ,OAAO;IACvC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mCAAmC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;gBAEF,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAO5E;AAMD;;GAEG;AACH,qBAAa,eAAe,CAC1B,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,EACvB,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,iBAAiB,GAAG,aAAa;IAI/B,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;gBAEnC,MAAM,EAAE,GAAG;IAO/B;;;;;;OAMG;IACI,MAAM,GAAU,CAAC,SAAS,CAAC,EAChC,QAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG;QAC5C,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;KAC9C,EACD,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KACtF,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAuDrD;IAED;;;;;;OAMG;IACI,SAAS,GAAU,CAAC,SAAS,CAAC,EACnC,QAAQ,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG;QAC5C,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;KAC9C,EACD,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KACtF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CA+BlC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/utils/src/api-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC1D,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 请求方法类型
|
|
3
|
+
*/
|
|
4
|
+
export type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
5
|
+
/**
|
|
6
|
+
* API URL 配置对象类型
|
|
7
|
+
*/
|
|
8
|
+
export interface UrlObjectType {
|
|
9
|
+
url: string;
|
|
10
|
+
method: Method;
|
|
11
|
+
proxyPrefix?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* API 类型映射,用于定义每个接口的请求和响应类型
|
|
15
|
+
* @template U - URL 配置对象类型
|
|
16
|
+
*/
|
|
17
|
+
export type ApiTypeMap<U extends UrlObjectType = UrlObjectType> = {
|
|
18
|
+
[K in U['url']]: {
|
|
19
|
+
request: any;
|
|
20
|
+
response: any;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* 错误响应的基础约束接口
|
|
25
|
+
*/
|
|
26
|
+
export interface BaseErrorResponse {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 错误响应的数据结构
|
|
31
|
+
*/
|
|
32
|
+
export interface ErrorResponse extends BaseErrorResponse {
|
|
33
|
+
code: string | number;
|
|
34
|
+
message: string;
|
|
35
|
+
details?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* API 响应的统一封装
|
|
39
|
+
*/
|
|
40
|
+
export interface UseApiResponse<T = unknown, E extends BaseErrorResponse = ErrorResponse> {
|
|
41
|
+
res: T | null;
|
|
42
|
+
error: E | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 辅助类型:提取请求体数据类型
|
|
46
|
+
*/
|
|
47
|
+
export type RequestPayload<T> = T extends {
|
|
48
|
+
data: infer D;
|
|
49
|
+
} ? D : never;
|
|
50
|
+
/**
|
|
51
|
+
* 辅助类型:提取查询参数类型
|
|
52
|
+
*/
|
|
53
|
+
export type RequestParams<T> = T extends {
|
|
54
|
+
params: infer P;
|
|
55
|
+
} ? P : never;
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/utils/src/api-client/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;AAErF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI;KAC/D,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG;QACf,OAAO,EAAE,GAAG,CAAA;QACZ,QAAQ,EAAE,GAAG,CAAA;KACd;CACF,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,iBAAiB,GAAG,aAAa;IACtF,GAAG,EAAE,CAAC,GAAG,IAAI,CAAA;IACb,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA"}
|
|
@@ -35,11 +35,15 @@ export declare class OssUploader {
|
|
|
35
35
|
private static getOssCredentials;
|
|
36
36
|
private static getClientKey;
|
|
37
37
|
private static initOssClient;
|
|
38
|
+
static getClient(opts: {
|
|
39
|
+
getCredentials: () => Promise<OssCredentialsConfig | null>;
|
|
40
|
+
}): Promise<OSS>;
|
|
38
41
|
static uploadFile(opts: UploadFileOptions): Promise<OSS.MultipartUploadResult>;
|
|
39
42
|
static generateSignedUrl(opts: GenerateSignedUrlOptions): Promise<string>;
|
|
40
43
|
static clearExpiredClients(): void;
|
|
41
44
|
static clearAllClients(): void;
|
|
42
45
|
}
|
|
46
|
+
export declare const getClient: typeof OssUploader.getClient;
|
|
43
47
|
export declare const uploadFile: typeof OssUploader.uploadFile;
|
|
44
48
|
export declare const generateSignedUrl: typeof OssUploader.generateSignedUrl;
|
|
45
49
|
//# sourceMappingURL=oss-uploader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oss-uploader.d.ts","sourceRoot":"","sources":["../../../../packages/utils/src/oss-uploader.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,SAAS,CAAA;AAGzB,MAAM,WAAW,oBAAoB;IAEnC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,cAAc,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAG7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAGD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAYD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiG;IACvH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;mBAG9B,iBAAiB;IAStC,OAAO,CAAC,MAAM,CAAC,YAAY;mBAQN,aAAa;WAsDd,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;WAiDvE,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;WAkBxE,mBAAmB,IAAI,IAAI;WAU3B,eAAe,IAAI,IAAI;CAGtC;AAGD,eAAO,MAAM,UAAU,+BAA2C,CAAA;AAClE,eAAO,MAAM,iBAAiB,sCAAkD,CAAA"}
|
|
1
|
+
{"version":3,"file":"oss-uploader.d.ts","sourceRoot":"","sources":["../../../../packages/utils/src/oss-uploader.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,SAAS,CAAA;AAGzB,MAAM,WAAW,oBAAoB;IAEnC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IAGrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,cAAc,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAG7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAGD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAYD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiG;IACvH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;mBAG9B,iBAAiB;IAStC,OAAO,CAAC,MAAM,CAAC,YAAY;mBAQN,aAAa;WAsDd,SAAS,CAAC,IAAI,EAAE;QAClC,cAAc,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAA;KAC3D,GAAG,OAAO,CAAC,GAAG,CAAC;WAOI,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;WAiDvE,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;WAkBxE,mBAAmB,IAAI,IAAI;WAU3B,eAAe,IAAI,IAAI;CAGtC;AAGD,eAAO,MAAM,SAAS,8BAA0C,CAAA;AAChE,eAAO,MAAM,UAAU,+BAA2C,CAAA;AAClE,eAAO,MAAM,iBAAiB,sCAAkD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@vue+shared@3.5.18/node_modules/@vue/shared/dist/shared.d.ts","../../../node_modules/.pnpm/@vue+reactivity@3.5.18/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../../node_modules/.pnpm/@vue+runtime-core@3.5.18/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@vue+runtime-dom@3.5.18/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../../node_modules/.pnpm/vue@3.5.18_typescript@5.9.2/node_modules/vue/jsx-runtime/index.d.ts","../../../packages/utils/src/argo-log.ts","../../../packages/utils/src/date-transfer.ts","../../../packages/utils/src/device.ts","../../../packages/utils/src/file-operations.ts","../../../node_modules/.pnpm/xlsx@0.18.5/node_modules/xlsx/types/index.d.ts","../../../packages/utils/src/json.ts","../../../node_modules/.pnpm/@types+ali-oss@6.16.11/node_modules/@types/ali-oss/index.d.ts","../../../packages/utils/src/oss-uploader.ts","../../../packages/utils/src/storage.ts","../../../packages/utils/src/types.ts","../../../node_modules/.pnpm/axios@1.11.0/node_modules/axios/index.d.ts","../../../packages/utils/src/use-api.ts","../../../packages/utils/src/watermark.ts","../../../packages/utils/index.ts","../../../packages/utils/shims.d.ts"],"fileIdsList":[[82],[82,83,84,86],[83,84,85,86],[86],[87,88,89,90,91,93,95,96,97,99,100],[87,102],[87],[87,92],[87,94],[87,97,98]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"25e0492430a92b27414c02e43d9a67a96d915cc9982caa3f36096933e1492f1e","impliedFormat":1},{"version":"616a55b9694bdb765470c1f66dc9606779b250520a36b87f4de2e4c594cea9bc","impliedFormat":1},{"version":"7e7187b0314b6ee31f37db0f82da408112ef548713ccbe28796ef551d47a6e0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"591c55c575d645b7f600dd2be6d9cf8d28c4b4a5297d9dfcd41b861fddce04ab","impliedFormat":1},{"version":"269536033c45b92c13747175bf6d197b959559acb119247b3eb9a0eee250c8c5","impliedFormat":1},{"version":"7bdf93e623085b522f7e1bb4fe4ee9c4df2400b53398eb9a803b9f10f911725b","signature":"4085058b6de61f42972027fce952ec6d0f966070d17d023a3f5c3ebd0c869407","affectsGlobalScope":true},{"version":"72af2f99ff91a9a6767e9374d5bcfdfa734f056e0ca4f99acfbdc0b6910cbe6a","signature":"642691020b5d2610d98d8dfa25df7e7c58a2e885d24bdec278f98842b02892f6"},{"version":"de9652b1bdad8aa2fa302b263a6a72265b276fec040394aa3b6c1adcff419ebc","signature":"6364be1269de7f1efc40324fb2cadc9a17d9bd2742d5bc1b95e309d848ca50f6"},{"version":"8f2a5590837d3f29a8d141931432d8b61e019382d1bdcb5d9990f2525242942b","signature":"4f8d8bcaa7127e5ed2d649cd5fc16b4e46b6d6960d82982ede8429d8066f9b96","affectsGlobalScope":true},{"version":"593654eebe902db28ca173f021f74ea9f77e8b344aebb0a80fa4d10f29bb3a9d","impliedFormat":1},{"version":"19f50a093aa873de6321cd996913aa89e0ec5308a8ae49bf05f071cd9614d0c6","signature":"10ee1d72a1aeb7992ec2517f444db7d425261969e0476b94a1bef6e47fd5c4b6"},{"version":"07e3a9a4ac19e4b39c9403908e87cd24166f9392851d566e0e32b2271dedb4e8","impliedFormat":1},{"version":"6f9f9028067de4e78809b297fad6c6efe5c4da159ce031de1b4047da86cf6866","signature":"4d965e0c950fe0b3981a2264cded5cf0cbc1e5a8baf915a780eb84689f969614"},{"version":"7484cd645652e5de0e944021ff47e2794cd64e91ccba9e2ddfe2e5c4c7e62b89","signature":"b5ff6435fa9c6d61900a8764225558104fce909c6005109cb4ec42a6772052bd"},{"version":"7ad9aed3f5dc3de5049e8ba6912319dace213430b8babffad59e9b3cb8835760","signature":"a7b65e5fbd85d753c99c13a242176ec0f4f024108de502acbd52f82108f9386d"},{"version":"1d7ee0c4eb734d59b6d962bc9151f6330895067cd3058ce6a3cd95347ef5c6e8","impliedFormat":99},{"version":"cf924e26ca902228f18f189c71491704561d78f503e1bfd5e5c7f7cfd4fbbd00","signature":"b5ca2f4d4a420c9c8180e87dc6fb2359d785cf2f3dab4cc4a0dd0c9f541e6e2b"},{"version":"df1bca5fc6bc70b5a4d100bc5e359d8905927cb3534101a90ad6e54334bc4d7a","signature":"57b68e7019ec085b6644c3ce5572dfcf262183369e4e617b1fba51099a851100"},{"version":"61ee1ed58c57d98a9772f321aaffce39201a34288c10bd9d1b9c481dfdeb782a","signature":"79d44304d158c208bad4d8f97802a0742218d6328059981b009bd02b27314a54"},{"version":"a911a3d8df881033bf7dddc7c2e68233d6121c2114826324eae73232d0d30b97","affectsGlobalScope":true}],"root":[[88,91],93,[95,97],[99,102]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"composite":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noFallthroughCasesInSwitch":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../../packages/utils","skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[83,1],[84,2],[86,3],[87,4],[101,5],[88,6],[89,7],[90,7],[91,7],[93,8],[95,9],[96,7],[97,7],[99,10],[100,7]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.2"}
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@vue+shared@3.5.18/node_modules/@vue/shared/dist/shared.d.ts","../../../node_modules/.pnpm/@vue+reactivity@3.5.18/node_modules/@vue/reactivity/dist/reactivity.d.ts","../../../node_modules/.pnpm/@vue+runtime-core@3.5.18/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","../../../node_modules/.pnpm/csstype@3.1.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@vue+runtime-dom@3.5.18/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","../../../node_modules/.pnpm/vue@3.5.18_typescript@5.9.2/node_modules/vue/jsx-runtime/index.d.ts","../../../packages/utils/src/argo-log.ts","../../../packages/utils/src/date-transfer.ts","../../../packages/utils/src/device.ts","../../../packages/utils/src/file-operations.ts","../../../node_modules/.pnpm/xlsx@0.18.5/node_modules/xlsx/types/index.d.ts","../../../packages/utils/src/json.ts","../../../node_modules/.pnpm/@types+ali-oss@6.16.13/node_modules/@types/ali-oss/index.d.ts","../../../packages/utils/src/oss-uploader.ts","../../../packages/utils/src/storage.ts","../../../packages/utils/src/types.ts","../../../packages/utils/src/watermark.ts","../../../node_modules/.pnpm/axios@1.11.0/node_modules/axios/index.d.ts","../../../packages/utils/src/api-client/types.ts","../../../packages/utils/src/api-client/axios-client.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/common.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/hooks.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/retry.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/options.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/core/constants.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/response.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/responsepromise.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/ky.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/types/request.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/errors/httperror.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/errors/timeouterror.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/errors/forceretryerror.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/utils/type-guards.d.ts","../../../node_modules/.pnpm/ky@1.14.1/node_modules/ky/distribution/index.d.ts","../../../packages/utils/src/api-client/fetch-client.ts","../../../packages/utils/src/api-client/index.ts","../../../packages/utils/index.ts","../../../packages/utils/shims.d.ts"],"fileIdsList":[[82],[82,83,84,86],[83,84,85,86],[105],[106],[105,107,110],[110],[103,105,107,108,109,110,111,112,113,114],[105,106,115],[105,106,108],[102,103,104],[107],[111,112,113],[86],[87,88,89,90,91,93,95,96,97,98,117],[87,97,99,100],[87,100,115],[87,100,101,116],[87],[87,119],[87,92],[87,94]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"25e0492430a92b27414c02e43d9a67a96d915cc9982caa3f36096933e1492f1e","impliedFormat":1},{"version":"616a55b9694bdb765470c1f66dc9606779b250520a36b87f4de2e4c594cea9bc","impliedFormat":1},{"version":"7e7187b0314b6ee31f37db0f82da408112ef548713ccbe28796ef551d47a6e0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"591c55c575d645b7f600dd2be6d9cf8d28c4b4a5297d9dfcd41b861fddce04ab","impliedFormat":1},{"version":"269536033c45b92c13747175bf6d197b959559acb119247b3eb9a0eee250c8c5","impliedFormat":1},{"version":"7bdf93e623085b522f7e1bb4fe4ee9c4df2400b53398eb9a803b9f10f911725b","signature":"4085058b6de61f42972027fce952ec6d0f966070d17d023a3f5c3ebd0c869407","affectsGlobalScope":true},{"version":"72af2f99ff91a9a6767e9374d5bcfdfa734f056e0ca4f99acfbdc0b6910cbe6a","signature":"642691020b5d2610d98d8dfa25df7e7c58a2e885d24bdec278f98842b02892f6"},{"version":"de9652b1bdad8aa2fa302b263a6a72265b276fec040394aa3b6c1adcff419ebc","signature":"6364be1269de7f1efc40324fb2cadc9a17d9bd2742d5bc1b95e309d848ca50f6"},{"version":"8f2a5590837d3f29a8d141931432d8b61e019382d1bdcb5d9990f2525242942b","signature":"4f8d8bcaa7127e5ed2d649cd5fc16b4e46b6d6960d82982ede8429d8066f9b96","affectsGlobalScope":true},{"version":"593654eebe902db28ca173f021f74ea9f77e8b344aebb0a80fa4d10f29bb3a9d","impliedFormat":1},{"version":"19f50a093aa873de6321cd996913aa89e0ec5308a8ae49bf05f071cd9614d0c6","signature":"10ee1d72a1aeb7992ec2517f444db7d425261969e0476b94a1bef6e47fd5c4b6"},{"version":"3cee95a3d958bf994db4705fbe6b7ae503867445972247adc49626f7fd16d46a","impliedFormat":1},{"version":"cab10f9be9bc19e3175a7fecd1a3ee3a810c139e8edbb9bd313928cf71d44cb8","signature":"6a2fbda7ededa991e6090e3e1523246344249347d05fbe97b441b3bcf6a5506a"},{"version":"7484cd645652e5de0e944021ff47e2794cd64e91ccba9e2ddfe2e5c4c7e62b89","signature":"b5ff6435fa9c6d61900a8764225558104fce909c6005109cb4ec42a6772052bd"},{"version":"7ad9aed3f5dc3de5049e8ba6912319dace213430b8babffad59e9b3cb8835760","signature":"a7b65e5fbd85d753c99c13a242176ec0f4f024108de502acbd52f82108f9386d"},{"version":"df1bca5fc6bc70b5a4d100bc5e359d8905927cb3534101a90ad6e54334bc4d7a","signature":"57b68e7019ec085b6644c3ce5572dfcf262183369e4e617b1fba51099a851100"},{"version":"1d7ee0c4eb734d59b6d962bc9151f6330895067cd3058ce6a3cd95347ef5c6e8","impliedFormat":99},{"version":"e3bc3272dae75834ff86b3e69dabd4070988ca59cafdcd9bac31224d07b7179d","signature":"274e1dc16e38f7795e19d29a4730ab203e93dd513b54982f08154ffa24f72eec"},{"version":"b07ad91c88aaa542de6d77e0ba6d458fc7623a88139fac2632bcb1eb54cf79a5","signature":"ddbead02f1fbd4a881aa855fbcb178eeab5911d52c346e64e80077a1a97df4d5"},{"version":"20fcb118bebfb69ca52595ac4f0dd500fe457a5cedb0a4186a3b09cb20aad7c7","impliedFormat":99},{"version":"253aaaa09ecea0012b1a66a3b9f1df249a190cbd4ad3a34faed290ffd76cc2ef","impliedFormat":99},{"version":"d8521817842936ef14076cfe1a5a8cd86f6681afab3e1284b4e6f82ef9603c4a","impliedFormat":99},{"version":"731cfe307acc27e7d6a1b7a92485d91e9381e34e8b23d218aa5ee2a53df399e0","impliedFormat":99},{"version":"f89148f4772e016c8de02d18124e0dd5a84a5ac8e111baaa5405e02311c04345","impliedFormat":99},{"version":"b7ff22e70edc0399bdbb137addc7305f349996fe308125c6e29a5616ddfca817","impliedFormat":99},{"version":"303fdf723814de36ab2dde0cac7aee973ff152b9375b94f5919a66a0520b30f2","impliedFormat":99},{"version":"d599aadec3c934bfebce534bb669a3293a57c0ec1b9c037ccc6e5a3ffddda700","impliedFormat":99},{"version":"e60c9658a1253a68172fa78f91409e3f5587007d6d12c8ea63733db038cfaa33","impliedFormat":99},{"version":"c6c9cac842a0ef7f3358f4caf5c24d24bcb8fad986d8c784ccb813edf8011655","impliedFormat":99},{"version":"924e5a838ba92f49627b61352a57dedffc392cdb39954ac4086e8b786637d142","impliedFormat":99},{"version":"cb26ff91cd0ac970c7653b81163eeef385b170b9e13e4fbbd63f92ca8907f1bf","impliedFormat":99},{"version":"84d5ff92c1e1d49743f1140d1388226e40e311968f9de29cdae606b5111e7bae","impliedFormat":99},{"version":"35f8161d6edaddbdecc2a18ed564ac69fa7dee792b49a8d3f33e4181551b6efe","impliedFormat":99},{"version":"21a751f4234f9129bb91001be8240824c9bce40c5b010bd6801fa7bae88ed2ca","signature":"b81f59fc43815dbc136d400d4a362206786b349def10d3bf4bc25be34aad7819"},{"version":"b622510f7cceb49483c3a18e6b1c21970936c512e246e0493b6b6b41ae0fab48","signature":"0ae5b4ffe8e27808dee5ffdf7112c0927f6d519799793813c7162274982966f0"},{"version":"8b9ddc32e6d53ab2563f3a425e99d2a0139d361692e963d7765e35ccc73253db","signature":"88602184760b77d470ad73433b1103ac2f64541749d5ffa63ef2b6eaf2720c5b"},{"version":"a911a3d8df881033bf7dddc7c2e68233d6121c2114826324eae73232d0d30b97","affectsGlobalScope":true}],"root":[[88,91],93,[95,98],100,101,[116,119]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"composite":true,"declaration":true,"declarationDir":"./","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noFallthroughCasesInSwitch":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../../../packages/utils","skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[83,1],[84,2],[86,3],[106,4],[113,5],[111,6],[112,7],[115,8],[103,9],[109,10],[105,11],[108,12],[114,13],[87,14],[118,15],[101,16],[116,17],[117,18],[100,19],[88,20],[89,19],[90,19],[91,19],[93,21],[95,22],[96,19],[97,19],[98,19]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.2"}
|
package/es/src/use-api.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{isPlainObject as e}from"./types.mjs";var s=Object.defineProperty,t=(e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r);const r=class s{constructor(e,r){var i=this;if(this.apiInstance=e,this.isWholeResponse=r,t(this,"useApi",async function(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.isWholeResponse,r=null,o=null;try{const o={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};o.url=(o.proxyPrefix||"")+e.url,delete o.proxyPrefix;const n=await i.apiInstance(o);r=t?n.data:n.data.data}catch(e){"AxiosError"!==e.name?i.isAxiosResponse(e)?o=e.data:i.isErrorResponse(e)&&(o=e):console.error(e)}return{res:r,error:o}}),t(this,"apiClient",async(e,s,t)=>{t??this.isWholeResponse;const r={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};return r.proxyPrefix&&(r.url=(r.proxyPrefix||"")+e.url,delete r.proxyPrefix),await this.apiInstance(r)}),s.instance)return s.instance;s.instance=this,this.isWholeResponse=r}isBusinessError(s){return e(s)&&"string"==typeof s.message&&"number"==typeof s.code&&0!==s.code}isAxiosResponse(s){return e(s)&&void 0!==s.data&&this.isBusinessError(s.data)&&void 0!==s.status&&void 0!==s.statusText&&void 0!==s.headers&&void 0!==s.config&&void 0!==s.request}isErrorResponse(e){return"code"in e&&"data"in e&&"message"in e&&0!==e.code}};t(r,"instance");let i=r;export{i as ApiService};
|
|
2
|
-
//# sourceMappingURL=use-api.mjs.map
|
package/es/src/use-api.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-api.mjs","sources":["../../../../packages/utils/src/use-api.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, Method } from 'axios'\nimport { isPlainObject } from './types'\n\n/**\n * 成功响应的基础约束接口\n * @template T - 响应数据的类型\n */\nexport interface BaseSuccessResponse<T = unknown> {\n data: T\n [key: string]: any\n}\n\n/**\n * 错误响应的基础约束接口\n */\nexport interface BaseErrorResponse {\n [key: string]: any\n}\n\n/**\n * 成功响应的数据结构(默认实现)\n * @template T - 响应数据的类型\n */\nexport interface SuccessResponse<T> extends BaseSuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * 错误响应的数据结构(默认实现)\n */\nexport interface ErrorResponse extends BaseErrorResponse {\n code: number\n data: null\n message: string\n}\n\n/**\n * API 响应的统一封装\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n */\nexport interface UseApiResponse<\n W extends boolean = false,\n T = unknown,\n S extends BaseSuccessResponse<T> = SuccessResponse<T>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n res: W extends true ? S : T\n error: E | null\n}\n\n/**\n * API URL 配置对象类型\n */\nexport interface UrlObjectType {\n url: string\n method: Method\n proxyPrefix?: string\n}\n\n/**\n * API 类型映射,用于定义每个接口的请求和响应类型\n * @template U - URL 配置对象类型\n */\nexport type ApiTypeMap<U extends UrlObjectType> = {\n [K in U['url']]: {\n request: any\n response: any\n }\n}\n\n// 辅助类型,用于提取请求数据类型\ntype RequestPayload<T> = T extends { data: any } ? T['data'] : T\ntype RequestParams<T> = T extends { params: any } ? T['params'] : T\n\n/**\n * API 服务类,提供统一的请求处理和错误处理\n * @template T - API 类型映射\n * @template U - URL 配置对象类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n *\n * @example\n * ```typescript\n * // 定义 API 类型映射\n * interface UserApi extends ApiTypeMap<UserUrlObject> {\n * '/user/list': {\n * request: { page: number; size: number }\n * response: User[]\n * }\n * }\n *\n * // 使用默认响应类型\n * const api = new ApiService<UserApi, UserUrlObject>(axios.create(), false)\n *\n * // 使用自定义响应类型\n * interface CustomSuccessResponse<T> {\n * status: number\n * result: T\n * msg: string\n * }\n *\n * interface CustomErrorResponse {\n * status: number\n * result: null\n * msg: string\n * }\n *\n * const customApi = new ApiService<\n * UserApi,\n * UserUrlObject,\n * CustomSuccessResponse<unknown>,\n * CustomErrorResponse\n * >(axios.create(), false)\n *\n * // 发起请求\n * const { res, error } = await api.useApi({\n * url: '/user/list',\n * method: 'GET',\n * params: { page: 1, size: 10 }\n * })\n * ```\n */\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n S extends BaseSuccessResponse = SuccessResponse<unknown>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: ApiService<any, any, any, any>\n\n /**\n * 构造函数,实现单例模式\n * @param apiInstance - Axios 实例\n * @param isWholeResponse - 是否返回完整响应\n */\n constructor(\n private apiInstance: AxiosInstance,\n private isWholeResponse: boolean,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U, S, E>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: E): boolean {\n return isPlainObject(obj)\n && typeof (obj as any).message === 'string'\n && typeof (obj as any).code === 'number'\n && (obj as any).code !== 0\n }\n\n /**\n * 判断是否为 Axios 响应对象\n * @param value - 待判断的值\n */\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n /**\n * 判断是否为错误响应\n * @param value - 待判断的值\n */\n private isErrorResponse(value: any): value is E {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应,true 返回 SuccessResponse,false 只返回 data\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数(GET 请求会自动转为 params,其他方法转为 data)\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns Promise<UseApiResponse<W, T, S, E>> - 包含 res 和 error 的统一响应对象\n */\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse: W = this.isWholeResponse as W,\n ): Promise<UseApiResponse<W, T[K['url']]['response'], S, E>> => {\n let res: UseApiResponse<W, T[K['url']]['response'], S, E>['res'] | null = null\n let error: UseApiResponse<W, T[K['url']]['response'], S, E>['error'] = null\n\n try {\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n // 发起请求\n const response = await this.apiInstance<S & { data: T[K['url']]['response'] }>(config)\n res = isWholeResponse\n ? (response.data as any)\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data as E\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n\n /**\n * 发起 API 请求\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns 根据 isWholeResponse 返回完整响应或解包后的数据\n */\n public apiClient = async <K extends U, W extends boolean = false>(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<W extends true ? AxiosResponse<T[K['url']]['response']> : T[K['url']]['response']> => {\n const useWholeResponse = isWholeResponse ?? this.isWholeResponse\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n if (config.proxyPrefix) {\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n }\n\n // 发起请求,利用 axios 的第二个泛型参数 R 控制解包\n if (useWholeResponse) {\n return await this.apiInstance<T[K['url']]['response']>(config)\n }\n else {\n return await this.apiInstance<any, T[K['url']]['response']>(config)\n }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","isWholeResponse","_this","this","__publicField","async","axiosConfig","params","arguments","length","undefined","res","error","config","method","includes","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":"sMAgIO,MAAMA,EAAN,MAAMA,EAaXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAE8D,IAD9DN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAAsE,KACtEC,EAAmE,KAEvE,IAEE,MAAMC,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAI5HM,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,YAGd,MAAMC,QAAiBlB,EAAKF,YAAmDa,GAC/EF,EAAMV,EACDmB,EAASH,KACVG,EAASH,KAAKA,IACpB,OACOI,GAEY,eAAbA,EAAIC,KACFpB,EAAKqB,gBAAgBF,GACvBT,EAAQS,EAAIJ,KAELf,EAAKsB,gBAAgBH,KAC5BT,EAAQS,GAIVI,QAAQb,MAAMS,EAElB,CAEA,MAAO,CAAEV,MAAWC,QACtB,GAWAR,EAAAD,KAAO,YAAYE,MACjBC,EAGAC,EACAN,KAEyBA,GAAmBE,KAAKF,gBAAjD,MAEMY,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAU5H,OANIM,EAAOM,cACTN,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,mBAKDhB,KAAKH,YAAqCa,KAjIrDf,EAAW4B,SACb,OAAO5B,EAAW4B,SAEpB5B,EAAW4B,SAAWvB,KACtBA,KAAKF,gBAAkBA,CACzB,CAMQ0B,eAAAA,CAAgBC,GACtB,OAAOC,EAAcD,IACgB,iBAAxBA,EAAYE,SACS,iBAArBF,EAAYG,MACE,IAArBH,EAAYG,IACpB,CAMQR,eAAAA,CAAgBS,GACtB,OAAOH,EAAcG,SACD,IAAfA,EAAMf,MACNd,KAAKwB,gBAAgBK,EAAMf,YACV,IAAjBe,EAAMC,aACe,IAArBD,EAAME,iBACY,IAAlBF,EAAMG,cACW,IAAjBH,EAAMnB,aACY,IAAlBmB,EAAMI,OACb,CAMQZ,eAAAA,CAAgBQ,GACtB,MAAO,SAAUA,GAAS,SAAUA,GAAS,YAAaA,GAAwB,IAAfA,EAAMD,IAC3E,GAlDA3B,EANWN,EAMI,YANV,IAAMuC,EAANvC"}
|
package/lib/src/use-api.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("./types.cjs"),s=Object.defineProperty,t=(e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r);const r=class s{constructor(e,r){var i=this;if(this.apiInstance=e,this.isWholeResponse=r,t(this,"useApi",async function(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.isWholeResponse,r=null,o=null;try{const o={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};o.url=(o.proxyPrefix||"")+e.url,delete o.proxyPrefix;const n=await i.apiInstance(o);r=t?n.data:n.data.data}catch(e){"AxiosError"!==e.name?i.isAxiosResponse(e)?o=e.data:i.isErrorResponse(e)&&(o=e):console.error(e)}return{res:r,error:o}}),t(this,"apiClient",async(e,s,t)=>{t??this.isWholeResponse;const r={...e,...s?e.method&&["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}:{}};return r.proxyPrefix&&(r.url=(r.proxyPrefix||"")+e.url,delete r.proxyPrefix),await this.apiInstance(r)}),s.instance)return s.instance;s.instance=this,this.isWholeResponse=r}isBusinessError(s){return e.isPlainObject(s)&&"string"==typeof s.message&&"number"==typeof s.code&&0!==s.code}isAxiosResponse(s){return e.isPlainObject(s)&&void 0!==s.data&&this.isBusinessError(s.data)&&void 0!==s.status&&void 0!==s.statusText&&void 0!==s.headers&&void 0!==s.config&&void 0!==s.request}isErrorResponse(e){return"code"in e&&"data"in e&&"message"in e&&0!==e.code}};t(r,"instance");let i=r;exports.ApiService=i;
|
|
2
|
-
//# sourceMappingURL=use-api.cjs.map
|
package/lib/src/use-api.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-api.cjs","sources":["../../../../packages/utils/src/use-api.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, Method } from 'axios'\nimport { isPlainObject } from './types'\n\n/**\n * 成功响应的基础约束接口\n * @template T - 响应数据的类型\n */\nexport interface BaseSuccessResponse<T = unknown> {\n data: T\n [key: string]: any\n}\n\n/**\n * 错误响应的基础约束接口\n */\nexport interface BaseErrorResponse {\n [key: string]: any\n}\n\n/**\n * 成功响应的数据结构(默认实现)\n * @template T - 响应数据的类型\n */\nexport interface SuccessResponse<T> extends BaseSuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * 错误响应的数据结构(默认实现)\n */\nexport interface ErrorResponse extends BaseErrorResponse {\n code: number\n data: null\n message: string\n}\n\n/**\n * API 响应的统一封装\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n */\nexport interface UseApiResponse<\n W extends boolean = false,\n T = unknown,\n S extends BaseSuccessResponse<T> = SuccessResponse<T>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n res: W extends true ? S : T\n error: E | null\n}\n\n/**\n * API URL 配置对象类型\n */\nexport interface UrlObjectType {\n url: string\n method: Method\n proxyPrefix?: string\n}\n\n/**\n * API 类型映射,用于定义每个接口的请求和响应类型\n * @template U - URL 配置对象类型\n */\nexport type ApiTypeMap<U extends UrlObjectType> = {\n [K in U['url']]: {\n request: any\n response: any\n }\n}\n\n// 辅助类型,用于提取请求数据类型\ntype RequestPayload<T> = T extends { data: any } ? T['data'] : T\ntype RequestParams<T> = T extends { params: any } ? T['params'] : T\n\n/**\n * API 服务类,提供统一的请求处理和错误处理\n * @template T - API 类型映射\n * @template U - URL 配置对象类型\n * @template S - 自定义成功响应类型\n * @template E - 自定义错误响应类型\n *\n * @example\n * ```typescript\n * // 定义 API 类型映射\n * interface UserApi extends ApiTypeMap<UserUrlObject> {\n * '/user/list': {\n * request: { page: number; size: number }\n * response: User[]\n * }\n * }\n *\n * // 使用默认响应类型\n * const api = new ApiService<UserApi, UserUrlObject>(axios.create(), false)\n *\n * // 使用自定义响应类型\n * interface CustomSuccessResponse<T> {\n * status: number\n * result: T\n * msg: string\n * }\n *\n * interface CustomErrorResponse {\n * status: number\n * result: null\n * msg: string\n * }\n *\n * const customApi = new ApiService<\n * UserApi,\n * UserUrlObject,\n * CustomSuccessResponse<unknown>,\n * CustomErrorResponse\n * >(axios.create(), false)\n *\n * // 发起请求\n * const { res, error } = await api.useApi({\n * url: '/user/list',\n * method: 'GET',\n * params: { page: 1, size: 10 }\n * })\n * ```\n */\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n S extends BaseSuccessResponse = SuccessResponse<unknown>,\n E extends BaseErrorResponse = ErrorResponse,\n> {\n private static instance: ApiService<any, any, any, any>\n\n /**\n * 构造函数,实现单例模式\n * @param apiInstance - Axios 实例\n * @param isWholeResponse - 是否返回完整响应\n */\n constructor(\n private apiInstance: AxiosInstance,\n private isWholeResponse: boolean,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U, S, E>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: E): boolean {\n return isPlainObject(obj)\n && typeof (obj as any).message === 'string'\n && typeof (obj as any).code === 'number'\n && (obj as any).code !== 0\n }\n\n /**\n * 判断是否为 Axios 响应对象\n * @param value - 待判断的值\n */\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n /**\n * 判断是否为错误响应\n * @param value - 待判断的值\n */\n private isErrorResponse(value: any): value is E {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n /**\n * 发起 API 请求,返回统一的响应格式 { res, error }\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应,true 返回 SuccessResponse,false 只返回 data\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数(GET 请求会自动转为 params,其他方法转为 data)\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns Promise<UseApiResponse<W, T, S, E>> - 包含 res 和 error 的统一响应对象\n */\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse: W = this.isWholeResponse as W,\n ): Promise<UseApiResponse<W, T[K['url']]['response'], S, E>> => {\n let res: UseApiResponse<W, T[K['url']]['response'], S, E>['res'] | null = null\n let error: UseApiResponse<W, T[K['url']]['response'], S, E>['error'] = null\n\n try {\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n // 发起请求\n const response = await this.apiInstance<S & { data: T[K['url']]['response'] }>(config)\n res = isWholeResponse\n ? (response.data as any)\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data as E\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n\n /**\n * 发起 API 请求\n * @template K - URL 配置对象类型\n * @template W - 是否返回完整响应\n * @param axiosConfig - Axios 请求配置\n * @param params - 请求参数\n * @param isWholeResponse - 是否返回完整响应,默认使用实例配置\n * @returns 根据 isWholeResponse 返回完整响应或解包后的数据\n */\n public apiClient = async <K extends U, W extends boolean = false>(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<W extends true ? AxiosResponse<T[K['url']]['response']> : T[K['url']]['response']> => {\n const useWholeResponse = isWholeResponse ?? this.isWholeResponse\n // 处理请求配置\n const config = {\n ...axiosConfig,\n ...(params ? (axiosConfig.method && ['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }) : {}),\n }\n\n // 处理代理前缀\n if (config.proxyPrefix) {\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n }\n\n // 发起请求,利用 axios 的第二个泛型参数 R 控制解包\n if (useWholeResponse) {\n return await this.apiInstance<T[K['url']]['response']>(config)\n }\n else {\n return await this.apiInstance<any, T[K['url']]['response']>(config)\n }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","isWholeResponse","_this","this","__publicField","async","axiosConfig","params","arguments","length","undefined","res","error","config","method","includes","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":"gMAgIO,MAAMA,EAAN,MAAMA,EAaXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAE8D,IAD9DN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAAsE,KACtEC,EAAmE,KAEvE,IAEE,MAAMC,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAI5HM,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,YAGd,MAAMC,QAAiBlB,EAAKF,YAAmDa,GAC/EF,EAAMV,EACDmB,EAASH,KACVG,EAASH,KAAKA,IACpB,OACOI,GAEY,eAAbA,EAAIC,KACFpB,EAAKqB,gBAAgBF,GACvBT,EAAQS,EAAIJ,KAELf,EAAKsB,gBAAgBH,KAC5BT,EAAQS,GAIVI,QAAQb,MAAMS,EAElB,CAEA,MAAO,CAAEV,MAAWC,QACtB,GAWAR,EAAAD,KAAO,YAAYE,MACjBC,EAGAC,EACAN,KAEyBA,GAAmBE,KAAKF,gBAAjD,MAEMY,EAAS,IACVP,KACCC,EAAUD,EAAYQ,QAAU,CAAC,OAAOC,SAAST,EAAYQ,OAAOE,eAAiB,CAAET,UAAW,CAAEU,KAAMV,GAAY,CAAA,GAU5H,OANIM,EAAOM,cACTN,EAAOK,KAAOL,EAAOM,aAAe,IAAMb,EAAYY,WAC/CL,EAAOM,mBAKDhB,KAAKH,YAAqCa,KAjIrDf,EAAW4B,SACb,OAAO5B,EAAW4B,SAEpB5B,EAAW4B,SAAWvB,KACtBA,KAAKF,gBAAkBA,CACzB,CAMQ0B,eAAAA,CAAgBC,GACtB,OAAOC,EAAAA,cAAcD,IACgB,iBAAxBA,EAAYE,SACS,iBAArBF,EAAYG,MACE,IAArBH,EAAYG,IACpB,CAMQR,eAAAA,CAAgBS,GACtB,OAAOH,gBAAcG,SACD,IAAfA,EAAMf,MACNd,KAAKwB,gBAAgBK,EAAMf,YACV,IAAjBe,EAAMC,aACe,IAArBD,EAAME,iBACY,IAAlBF,EAAMG,cACW,IAAjBH,EAAMnB,aACY,IAAlBmB,EAAMI,OACb,CAMQZ,eAAAA,CAAgBQ,GACtB,MAAO,SAAUA,GAAS,SAAUA,GAAS,YAAaA,GAAwB,IAAfA,EAAMD,IAC3E,GAlDA3B,EANWN,EAMI,YANV,IAAMuC,EAANvC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-api.d.ts","sourceRoot":"","sources":["../../../../packages/utils/src/use-api.ts"],"names":[],"mappings":"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"}
|