@qxs-bns/utils 0.0.29 → 0.0.31

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.
@@ -1,2 +1,2 @@
1
- import e from"ali-oss";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);class r extends Error{constructor(e){super(e),this.name="OssError"}}const n={accessKeyId:"",accessKeySecret:"",stsToken:"",secure:!0,bucket:"yao-file-daily",region:"oss-cn-hangzhou",cors:!0,useFetch:!1,timeout:6e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE","Access-Control-Allow-Headers":"*"}};class c{static async getOssCredentials(e){const s=await e();if(!s)throw new r("获取凭证失败");return{accessKeyId:s.accessKeyId,accessKeySecret:s.accessKeySecret,securityToken:s.securityToken}}static async initOssClient(s,t){const c=Date.now()-this.createTokenTime;if(!n.accessKeyId||c>this.expireTime)try{const{accessKeyId:r,accessKeySecret:c,securityToken:i}=await this.getOssCredentials(s);Object.assign(n,{accessKeyId:r,accessKeySecret:c,stsToken:i,...t,refreshSTSToken:async()=>await this.getOssCredentials(s),refreshSTSTokenInterval:3e5}),this.createTokenTime=Date.now(),this.client=new e(n)}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async uploadFile(e){const{file:s,onProgress:t=()=>{},path:n="ksh/pdf",getCredentials:c,...i}=e;await this.initOssClient(c,i);try{return await this.client.multipartUpload(`${n}/${s.name}`,s,{progress(e){t({percent:Math.round(100*e)})}})}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e,s,t){await this.initOssClient(s,t);try{return await this.client.signatureUrl(e,{expires:3600})}catch(e){throw new r(e instanceof Error?e.message:String(e))}}}t(c,"client"),t(c,"createTokenTime",0),t(c,"expireTime",9e5);const i=c.uploadFile.bind(c),a=c.generateSignedUrl.bind(c);export{r as OssError,c as OssUploader,a as generateSignedUrl,i as uploadFile};
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({...n,...s}),a=this.clients.get(r),c=Date.now();if(a&&c-a.createTime<this.expireTime)return a.client;try{const{securityToken:i,...a}=await this.getOssCredentials(t),o={...n,...s,stsToken:i,...a,refreshSTSToken:async()=>{const e=await this.getOssCredentials(t);return{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,stsToken:e.securityToken}},refreshSTSTokenInterval:3e5},l=new e(o);return this.clients.set(r,{client:l,createTime:c,credentials:{...a,securityToken:i}}),l}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async uploadFile(e){const{file:t,onProgress:s=()=>{},path:n="ksh/pdf",getCredentials:r,...a}=e,c=await this.initOssClient(r,a);try{return await c.multipartUpload(`${n}/${t.name}`,t,{progress(e){s({percent:Math.round(100*e)})}})}catch(e){throw new i(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e,t,s){const n=await this.initOssClient(t,s);try{return await n.signatureUrl(e,{expires:3600})}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.uploadFile.bind(r),c=r.generateSignedUrl.bind(r);export{i as OssError,r as OssUploader,c as generateSignedUrl,a 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\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\n}\n\nexport interface OssClientConfig {\n accessKeyId: string\n accessKeySecret: string\n stsToken: string\n secure: boolean\n bucket: string\n region: string\n cors: boolean\n useFetch: boolean\n timeout: number\n headers: Record<string, string>\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OssClientConfig = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n cors: true,\n useFetch: false,\n timeout: 60000,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',\n 'Access-Control-Allow-Headers': '*',\n },\n}\n\nexport class OssUploader {\n private static client: OSS\n private static createTokenTime: number = 0\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return {\n accessKeyId: credentials.accessKeyId,\n accessKeySecret: credentials.accessKeySecret,\n securityToken: credentials.securityToken,\n }\n }\n\n // 修改初始化方法\n public static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void> {\n const diff = Date.now() - this.createTokenTime\n if (!ossConfig.accessKeyId || diff > this.expireTime) {\n try {\n const { accessKeyId, accessKeySecret, securityToken: stsToken } = await this.getOssCredentials(getCredentials)\n Object.assign(ossConfig, {\n accessKeyId,\n accessKeySecret,\n stsToken,\n ...args,\n refreshSTSToken: async () => {\n return await this.getOssCredentials(getCredentials)\n },\n refreshSTSTokenInterval: 300000,\n })\n this.createTokenTime = Date.now()\n this.client = new OSS(ossConfig)\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n }\n\n // 修改上传方法\n public static async uploadFile(opts: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await this.client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\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(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n await this.initOssClient(getCredentials, args)\n try {\n return await this.client.signatureUrl(objectKey, { expires: 60 * 60 })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\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","cors","useFetch","timeout","headers","OssUploader","getOssCredentials","getCredentials","credentials","securityToken","initOssClient","args","diff","Date","now","createTokenTime","expireTime","Object","assign","refreshSTSToken","async","refreshSTSTokenInterval","client","OSS","error","String","uploadFile","opts","file","onProgress","path","rest","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","__publicField","bind"],"mappings":"iLA6BO,MAAMA,UAAiBC,MAC5BC,WAAAA,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,UACd,EAGF,MAAMC,EAA6B,CACjCC,YAAa,GACbC,gBAAiB,GACjBC,SAAU,GACVC,QAAQ,EACRC,OAAQ,iBACRC,OAAQ,kBACRC,MAAM,EACNC,UAAU,EACVC,QAAS,IACTC,QAAS,CACP,8BAA+B,IAC/B,+BAAgC,yBAChC,+BAAgC,MAI7B,MAAMC,EAMX,8BAAqBC,CAAkBC,GACrC,MAAMC,QAAoBD,IAC1B,IAAKC,EACH,MAAM,IAAIrB,EAAS,UAErB,MAAO,CACLQ,YAAaa,EAAYb,YACzBC,gBAAiBY,EAAYZ,gBAC7Ba,cAAeD,EAAYC,cAE/B,CAGA,0BAAoBC,CAAcH,EAA6CI,GAC7E,MAAMC,EAAOC,KAAKC,MAAQtB,KAAKuB,gBAC/B,IAAKrB,EAAUC,aAAeiB,EAAOpB,KAAKwB,WACxC,IACE,MAAMrB,YAAEA,kBAAaC,EAAiBa,cAAeZ,SAAmBL,KAAKc,kBAAkBC,GAC/FU,OAAOC,OAAOxB,EAAW,CACvBC,cACAC,kBACAC,cACGc,EACHQ,gBAAiBC,eACF5B,KAAKc,kBAAkBC,GAEtCc,wBAAyB,MAE3B7B,KAAKuB,gBAAkBF,KAAKC,MAC5BtB,KAAK8B,OAAS,IAAIC,EAAI7B,EACxB,OACO8B,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CAEJ,CAGA,uBAAoBE,CAAWC,GAC7B,MAAMC,KAAEA,EAAAC,WAAMA,EAAaA,YAAUC,EAAO,UAAAvB,eAAWA,KAAmBwB,GAASJ,QAE7EnC,KAAKkB,cAAcH,EAAgBwB,GAEzC,IAME,aALqBvC,KAAK8B,OAAOU,gBAAgB,GAAGF,KAAQF,EAAKnC,OAAQmC,EAAM,CAC7EK,QAAAA,CAASC,GACPL,EAAW,CAAEM,QAASC,KAAKC,MAAU,IAAJH,IACnC,GAGJ,OACOV,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,CAGA,8BAAoBc,CAClBC,EACAhC,EACAI,SAEMnB,KAAKkB,cAAcH,EAAgBI,GACzC,IACE,aAAanB,KAAK8B,OAAOkB,aAAaD,EAAW,CAAEE,QAAS,MAC9D,OACOjB,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,EA1EAkB,EADWrC,EACI,UACfqC,EAFWrC,EAEI,kBAA0B,GACzCqC,EAHWrC,EAGa,aAAa,KA4EhC,MAAMqB,EAAarB,EAAYqB,WAAWiB,KAAKtC,GACzCiC,EAAoBjC,EAAYiC,kBAAkBK,KAAKtC"}
1
+ {"version":3,"file":"oss-uploader.mjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OSS.Options, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\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: OssCredentials }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\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: Partial<OSS.Options>): 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 // 修改初始化方法 - 返回对应配置的 client\n private static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<OSS> {\n const clientKey = this.getClientKey({ ...ossConfig, ...args })\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 // 获取新凭证\n const { securityToken: stsToken, ...credentials } = await this.getOssCredentials(getCredentials)\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n ...args,\n stsToken,\n ...credentials,\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: { ...credentials, securityToken: stsToken },\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: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n const client = await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\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(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n const client = await this.initOssClient(getCredentials, args)\n try {\n return await client.signatureUrl(objectKey, { expires: 60 * 60 })\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","args","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","uploadFile","opts","file","onProgress","path","rest","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"iLAgBO,MAAMA,UAAiBC,MAC5BC,WAAAA,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,UACd,EAGF,MAAMC,EAAyB,CAC7BC,YAAa,GACbC,gBAAiB,GACjBC,SAAU,GACVC,QAAQ,EACRC,OAAQ,iBACRC,OAAQ,kBACRC,QAAS,KAGJ,MAAMC,EAMX,8BAAqBC,CAAkBC,GACrC,MAAMC,QAAoBD,IAC1B,IAAKC,EACH,MAAM,IAAIlB,EAAS,UAErB,OAAOkB,CACT,CAGA,mBAAeC,CAAaC,GAI1B,MAAO,GAHUA,EAAOC,UAAY,MACrBD,EAAOP,QAAUN,EAAUM,UAC3BO,EAAOR,QAAUL,EAAUK,QAE5C,CAGA,0BAAqBU,CAAcL,EAA6CM,GAC9E,MAAMC,EAAYnB,KAAKc,aAAa,IAAKZ,KAAcgB,IACjDE,EAASpB,KAAKqB,QAAQC,IAAIH,GAC1BI,EAAMC,KAAKD,MAGjB,GAAIH,GAAWG,EAAMH,EAAOK,WAAczB,KAAK0B,WAC7C,OAAON,EAAOO,OAGhB,IAEE,MAAQC,cAAevB,KAAaQ,SAAsBb,KAAKW,kBAAkBC,GAG3EiB,EAA2B,IAC5B3B,KACAgB,EACHb,cACGQ,EACHiB,gBAAiBC,UACf,MAAMC,QAAchC,KAAKW,kBAAkBC,GAC3C,MAAO,CACLT,YAAa6B,EAAM7B,YACnBC,gBAAiB4B,EAAM5B,gBACvBC,SAAU2B,EAAMJ,gBAGpBK,wBAAyB,KAIrBN,EAAS,IAAIO,EAAIL,GASvB,OANA7B,KAAKqB,QAAQc,IAAIhB,EAAW,CAC1BQ,SACAF,WAAYF,EACZV,YAAa,IAAKA,EAAae,cAAevB,KAGzCsB,CACT,OACOS,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,uBAAoBE,CAAWC,GAC7B,MAAMC,KAAEA,EAAAC,WAAMA,EAAaA,YAAUC,EAAO,UAAA9B,eAAWA,KAAmB+B,GAASJ,EAE7EZ,QAAe3B,KAAKiB,cAAcL,EAAgB+B,GAExD,IAME,aALqBhB,EAAOiB,gBAAgB,GAAGF,KAAQF,EAAKvC,OAAQuC,EAAM,CACxEK,QAAAA,CAASC,GACPL,EAAW,CAAEM,QAASC,KAAKC,MAAU,IAAJH,IACnC,GAGJ,OACOV,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,8BAAoBc,CAClBC,EACAvC,EACAM,GAEA,MAAMS,QAAe3B,KAAKiB,cAAcL,EAAgBM,GACxD,IACE,aAAaS,EAAOyB,aAAaD,EAAW,CAAEE,QAAS,MACzD,OACOjB,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,0BAAckB,GACZ,MAAM/B,EAAMC,KAAKD,MACjB,IAAA,MAAYgC,EAAKC,KAAUxD,KAAKqB,QAAQoC,UAClClC,EAAMiC,EAAM/B,YAAczB,KAAK0B,YACjC1B,KAAKqB,QAAQqC,OAAOH,EAG1B,CAGA,sBAAcI,GACZ3D,KAAKqB,QAAQuC,OACf,EApHAC,EAFWnD,EAEI,UAAyF,IAAIoD,KAC5GD,EAHWnD,EAGa,aAAa,KAuHhC,MAAM4B,EAAa5B,EAAY4B,WAAWyB,KAAKrD,GACzCwC,EAAoBxC,EAAYwC,kBAAkBa,KAAKrD"}
@@ -1 +1 @@
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 SuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * 错误响应的数据结构\n */\nexport interface ErrorResponse {\n code: number\n data: null\n message: string\n}\n\n/**\n * API 响应的统一封装\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n */\nexport interface UseApiResponse<W extends boolean = false, T = unknown> {\n res: W extends true ? SuccessResponse<T> : T\n error: ErrorResponse | 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 *\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 * // 创建 API 服务实例\n * const api = new ApiService<UserApi, UserUrlObject>(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> {\n private static instance: ApiService<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>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: ErrorResponse): boolean {\n return isPlainObject(obj)\n && typeof obj.message === 'string'\n && typeof obj.code === 'number'\n && obj.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 ErrorResponse {\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>> - 包含 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']>> => {\n let res: UseApiResponse<W, T[K['url']]['response']>['res'] | null = null\n let error: UseApiResponse['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<SuccessResponse<T[K['url']]['response']>>(config)\n res = isWholeResponse\n ? response.data\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data\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":"sMAmFO,MAAMA,EAAN,MAAMA,EAWXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAEwD,IADxDN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAAgE,KAChEC,EAAiC,KAErC,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,YAAsDa,GAClFF,EAAMV,EACFmB,EAASH,KACTG,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,IACO,iBAAhBA,EAAIE,SACS,iBAAbF,EAAIG,MACE,IAAbH,EAAIG,IACX,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,EAJWN,EAII,YAJV,IAAMuC,EAANvC"}
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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("ali-oss"),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);class r extends Error{constructor(e){super(e),this.name="OssError"}}const i={accessKeyId:"",accessKeySecret:"",stsToken:"",secure:!0,bucket:"yao-file-daily",region:"oss-cn-hangzhou",cors:!0,useFetch:!1,timeout:6e4,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE","Access-Control-Allow-Headers":"*"}};class n{static async getOssCredentials(e){const s=await e();if(!s)throw new r("获取凭证失败");return{accessKeyId:s.accessKeyId,accessKeySecret:s.accessKeySecret,securityToken:s.securityToken}}static async initOssClient(s,t){const n=Date.now()-this.createTokenTime;if(!i.accessKeyId||n>this.expireTime)try{const{accessKeyId:r,accessKeySecret:n,securityToken:a}=await this.getOssCredentials(s);Object.assign(i,{accessKeyId:r,accessKeySecret:n,stsToken:a,...t,refreshSTSToken:async()=>await this.getOssCredentials(s),refreshSTSTokenInterval:3e5}),this.createTokenTime=Date.now(),this.client=new e(i)}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async uploadFile(e){const{file:s,onProgress:t=()=>{},path:i="ksh/pdf",getCredentials:n,...a}=e;await this.initOssClient(n,a);try{return await this.client.multipartUpload(`${i}/${s.name}`,s,{progress(e){t({percent:Math.round(100*e)})}})}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e,s,t){await this.initOssClient(s,t);try{return await this.client.signatureUrl(e,{expires:3600})}catch(e){throw new r(e instanceof Error?e.message:String(e))}}}t(n,"client"),t(n,"createTokenTime",0),t(n,"expireTime",9e5);const a=n.uploadFile.bind(n),c=n.generateSignedUrl.bind(n);exports.OssError=r,exports.OssUploader=n,exports.generateSignedUrl=c,exports.uploadFile=a;
1
+ "use strict";var e=require("ali-oss"),t=Object.defineProperty,s=(e,s,r)=>((e,s,r)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[s]=r)(e,"symbol"!=typeof s?s+"":s,r);class r extends Error{constructor(e){super(e),this.name="OssError"}}const i={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 r("获取凭证失败");return t}static getClientKey(e){return`${e.endpoint||""}-${e.region||i.region}-${e.bucket||i.bucket}`}static async initOssClient(t,s){const n=this.getClientKey({...i,...s}),a=this.clients.get(n),c=Date.now();if(a&&c-a.createTime<this.expireTime)return a.client;try{const{securityToken:r,...a}=await this.getOssCredentials(t),o={...i,...s,stsToken:r,...a,refreshSTSToken:async()=>{const e=await this.getOssCredentials(t);return{accessKeyId:e.accessKeyId,accessKeySecret:e.accessKeySecret,stsToken:e.securityToken}},refreshSTSTokenInterval:3e5},l=new e(o);return this.clients.set(n,{client:l,createTime:c,credentials:{...a,securityToken:r}}),l}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async uploadFile(e){const{file:t,onProgress:s=()=>{},path:i="ksh/pdf",getCredentials:n,...a}=e,c=await this.initOssClient(n,a);try{return await c.multipartUpload(`${i}/${t.name}`,t,{progress(e){s({percent:Math.round(100*e)})}})}catch(e){throw new r(e instanceof Error?e.message:String(e))}}static async generateSignedUrl(e,t,s){const i=await this.initOssClient(t,s);try{return await i.signatureUrl(e,{expires:3600})}catch(e){throw new r(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.uploadFile.bind(n),c=n.generateSignedUrl.bind(n);exports.OssError=r,exports.OssUploader=n,exports.generateSignedUrl=c,exports.uploadFile=a;
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\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\n}\n\nexport interface OssClientConfig {\n accessKeyId: string\n accessKeySecret: string\n stsToken: string\n secure: boolean\n bucket: string\n region: string\n cors: boolean\n useFetch: boolean\n timeout: number\n headers: Record<string, string>\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OssClientConfig = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n cors: true,\n useFetch: false,\n timeout: 60000,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',\n 'Access-Control-Allow-Headers': '*',\n },\n}\n\nexport class OssUploader {\n private static client: OSS\n private static createTokenTime: number = 0\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return {\n accessKeyId: credentials.accessKeyId,\n accessKeySecret: credentials.accessKeySecret,\n securityToken: credentials.securityToken,\n }\n }\n\n // 修改初始化方法\n public static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void> {\n const diff = Date.now() - this.createTokenTime\n if (!ossConfig.accessKeyId || diff > this.expireTime) {\n try {\n const { accessKeyId, accessKeySecret, securityToken: stsToken } = await this.getOssCredentials(getCredentials)\n Object.assign(ossConfig, {\n accessKeyId,\n accessKeySecret,\n stsToken,\n ...args,\n refreshSTSToken: async () => {\n return await this.getOssCredentials(getCredentials)\n },\n refreshSTSTokenInterval: 300000,\n })\n this.createTokenTime = Date.now()\n this.client = new OSS(ossConfig)\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n }\n\n // 修改上传方法\n public static async uploadFile(opts: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await this.client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\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(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n await this.initOssClient(getCredentials, args)\n try {\n return await this.client.signatureUrl(objectKey, { expires: 60 * 60 })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\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","cors","useFetch","timeout","headers","OssUploader","getOssCredentials","getCredentials","credentials","securityToken","initOssClient","args","diff","Date","now","createTokenTime","expireTime","Object","assign","refreshSTSToken","async","refreshSTSTokenInterval","client","OSS","error","String","uploadFile","opts","file","onProgress","path","rest","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","__publicField","bind"],"mappings":"4LA6BO,MAAMA,UAAiBC,MAC5BC,WAAAA,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,UACd,EAGF,MAAMC,EAA6B,CACjCC,YAAa,GACbC,gBAAiB,GACjBC,SAAU,GACVC,QAAQ,EACRC,OAAQ,iBACRC,OAAQ,kBACRC,MAAM,EACNC,UAAU,EACVC,QAAS,IACTC,QAAS,CACP,8BAA+B,IAC/B,+BAAgC,yBAChC,+BAAgC,MAI7B,MAAMC,EAMX,8BAAqBC,CAAkBC,GACrC,MAAMC,QAAoBD,IAC1B,IAAKC,EACH,MAAM,IAAIrB,EAAS,UAErB,MAAO,CACLQ,YAAaa,EAAYb,YACzBC,gBAAiBY,EAAYZ,gBAC7Ba,cAAeD,EAAYC,cAE/B,CAGA,0BAAoBC,CAAcH,EAA6CI,GAC7E,MAAMC,EAAOC,KAAKC,MAAQtB,KAAKuB,gBAC/B,IAAKrB,EAAUC,aAAeiB,EAAOpB,KAAKwB,WACxC,IACE,MAAMrB,YAAEA,kBAAaC,EAAiBa,cAAeZ,SAAmBL,KAAKc,kBAAkBC,GAC/FU,OAAOC,OAAOxB,EAAW,CACvBC,cACAC,kBACAC,cACGc,EACHQ,gBAAiBC,eACF5B,KAAKc,kBAAkBC,GAEtCc,wBAAyB,MAE3B7B,KAAKuB,gBAAkBF,KAAKC,MAC5BtB,KAAK8B,OAAS,IAAIC,EAAI7B,EACxB,OACO8B,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CAEJ,CAGA,uBAAoBE,CAAWC,GAC7B,MAAMC,KAAEA,EAAAC,WAAMA,EAAaA,YAAUC,EAAO,UAAAvB,eAAWA,KAAmBwB,GAASJ,QAE7EnC,KAAKkB,cAAcH,EAAgBwB,GAEzC,IAME,aALqBvC,KAAK8B,OAAOU,gBAAgB,GAAGF,KAAQF,EAAKnC,OAAQmC,EAAM,CAC7EK,QAAAA,CAASC,GACPL,EAAW,CAAEM,QAASC,KAAKC,MAAU,IAAJH,IACnC,GAGJ,OACOV,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,CAGA,8BAAoBc,CAClBC,EACAhC,EACAI,SAEMnB,KAAKkB,cAAcH,EAAgBI,GACzC,IACE,aAAanB,KAAK8B,OAAOkB,aAAaD,EAAW,CAAEE,QAAS,MAC9D,OACOjB,GACL,MAAM,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,EA1EAkB,EADWrC,EACI,UACfqC,EAFWrC,EAEI,kBAA0B,GACzCqC,EAHWrC,EAGa,aAAa,KA4EhC,MAAMqB,EAAarB,EAAYqB,WAAWiB,KAAKtC,GACzCiC,EAAoBjC,EAAYiC,kBAAkBK,KAAKtC"}
1
+ {"version":3,"file":"oss-uploader.cjs","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OSS.Options, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\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: OssCredentials }> = new Map()\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\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: Partial<OSS.Options>): 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 // 修改初始化方法 - 返回对应配置的 client\n private static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<OSS> {\n const clientKey = this.getClientKey({ ...ossConfig, ...args })\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 // 获取新凭证\n const { securityToken: stsToken, ...credentials } = await this.getOssCredentials(getCredentials)\n\n // 合并配置\n const finalConfig: OSS.Options = {\n ...ossConfig,\n ...args,\n stsToken,\n ...credentials,\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: { ...credentials, securityToken: stsToken },\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: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n const client = await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\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(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n const client = await this.initOssClient(getCredentials, args)\n try {\n return await client.signatureUrl(objectKey, { expires: 60 * 60 })\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","args","clientKey","cached","clients","get","now","Date","createTime","expireTime","client","securityToken","finalConfig","refreshSTSToken","async","creds","refreshSTSTokenInterval","OSS","set","error","String","uploadFile","opts","file","onProgress","path","rest","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","clearExpiredClients","key","value","entries","delete","clearAllClients","clear","__publicField","Map","bind"],"mappings":"4LAgBO,MAAMA,UAAiBC,MAC5BC,WAAAA,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,UACd,EAGF,MAAMC,EAAyB,CAC7BC,YAAa,GACbC,gBAAiB,GACjBC,SAAU,GACVC,QAAQ,EACRC,OAAQ,iBACRC,OAAQ,kBACRC,QAAS,KAGJ,MAAMC,EAMX,8BAAqBC,CAAkBC,GACrC,MAAMC,QAAoBD,IAC1B,IAAKC,EACH,MAAM,IAAIlB,EAAS,UAErB,OAAOkB,CACT,CAGA,mBAAeC,CAAaC,GAI1B,MAAO,GAHUA,EAAOC,UAAY,MACrBD,EAAOP,QAAUN,EAAUM,UAC3BO,EAAOR,QAAUL,EAAUK,QAE5C,CAGA,0BAAqBU,CAAcL,EAA6CM,GAC9E,MAAMC,EAAYnB,KAAKc,aAAa,IAAKZ,KAAcgB,IACjDE,EAASpB,KAAKqB,QAAQC,IAAIH,GAC1BI,EAAMC,KAAKD,MAGjB,GAAIH,GAAWG,EAAMH,EAAOK,WAAczB,KAAK0B,WAC7C,OAAON,EAAOO,OAGhB,IAEE,MAAQC,cAAevB,KAAaQ,SAAsBb,KAAKW,kBAAkBC,GAG3EiB,EAA2B,IAC5B3B,KACAgB,EACHb,cACGQ,EACHiB,gBAAiBC,UACf,MAAMC,QAAchC,KAAKW,kBAAkBC,GAC3C,MAAO,CACLT,YAAa6B,EAAM7B,YACnBC,gBAAiB4B,EAAM5B,gBACvBC,SAAU2B,EAAMJ,gBAGpBK,wBAAyB,KAIrBN,EAAS,IAAIO,EAAIL,GASvB,OANA7B,KAAKqB,QAAQc,IAAIhB,EAAW,CAC1BQ,SACAF,WAAYF,EACZV,YAAa,IAAKA,EAAae,cAAevB,KAGzCsB,CACT,OACOS,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,uBAAoBE,CAAWC,GAC7B,MAAMC,KAAEA,EAAAC,WAAMA,EAAaA,YAAUC,EAAO,UAAA9B,eAAWA,KAAmB+B,GAASJ,EAE7EZ,QAAe3B,KAAKiB,cAAcL,EAAgB+B,GAExD,IAME,aALqBhB,EAAOiB,gBAAgB,GAAGF,KAAQF,EAAKvC,OAAQuC,EAAM,CACxEK,QAAAA,CAASC,GACPL,EAAW,CAAEM,QAASC,KAAKC,MAAU,IAAJH,IACnC,GAGJ,OACOV,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,8BAAoBc,CAClBC,EACAvC,EACAM,GAEA,MAAMS,QAAe3B,KAAKiB,cAAcL,EAAgBM,GACxD,IACE,aAAaS,EAAOyB,aAAaD,EAAW,CAAEE,QAAS,MACzD,OACOjB,GACL,MAAM,IAAIzC,EAASyC,aAAiBxC,MAAQwC,EAAMtC,QAAUuC,OAAOD,GACrE,CACF,CAGA,0BAAckB,GACZ,MAAM/B,EAAMC,KAAKD,MACjB,IAAA,MAAYgC,EAAKC,KAAUxD,KAAKqB,QAAQoC,UAClClC,EAAMiC,EAAM/B,YAAczB,KAAK0B,YACjC1B,KAAKqB,QAAQqC,OAAOH,EAG1B,CAGA,sBAAcI,GACZ3D,KAAKqB,QAAQuC,OACf,EApHAC,EAFWnD,EAEI,UAAyF,IAAIoD,KAC5GD,EAHWnD,EAGa,aAAa,KAuHhC,MAAM4B,EAAa5B,EAAY4B,WAAWyB,KAAKrD,GACzCwC,EAAoBxC,EAAYwC,kBAAkBa,KAAKrD"}
@@ -1 +1 @@
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 SuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\n/**\n * 错误响应的数据结构\n */\nexport interface ErrorResponse {\n code: number\n data: null\n message: string\n}\n\n/**\n * API 响应的统一封装\n * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data\n * @template T - 响应数据的类型\n */\nexport interface UseApiResponse<W extends boolean = false, T = unknown> {\n res: W extends true ? SuccessResponse<T> : T\n error: ErrorResponse | 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 *\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 * // 创建 API 服务实例\n * const api = new ApiService<UserApi, UserUrlObject>(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> {\n private static instance: ApiService<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>\n }\n ApiService.instance = this\n this.isWholeResponse = isWholeResponse\n }\n\n /**\n * 判断是否为业务错误\n * @param obj - 待判断的对象\n */\n private isBusinessError(obj: ErrorResponse): boolean {\n return isPlainObject(obj)\n && typeof obj.message === 'string'\n && typeof obj.code === 'number'\n && obj.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 ErrorResponse {\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>> - 包含 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']>> => {\n let res: UseApiResponse<W, T[K['url']]['response']>['res'] | null = null\n let error: UseApiResponse['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<SuccessResponse<T[K['url']]['response']>>(config)\n res = isWholeResponse\n ? response.data\n : response.data.data\n }\n catch (err: any) {\n // 错误处理\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data\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":"gMAmFO,MAAMA,EAAN,MAAMA,EAWXC,WAAAA,CACUC,EACAC,GACR,IAAAC,EAAAC,KACA,GAHQA,KAAAH,YAAAA,EACAG,KAAAF,gBAAAA,EAoDVG,EAAAD,KAAO,SAASE,eAIdC,EAGAC,GAEwD,IADxDN,EAAAO,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAqBN,EAAKD,gBAEtBU,EAAgE,KAChEC,EAAiC,KAErC,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,YAAsDa,GAClFF,EAAMV,EACFmB,EAASH,KACTG,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,IACO,iBAAhBA,EAAIE,SACS,iBAAbF,EAAIG,MACE,IAAbH,EAAIG,IACX,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,EAJWN,EAII,YAJV,IAAMuC,EAANvC"}
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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qxs-bns/utils",
3
3
  "type": "module",
4
- "version": "0.0.29",
4
+ "version": "0.0.31",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "homepage": "https://qxs-bns.pages.dev/guide/utils/",
@@ -23,7 +23,7 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "ali-oss": "^6.22.0",
26
+ "ali-oss": "^6.23.0",
27
27
  "ans-javascript-sdk": "^4.5.5",
28
28
  "xlsx": "^0.18.5"
29
29
  },
@@ -4,7 +4,7 @@ export interface OssCredentials {
4
4
  accessKeySecret: string;
5
5
  securityToken: string;
6
6
  }
7
- export interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {
7
+ export interface OssConfig extends Partial<Omit<OSS.Options, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {
8
8
  file: File;
9
9
  onProgress?: (p: {
10
10
  percent: number;
@@ -12,31 +12,21 @@ export interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' |
12
12
  path?: string;
13
13
  getCredentials: () => Promise<OssCredentials | null>;
14
14
  }
15
- export interface OssClientConfig {
16
- accessKeyId: string;
17
- accessKeySecret: string;
18
- stsToken: string;
19
- secure: boolean;
20
- bucket: string;
21
- region: string;
22
- cors: boolean;
23
- useFetch: boolean;
24
- timeout: number;
25
- headers: Record<string, string>;
26
- }
27
15
  export declare class OssError extends Error {
28
16
  constructor(message: string);
29
17
  }
30
18
  export declare class OssUploader {
31
- private static client;
32
- private static createTokenTime;
19
+ private static clients;
33
20
  private static readonly expireTime;
34
21
  private static getOssCredentials;
35
- static initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void>;
22
+ private static getClientKey;
23
+ private static initOssClient;
36
24
  static uploadFile(opts: OssConfig & {
37
25
  getCredentials: OssConfig['getCredentials'];
38
26
  }): Promise<OSS.MultipartUploadResult>;
39
27
  static generateSignedUrl(objectKey: string, getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<string>;
28
+ static clearExpiredClients(): void;
29
+ static clearAllClients(): void;
40
30
  }
41
31
  export declare const uploadFile: typeof OssUploader.uploadFile;
42
32
  export declare const generateSignedUrl: typeof OssUploader.generateSignedUrl;
@@ -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;AAEzB,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC/G,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAGD,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAmBD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAK;IAC1B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAY;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;mBAG9B,iBAAiB;WAalB,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WAyBpG,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG;QAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;WAmBjH,iBAAiB,CACnC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAC3C,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,CAAC;CASnB;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;AAEzB,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,GAAG,UAAU,CAAC,CAAC;IAC3G,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;CACrD;AAGD,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAYD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,OAAO,CAA2F;IACjH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;mBAG9B,iBAAiB;IAStC,OAAO,CAAC,MAAM,CAAC,YAAY;mBAQN,aAAa;WAiDd,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG;QAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;WAmBjH,iBAAiB,CACnC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAC3C,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,CAAC;WAWJ,mBAAmB,IAAI,IAAI;WAU3B,eAAe,IAAI,IAAI;CAGtC;AAGD,eAAO,MAAM,UAAU,+BAA2C,CAAA;AAClE,eAAO,MAAM,iBAAiB,sCAAkD,CAAA"}
@@ -1,18 +1,32 @@
1
1
  import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, Method } from 'axios';
2
2
  /**
3
- * 成功响应的数据结构
3
+ * 成功响应的基础约束接口
4
4
  * @template T - 响应数据的类型
5
5
  */
6
- export interface SuccessResponse<T> {
6
+ export interface BaseSuccessResponse<T = unknown> {
7
+ data: T;
8
+ [key: string]: any;
9
+ }
10
+ /**
11
+ * 错误响应的基础约束接口
12
+ */
13
+ export interface BaseErrorResponse {
14
+ [key: string]: any;
15
+ }
16
+ /**
17
+ * 成功响应的数据结构(默认实现)
18
+ * @template T - 响应数据的类型
19
+ */
20
+ export interface SuccessResponse<T> extends BaseSuccessResponse<T> {
7
21
  code: number;
8
22
  count: number;
9
23
  data: T;
10
24
  message: string;
11
25
  }
12
26
  /**
13
- * 错误响应的数据结构
27
+ * 错误响应的数据结构(默认实现)
14
28
  */
15
- export interface ErrorResponse {
29
+ export interface ErrorResponse extends BaseErrorResponse {
16
30
  code: number;
17
31
  data: null;
18
32
  message: string;
@@ -21,10 +35,12 @@ export interface ErrorResponse {
21
35
  * API 响应的统一封装
22
36
  * @template W - 是否返回完整响应,true 返回完整响应,false 只返回 data
23
37
  * @template T - 响应数据的类型
38
+ * @template S - 自定义成功响应类型
39
+ * @template E - 自定义错误响应类型
24
40
  */
25
- export interface UseApiResponse<W extends boolean = false, T = unknown> {
26
- res: W extends true ? SuccessResponse<T> : T;
27
- error: ErrorResponse | null;
41
+ export interface UseApiResponse<W extends boolean = false, T = unknown, S extends BaseSuccessResponse<T> = SuccessResponse<T>, E extends BaseErrorResponse = ErrorResponse> {
42
+ res: W extends true ? S : T;
43
+ error: E | null;
28
44
  }
29
45
  /**
30
46
  * API URL 配置对象类型
@@ -54,6 +70,8 @@ type RequestParams<T> = T extends {
54
70
  * API 服务类,提供统一的请求处理和错误处理
55
71
  * @template T - API 类型映射
56
72
  * @template U - URL 配置对象类型
73
+ * @template S - 自定义成功响应类型
74
+ * @template E - 自定义错误响应类型
57
75
  *
58
76
  * @example
59
77
  * ```typescript
@@ -65,9 +83,29 @@ type RequestParams<T> = T extends {
65
83
  * }
66
84
  * }
67
85
  *
68
- * // 创建 API 服务实例
86
+ * // 使用默认响应类型
69
87
  * const api = new ApiService<UserApi, UserUrlObject>(axios.create(), false)
70
88
  *
89
+ * // 使用自定义响应类型
90
+ * interface CustomSuccessResponse<T> {
91
+ * status: number
92
+ * result: T
93
+ * msg: string
94
+ * }
95
+ *
96
+ * interface CustomErrorResponse {
97
+ * status: number
98
+ * result: null
99
+ * msg: string
100
+ * }
101
+ *
102
+ * const customApi = new ApiService<
103
+ * UserApi,
104
+ * UserUrlObject,
105
+ * CustomSuccessResponse<unknown>,
106
+ * CustomErrorResponse
107
+ * >(axios.create(), false)
108
+ *
71
109
  * // 发起请求
72
110
  * const { res, error } = await api.useApi({
73
111
  * url: '/user/list',
@@ -76,7 +114,7 @@ type RequestParams<T> = T extends {
76
114
  * })
77
115
  * ```
78
116
  */
79
- export declare class ApiService<T extends ApiTypeMap<U>, U extends UrlObjectType> {
117
+ export declare class ApiService<T extends ApiTypeMap<U>, U extends UrlObjectType, S extends BaseSuccessResponse = SuccessResponse<unknown>, E extends BaseErrorResponse = ErrorResponse> {
80
118
  private apiInstance;
81
119
  private isWholeResponse;
82
120
  private static instance;
@@ -108,11 +146,11 @@ export declare class ApiService<T extends ApiTypeMap<U>, U extends UrlObjectType
108
146
  * @param axiosConfig - Axios 请求配置
109
147
  * @param params - 请求参数(GET 请求会自动转为 params,其他方法转为 data)
110
148
  * @param isWholeResponse - 是否返回完整响应,默认使用实例配置
111
- * @returns Promise<UseApiResponse<W, T>> - 包含 res 和 error 的统一响应对象
149
+ * @returns Promise<UseApiResponse<W, T, S, E>> - 包含 res 和 error 的统一响应对象
112
150
  */
113
151
  useApi: <K extends U, W extends boolean = false>(axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K["url"]]["request"]>>, "params"> & K & {
114
152
  params?: RequestParams<T[K["url"]]["request"]>;
115
- }, params?: RequestParams<T[K["url"]]["request"]>, isWholeResponse?: W) => Promise<UseApiResponse<W, T[K["url"]]["response"]>>;
153
+ }, params?: RequestParams<T[K["url"]]["request"]>, isWholeResponse?: W) => Promise<UseApiResponse<W, T[K["url"]]["response"], S, E>>;
116
154
  /**
117
155
  * 发起 API 请求
118
156
  * @template K - URL 配置对象类型
@@ -1 +1 @@
1
- {"version":3,"file":"use-api.d.ts","sourceRoot":"","sources":["../../../../packages/utils/src/use-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-api.d.ts","sourceRoot":"","sources":["../../../../packages/utils/src/use-api.ts"],"names":[],"mappings":"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"}
@@ -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":"42b4030b8dfde5376043f3dd2ce1296697d0e6905f21f2c93463b1d22c4862a0","signature":"28568c2a38ace4ec018e86ea1bdb429d563b3765af5d386b15c6b5a7055e348b"},{"version":"7484cd645652e5de0e944021ff47e2794cd64e91ccba9e2ddfe2e5c4c7e62b89","signature":"b5ff6435fa9c6d61900a8764225558104fce909c6005109cb4ec42a6772052bd"},{"version":"7ad9aed3f5dc3de5049e8ba6912319dace213430b8babffad59e9b3cb8835760","signature":"a7b65e5fbd85d753c99c13a242176ec0f4f024108de502acbd52f82108f9386d"},{"version":"1d7ee0c4eb734d59b6d962bc9151f6330895067cd3058ce6a3cd95347ef5c6e8","impliedFormat":99},{"version":"c9483fba5f74a8d6ca7621d2de633092576dc7fcaae416faa098d21fbcef7227","signature":"16f4bfce8c7fa04a6d5153fe8c5128bc8a0d17fca4e6603dd6dba96f6a21bdfa"},{"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.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":"04f450dc428cf4222f8c870511a84a4995fb4819164b64e8ae0b2f9eea392acc","signature":"00c261f961da4fd38fb05f1331583a22e1e95332bc81448a2f9a9b96c23dbf40"},{"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"}