@uni-helper/axios-adapter 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,66 +12,85 @@ pnpm i @uni-helper/axios-adapter axios
12
12
 
13
13
  ## 使用
14
14
 
15
+ <details>
16
+ <summary>点击查看平台兼容性</summary>
17
+
18
+ | Vue2 | Vue3 |
19
+ | ---- | ---- |
20
+ | √ | √ |
21
+
22
+ | App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ 小程序 |
23
+ | ---------------------------------------- | ------ | ---------- | ------------ | ---------- | ---------- | --------- |
24
+ | HBuilderX 3.4.8<br/>app-vue<br/>app-nvue | √ | √ | √ | √ | √ | √ |
25
+
26
+ | 钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
27
+ | ---------- | ---------- | ---------- | ---------- |
28
+ | √ | √ | √ | √ |
29
+
30
+ | H5-Safari | Android Browser | 微信浏览器(Android) | QQ 浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
31
+ | --------- | --------------- | ------------------- | ------------------ | ------ | --- | ---- | ------- | --------- |
32
+ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
33
+
34
+ </details>
35
+
15
36
  ### 基本用法
16
37
 
17
38
  ```ts
18
39
  import axios from "axios";
19
40
  import { createUniAppAxiosAdapter } from "@uni-helper/axios-adapter";
20
41
 
21
- const instance = axios.create({
22
- adapter: createUniAppAxiosAdapter(),
23
- });
42
+ axios.defaults.adapter = createUniAppAxiosAdapter();
24
43
  ```
25
44
 
26
- ### 与 useAxios 一起使用
45
+ 或者创建自定义实例
27
46
 
28
47
  ```ts
29
48
  import axios from "axios";
30
- import { useAxios } from "@vueuse/integrations/useAxios";
31
49
  import { createUniAppAxiosAdapter } from "@uni-helper/axios-adapter";
32
50
 
33
- const instance = axios.create({
34
- adapter: createUniAppAxiosAdapter(),
35
- });
36
-
37
- const { data, isFinished } = useAxios("/posts", instance);
51
+ const instance = axios.create({ adapter: createUniAppAxiosAdapter() });
38
52
  ```
39
53
 
40
- ### 上传和下载
54
+ ### 与 [useAxios](https://vueuse.org/integrations/useAxios/) 一起使用
41
55
 
42
56
  ```ts
43
57
  import axios from "axios";
44
58
  import { createUniAppAxiosAdapter } from "@uni-helper/axios-adapter";
45
59
 
46
- const instance = axios.create({
47
- adapter: createUniAppAxiosAdapter(),
48
- });
60
+ axios.defaults.adapter = createUniAppAxiosAdapter();
61
+ const { data, isFinished } = useAxios("/posts");
62
+ ```
49
63
 
50
- // 一个假文件
51
- const data = new File([new Blob()], "emptyFile");
64
+ ### 上传和下载
52
65
 
66
+ ```ts
53
67
  // 下载
54
- instance.download("/");
68
+ axios.download("/");
55
69
  // or
56
- instance.request({
70
+ axios.request({
57
71
  url: "/",
58
72
  method: "download",
59
73
  });
60
74
 
61
75
  // 上传
62
- instance.upload("/", data);
76
+ axios.upload("/", new File([new Blob()], "fake file"));
63
77
  // or
64
- instance.request({
78
+ axios.request({
65
79
  url: "/",
66
80
  method: "upload",
67
- data,
81
+ data: new File([new Blob()], "fake file"),
68
82
  });
69
83
  ```
70
84
 
71
85
  ### 小程序
72
86
 
73
- axios 依赖了 `FormData` 和 `Blob` 对象, 而小程序没有,使用提供的插件来解决这一问题
87
+ axios 1.4.0 开始,axios 内部已经处理了小程序的兼容性问题
74
88
 
89
+ <details>
90
+ <summary>我要使用 `FormData` 和 `Blob` 对象</summary>
91
+
92
+ 小程序没有 `FormData` 和 `Blob` 对象,
93
+ 使用 `pnpm add miniprogram-formdata miniprogram-blob` 来安装对应的 polyfill,然后使用插件
75
94
  ```ts
76
95
  // vite.config.js
77
96
  import uniAxiosAdapter from "@uni-helper/axios-adapter/vite";
@@ -84,15 +103,13 @@ export default {
84
103
  ],
85
104
  }
86
105
  ```
87
- > [!WARNING]
88
- > 这个插件通过将 `FormData` 和 `Blob` 导出为空 `class`来解决兼容性问题,如果你确实需要的话,使用 `pnpm add miniprogram-formdata miniprogram-blob` 来安装对应的 polyfill 即可,插件会自动使用。
89
106
 
90
107
  如果你使用的是 Vue CLI,改用 `@uni-helper/axios-adapter/webpack` 即可
91
108
 
92
- ## 客户端类型
109
+ </details>
93
110
 
94
- 提供了 upload 和 download 方法的类型提示,及 AxiosRequestConfig 支持传递 uniapp 特有参数
111
+ ### 版本
95
112
 
96
- ```ts
97
- /// <reference types="@uni-helper/axios-adapter/client" />
98
- ```
113
+ 自 1.4.0 开始,请始终保持主版本号和次版本号与 axios 一致。例如当你安装了 1.5.1 版本时,你可以安装 axios 的 1.5.x 版本。
114
+
115
+ 这样做的目的是始终支持最新的 axios。
package/dist/index.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var D = require('axios/unsafe/helpers/buildURL');
5
- var I = require('axios/unsafe/helpers/speedometer');
6
- var F = require('axios/unsafe/core/buildFullPath');
4
+ var I = require('axios/unsafe/helpers/buildURL');
5
+ var N = require('axios/unsafe/helpers/speedometer');
6
+ var P = require('axios/unsafe/core/buildFullPath');
7
7
  var W = require('axios/unsafe/core/settle');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
- var D__default = /*#__PURE__*/_interopDefault(D);
12
11
  var I__default = /*#__PURE__*/_interopDefault(I);
13
- var F__default = /*#__PURE__*/_interopDefault(F);
12
+ var N__default = /*#__PURE__*/_interopDefault(N);
13
+ var P__default = /*#__PURE__*/_interopDefault(P);
14
14
  var W__default = /*#__PURE__*/_interopDefault(W);
15
15
 
16
- var q=e=>{let{method:n="GET"}=e;switch(n.toLocaleLowerCase()){case"download":return "download";case"upload":return "upload";default:return "request"}},M=e=>({...e}),A=(e,n)=>{var o,s,u,w,E;let i=e.data,t=e.responseType==="arraybuffer"?"arraybuffer":"text",p=t==="text"?"json":void 0,a=e.headers;if(e.auth){let v=e.auth.username||"",P=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(v+":"+P));}let l=F__default.default(e.baseURL,e.url),h=(s=(o=e==null?void 0:e.method)==null?void 0:o.toUpperCase())!=null?s:"GET",f=D__default.default(l,e.params,e.paramsSerializer),r=e.timeout||6e4,d=(u=e.withCredentials)!=null?u:!1,c=(w=e.sslVerify)!=null?w:!0,R=(E=e.firstIpv4)!=null?E:!1,T={};if(i&&typeof i=="string")try{T=JSON.parse(i);}catch(v){}let m=a.toJSON();return {...e,url:f,data:i,header:m,method:h,responseType:t,dataType:p,timeout:r,withCredentials:d,sslVerify:c,firstIpv4:R,formData:T}},O=(e,n)=>{let i=0,t=I__default.default(50,250);return p=>{let a=p.totalBytesWritten,l=p.totalBytesExpectedToWrite,h=a-i,f=t(h),r=a<=l;i=a;let d={loaded:a,total:l,progress:l?a/l:void 0,bytes:h,rate:f||void 0,estimated:f&&l&&r?(l-a)/f:void 0,event:p};d[n?"download":"upload"]=!0,e(d);}};var x=class{constructor(n){this.config=n;}subscribe(n,i){(this.config.cancelToken||this.config.signal)&&(this.onCanceled=t=>{n&&(i(!t||t.type?new axios.CanceledError(void 0,void 0,this.config,n):t),n.abort(),n=null);},this.config.cancelToken&&this.config.cancelToken.subscribe(this.onCanceled),this.config.signal&&this.config.signal.addEventListener&&(this.config.signal.aborted?this.onCanceled():this.config.signal.addEventListener("abort",this.onCanceled)));}unsubscribe(){this.config.cancelToken&&this.config.cancelToken.unsubscribe(this.onCanceled),this.config.signal&&this.config.signal.removeEventListener&&this.config.signal.removeEventListener("abort",this.onCanceled);}};var K=(e,n)=>new Promise((i,t)=>{let{url:p,header:a,timeout:l,filePath:h}=A(e),f=new x(e),r=uni.downloadFile({url:p,header:a,timeout:l,filePath:h,success(d){var R;if(!r)return;let c={config:e,data:d.tempFilePath,headers:{},status:d.statusCode,statusText:(R=d.errMsg)!=null?R:"OK",request:r};W__default.default(i,t,c),r=null;},fail(d){let{errMsg:c=""}=d!=null?d:{};c&&(c==="downloadFile:fail timeout"&&t(new axios.AxiosError(c,axios.AxiosError.ETIMEDOUT,e,r)),c==="downloadFile:fail"&&t(new axios.AxiosError(c,axios.AxiosError.ERR_NETWORK,e,r))),t(new axios.AxiosError(d.errMsg,void 0,e,r)),r=null;},complete(){f.unsubscribe();}});typeof e.onDownloadProgress=="function"&&r.onProgressUpdate(O(e.onDownloadProgress,!0)),typeof e.onHeadersReceived=="function"&&r.onHeadersReceived(e.onHeadersReceived),f.subscribe(r,t);}),U=K;var _=(e,n)=>new Promise((i,t)=>{let{url:p,files:a,fileType:l,file:h,filePath:f,name:r,header:d,timeout:c,formData:R}=A(e),T=new x(e),m=uni.uploadFile({url:p,files:a,fileType:l,file:h,filePath:f,name:r,header:d,timeout:c,formData:R,success(o){var u;if(!m)return;let s={config:e,data:o.data,headers:{},status:o.statusCode,statusText:(u=o.errMsg)!=null?u:"OK",request:m};W__default.default(i,t,s),m=null;},fail(o){let{errMsg:s=""}=o!=null?o:{};if(s){let u=s==="uploadFile:fail timeout",w=s==="uploadFile:fail file error";u&&t(new axios.AxiosError(s,axios.AxiosError.ETIMEDOUT,e,m)),w&&t(new axios.AxiosError(s,axios.AxiosError.ERR_NETWORK,e,m));}t(new axios.AxiosError(o.errMsg,void 0,e,m)),m=null;},complete(){T.unsubscribe();}});typeof e.onHeadersReceived=="function"&&m.onHeadersReceived(e.onHeadersReceived),T.subscribe(m,t);}),k=_;var V=(e,n)=>new Promise((i,t)=>{let{url:p,data:a,header:l,method:h,timeout:f,dataType:r,responseType:d,sslVerify:c,withCredentials:R,firstIpv4:T}=A(e),m=new x(e),o=uni.request({url:p,data:a,header:l,method:h,timeout:f,dataType:r,responseType:d,sslVerify:c,withCredentials:R,firstIpv4:T,success(s){var w;if(!o)return;let u={config:e,data:s.data,headers:s.header,status:s.statusCode,statusText:(w=s.errMsg)!=null?w:"OK",request:o,cookies:s.cookies};W__default.default(i,t,u),o=null;},fail(s){let{errMsg:u=""}=s!=null?s:{};if(u){let w=u==="request:fail timeout",E=u==="request:fail";w&&t(new axios.AxiosError(u,axios.AxiosError.ETIMEDOUT,e,o)),E&&t(new axios.AxiosError(u,axios.AxiosError.ERR_NETWORK,e,o));}t(new axios.AxiosError(s.errMsg,void 0,e,o)),o=null;},complete(){m.unsubscribe();}});typeof e.onHeadersReceived=="function"&&o.onHeadersReceived(e.onHeadersReceived),m.subscribe(o,t);}),g=V;var H=e=>{switch(q(e)){case"download":return U;case"upload":return k;default:return g}};var Me=(e={})=>{let n=M(e);return axios.Axios.prototype.download=function(t,p){return this.request({url:t,method:"download",...p})},axios.Axios.prototype.upload=function(t,p,a){return this.request({url:t,method:"upload",data:p,...a})},t=>H(t)(t,n)};
16
+ var g=e=>{let{method:i="GET"}=e;switch(i.toLocaleLowerCase()){case"download":return "download";case"upload":return "upload";default:return "request"}},T=e=>({...e}),c=(e,i)=>{var A,w;let d=e.data,s=e.responseType==="arraybuffer"?"arraybuffer":"text",a=s==="text"?"json":void 0,{headers:n,baseURL:u,...t}=e,o=axios.AxiosHeaders.from(n).normalize(!1);if(e.auth){let C=e.auth.username||"",H=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(C+":"+H));}let r=P__default.default(u,e.url),p=(w=(A=e==null?void 0:e.method)==null?void 0:A.toUpperCase())!=null?w:"GET",l=I__default.default(r,e.params,e.paramsSerializer),U=e.timeout||6e4,x={};if(d&&typeof d=="string")try{x=JSON.parse(d);}catch(C){}let k=o.toJSON();return {...t,url:l,data:d,header:k,method:p,responseType:s,dataType:a,timeout:U,formData:x}},q=(e,i)=>{let d=0,s=N__default.default(50,250);return a=>{let n=a.totalBytesWritten,u=a.totalBytesExpectedToWrite,t=n-d,o=s(t),r=n<=u;d=n;let p={loaded:n,total:u,progress:u?n/u:void 0,bytes:t,rate:o||void 0,estimated:o&&u&&r?(u-n)/o:void 0,event:a};p[i?"download":"upload"]=!0,e(p);}};var f=class{constructor(i){this.config=i;}subscribe(i,d){(this.config.cancelToken||this.config.signal)&&(this.onCanceled=s=>{i&&(d(!s||s.type?new axios.CanceledError(void 0,void 0,this.config,i):s),i.abort(),i=null);},this.config.cancelToken&&this.config.cancelToken.subscribe(this.onCanceled),this.config.signal&&this.config.signal.addEventListener&&(this.config.signal.aborted?this.onCanceled():this.config.signal.addEventListener("abort",this.onCanceled)));}unsubscribe(){this.config.cancelToken&&this.config.cancelToken.unsubscribe(this.onCanceled),this.config.signal&&this.config.signal.removeEventListener&&this.config.signal.removeEventListener("abort",this.onCanceled);}};var K=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new axios.AxiosHeaders(a.header);let u=new f(e),t=uni.downloadFile({...a,success(o){var p;if(!t)return;let r={config:n,data:o.tempFilePath,headers:{},status:o.statusCode,statusText:(p=o.errMsg)!=null?p:"OK",request:t};W__default.default(d,s,r),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};r&&(r==="downloadFile:fail timeout"&&s(new axios.AxiosError(r,axios.AxiosError.ETIMEDOUT,n,t)),r==="downloadFile:fail"&&s(new axios.AxiosError(r,axios.AxiosError.ERR_NETWORK,n,t))),s(new axios.AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onDownloadProgress=="function"&&t.onProgressUpdate(q(e.onDownloadProgress,!0)),typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),b=K;var z=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new axios.AxiosHeaders(a.header);let u=new f(e),t=uni.uploadFile({...a,success(o){var p;if(!t)return;let r={config:n,data:o.data,headers:{},status:o.statusCode,statusText:(p=o.errMsg)!=null?p:"OK",request:t};W__default.default(d,s,r),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};if(r){let p=r==="uploadFile:fail timeout",l=r==="uploadFile:fail file error";p&&s(new axios.AxiosError(r,axios.AxiosError.ETIMEDOUT,n,t)),l&&s(new axios.AxiosError(r,axios.AxiosError.ERR_NETWORK,n,t));}s(new axios.AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),y=z;var G=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new axios.AxiosHeaders(a.header);let u=new f(e),t=uni.request({...a,success(o){var l;if(!t)return;let r=new axios.AxiosHeaders(o.header),p={config:n,data:o.data,headers:r,status:o.statusCode,statusText:(l=o.errMsg)!=null?l:"OK",request:t,cookies:o.cookies};W__default.default(d,s,p),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};if(r){let p=r==="request:fail timeout",l=r==="request:fail";p&&s(new axios.AxiosError(r,axios.AxiosError.ETIMEDOUT,n,t)),l&&s(new axios.AxiosError(r,axios.AxiosError.ERR_NETWORK,n,t));}s(new axios.AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),O=G;var v=e=>{switch(g(e)){case"download":return b;case"upload":return y;default:return O}};var Pe=(e={})=>{let i=T(e);return axios.Axios.prototype.download=function(s,a){return this.request({url:s,method:"download",...a})},axios.Axios.prototype.upload=function(s,a,n){return this.request({url:s,method:"upload",data:a,...n})},s=>v(s)(s,i)};
17
17
 
18
- exports.createUniAppAxiosAdapter = Me;
18
+ exports.createUniAppAxiosAdapter = Pe;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { AxiosAdapter } from 'axios';
2
2
  import { U as UserOptions } from './types-76de936f.js';
3
3
 
4
+ declare module "axios" {
5
+ interface AxiosRequestConfig extends Omit<UniApp.RequestOptions, "success" | "fail" | "complete" | "header">, Omit<UniApp.UploadFileOption, "success" | "fail" | "complete" | "header" | "formData">, Omit<UniApp.DownloadFileOption, "success" | "fail" | "complete" | "header">, Partial<Pick<UniApp.RequestTask, "onHeadersReceived">> {
6
+ }
7
+ interface AxiosResponse {
8
+ cookies?: string[];
9
+ }
10
+ interface Axios {
11
+ upload<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
12
+ download<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
13
+ }
14
+ }
15
+
4
16
  declare const createUniAppAxiosAdapter: (userOptions?: UserOptions) => AxiosAdapter;
5
17
 
6
18
  export { createUniAppAxiosAdapter };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { AxiosAdapter } from 'axios';
2
2
  import { U as UserOptions } from './types-76de936f.js';
3
3
 
4
+ declare module "axios" {
5
+ interface AxiosRequestConfig extends Omit<UniApp.RequestOptions, "success" | "fail" | "complete" | "header">, Omit<UniApp.UploadFileOption, "success" | "fail" | "complete" | "header" | "formData">, Omit<UniApp.DownloadFileOption, "success" | "fail" | "complete" | "header">, Partial<Pick<UniApp.RequestTask, "onHeadersReceived">> {
6
+ }
7
+ interface AxiosResponse {
8
+ cookies?: string[];
9
+ }
10
+ interface Axios {
11
+ upload<T = any, R = AxiosResponse<T>, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<R>;
12
+ download<T = any, R = AxiosResponse<T>, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<R>;
13
+ }
14
+ }
15
+
4
16
  declare const createUniAppAxiosAdapter: (userOptions?: UserOptions) => AxiosAdapter;
5
17
 
6
18
  export { createUniAppAxiosAdapter };
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { Axios, AxiosError, CanceledError } from 'axios';
2
- import D from 'axios/unsafe/helpers/buildURL';
3
- import I from 'axios/unsafe/helpers/speedometer';
4
- import F from 'axios/unsafe/core/buildFullPath';
1
+ import { Axios, AxiosHeaders, AxiosError, CanceledError } from 'axios';
2
+ import I from 'axios/unsafe/helpers/buildURL';
3
+ import N from 'axios/unsafe/helpers/speedometer';
4
+ import P from 'axios/unsafe/core/buildFullPath';
5
5
  import W from 'axios/unsafe/core/settle';
6
6
 
7
- var q=e=>{let{method:n="GET"}=e;switch(n.toLocaleLowerCase()){case"download":return "download";case"upload":return "upload";default:return "request"}},M=e=>({...e}),A=(e,n)=>{var o,s,u,w,E;let i=e.data,t=e.responseType==="arraybuffer"?"arraybuffer":"text",p=t==="text"?"json":void 0,a=e.headers;if(e.auth){let v=e.auth.username||"",P=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";a.set("Authorization","Basic "+btoa(v+":"+P));}let l=F(e.baseURL,e.url),h=(s=(o=e==null?void 0:e.method)==null?void 0:o.toUpperCase())!=null?s:"GET",f=D(l,e.params,e.paramsSerializer),r=e.timeout||6e4,d=(u=e.withCredentials)!=null?u:!1,c=(w=e.sslVerify)!=null?w:!0,R=(E=e.firstIpv4)!=null?E:!1,T={};if(i&&typeof i=="string")try{T=JSON.parse(i);}catch(v){}let m=a.toJSON();return {...e,url:f,data:i,header:m,method:h,responseType:t,dataType:p,timeout:r,withCredentials:d,sslVerify:c,firstIpv4:R,formData:T}},O=(e,n)=>{let i=0,t=I(50,250);return p=>{let a=p.totalBytesWritten,l=p.totalBytesExpectedToWrite,h=a-i,f=t(h),r=a<=l;i=a;let d={loaded:a,total:l,progress:l?a/l:void 0,bytes:h,rate:f||void 0,estimated:f&&l&&r?(l-a)/f:void 0,event:p};d[n?"download":"upload"]=!0,e(d);}};var x=class{constructor(n){this.config=n;}subscribe(n,i){(this.config.cancelToken||this.config.signal)&&(this.onCanceled=t=>{n&&(i(!t||t.type?new CanceledError(void 0,void 0,this.config,n):t),n.abort(),n=null);},this.config.cancelToken&&this.config.cancelToken.subscribe(this.onCanceled),this.config.signal&&this.config.signal.addEventListener&&(this.config.signal.aborted?this.onCanceled():this.config.signal.addEventListener("abort",this.onCanceled)));}unsubscribe(){this.config.cancelToken&&this.config.cancelToken.unsubscribe(this.onCanceled),this.config.signal&&this.config.signal.removeEventListener&&this.config.signal.removeEventListener("abort",this.onCanceled);}};var K=(e,n)=>new Promise((i,t)=>{let{url:p,header:a,timeout:l,filePath:h}=A(e),f=new x(e),r=uni.downloadFile({url:p,header:a,timeout:l,filePath:h,success(d){var R;if(!r)return;let c={config:e,data:d.tempFilePath,headers:{},status:d.statusCode,statusText:(R=d.errMsg)!=null?R:"OK",request:r};W(i,t,c),r=null;},fail(d){let{errMsg:c=""}=d!=null?d:{};c&&(c==="downloadFile:fail timeout"&&t(new AxiosError(c,AxiosError.ETIMEDOUT,e,r)),c==="downloadFile:fail"&&t(new AxiosError(c,AxiosError.ERR_NETWORK,e,r))),t(new AxiosError(d.errMsg,void 0,e,r)),r=null;},complete(){f.unsubscribe();}});typeof e.onDownloadProgress=="function"&&r.onProgressUpdate(O(e.onDownloadProgress,!0)),typeof e.onHeadersReceived=="function"&&r.onHeadersReceived(e.onHeadersReceived),f.subscribe(r,t);}),U=K;var _=(e,n)=>new Promise((i,t)=>{let{url:p,files:a,fileType:l,file:h,filePath:f,name:r,header:d,timeout:c,formData:R}=A(e),T=new x(e),m=uni.uploadFile({url:p,files:a,fileType:l,file:h,filePath:f,name:r,header:d,timeout:c,formData:R,success(o){var u;if(!m)return;let s={config:e,data:o.data,headers:{},status:o.statusCode,statusText:(u=o.errMsg)!=null?u:"OK",request:m};W(i,t,s),m=null;},fail(o){let{errMsg:s=""}=o!=null?o:{};if(s){let u=s==="uploadFile:fail timeout",w=s==="uploadFile:fail file error";u&&t(new AxiosError(s,AxiosError.ETIMEDOUT,e,m)),w&&t(new AxiosError(s,AxiosError.ERR_NETWORK,e,m));}t(new AxiosError(o.errMsg,void 0,e,m)),m=null;},complete(){T.unsubscribe();}});typeof e.onHeadersReceived=="function"&&m.onHeadersReceived(e.onHeadersReceived),T.subscribe(m,t);}),k=_;var V=(e,n)=>new Promise((i,t)=>{let{url:p,data:a,header:l,method:h,timeout:f,dataType:r,responseType:d,sslVerify:c,withCredentials:R,firstIpv4:T}=A(e),m=new x(e),o=uni.request({url:p,data:a,header:l,method:h,timeout:f,dataType:r,responseType:d,sslVerify:c,withCredentials:R,firstIpv4:T,success(s){var w;if(!o)return;let u={config:e,data:s.data,headers:s.header,status:s.statusCode,statusText:(w=s.errMsg)!=null?w:"OK",request:o,cookies:s.cookies};W(i,t,u),o=null;},fail(s){let{errMsg:u=""}=s!=null?s:{};if(u){let w=u==="request:fail timeout",E=u==="request:fail";w&&t(new AxiosError(u,AxiosError.ETIMEDOUT,e,o)),E&&t(new AxiosError(u,AxiosError.ERR_NETWORK,e,o));}t(new AxiosError(s.errMsg,void 0,e,o)),o=null;},complete(){m.unsubscribe();}});typeof e.onHeadersReceived=="function"&&o.onHeadersReceived(e.onHeadersReceived),m.subscribe(o,t);}),g=V;var H=e=>{switch(q(e)){case"download":return U;case"upload":return k;default:return g}};var Me=(e={})=>{let n=M(e);return Axios.prototype.download=function(t,p){return this.request({url:t,method:"download",...p})},Axios.prototype.upload=function(t,p,a){return this.request({url:t,method:"upload",data:p,...a})},t=>H(t)(t,n)};
7
+ var g=e=>{let{method:i="GET"}=e;switch(i.toLocaleLowerCase()){case"download":return "download";case"upload":return "upload";default:return "request"}},T=e=>({...e}),c=(e,i)=>{var A,w;let d=e.data,s=e.responseType==="arraybuffer"?"arraybuffer":"text",a=s==="text"?"json":void 0,{headers:n,baseURL:u,...t}=e,o=AxiosHeaders.from(n).normalize(!1);if(e.auth){let C=e.auth.username||"",H=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(C+":"+H));}let r=P(u,e.url),p=(w=(A=e==null?void 0:e.method)==null?void 0:A.toUpperCase())!=null?w:"GET",l=I(r,e.params,e.paramsSerializer),U=e.timeout||6e4,x={};if(d&&typeof d=="string")try{x=JSON.parse(d);}catch(C){}let k=o.toJSON();return {...t,url:l,data:d,header:k,method:p,responseType:s,dataType:a,timeout:U,formData:x}},q=(e,i)=>{let d=0,s=N(50,250);return a=>{let n=a.totalBytesWritten,u=a.totalBytesExpectedToWrite,t=n-d,o=s(t),r=n<=u;d=n;let p={loaded:n,total:u,progress:u?n/u:void 0,bytes:t,rate:o||void 0,estimated:o&&u&&r?(u-n)/o:void 0,event:a};p[i?"download":"upload"]=!0,e(p);}};var f=class{constructor(i){this.config=i;}subscribe(i,d){(this.config.cancelToken||this.config.signal)&&(this.onCanceled=s=>{i&&(d(!s||s.type?new CanceledError(void 0,void 0,this.config,i):s),i.abort(),i=null);},this.config.cancelToken&&this.config.cancelToken.subscribe(this.onCanceled),this.config.signal&&this.config.signal.addEventListener&&(this.config.signal.aborted?this.onCanceled():this.config.signal.addEventListener("abort",this.onCanceled)));}unsubscribe(){this.config.cancelToken&&this.config.cancelToken.unsubscribe(this.onCanceled),this.config.signal&&this.config.signal.removeEventListener&&this.config.signal.removeEventListener("abort",this.onCanceled);}};var K=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new AxiosHeaders(a.header);let u=new f(e),t=uni.downloadFile({...a,success(o){var p;if(!t)return;let r={config:n,data:o.tempFilePath,headers:{},status:o.statusCode,statusText:(p=o.errMsg)!=null?p:"OK",request:t};W(d,s,r),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};r&&(r==="downloadFile:fail timeout"&&s(new AxiosError(r,AxiosError.ETIMEDOUT,n,t)),r==="downloadFile:fail"&&s(new AxiosError(r,AxiosError.ERR_NETWORK,n,t))),s(new AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onDownloadProgress=="function"&&t.onProgressUpdate(q(e.onDownloadProgress,!0)),typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),b=K;var z=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new AxiosHeaders(a.header);let u=new f(e),t=uni.uploadFile({...a,success(o){var p;if(!t)return;let r={config:n,data:o.data,headers:{},status:o.statusCode,statusText:(p=o.errMsg)!=null?p:"OK",request:t};W(d,s,r),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};if(r){let p=r==="uploadFile:fail timeout",l=r==="uploadFile:fail file error";p&&s(new AxiosError(r,AxiosError.ETIMEDOUT,n,t)),l&&s(new AxiosError(r,AxiosError.ERR_NETWORK,n,t));}s(new AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),y=z;var G=(e,i)=>new Promise((d,s)=>{let a=c(e),n=e;n.headers=new AxiosHeaders(a.header);let u=new f(e),t=uni.request({...a,success(o){var l;if(!t)return;let r=new AxiosHeaders(o.header),p={config:n,data:o.data,headers:r,status:o.statusCode,statusText:(l=o.errMsg)!=null?l:"OK",request:t,cookies:o.cookies};W(d,s,p),t=null;},fail(o){let{errMsg:r=""}=o!=null?o:{};if(r){let p=r==="request:fail timeout",l=r==="request:fail";p&&s(new AxiosError(r,AxiosError.ETIMEDOUT,n,t)),l&&s(new AxiosError(r,AxiosError.ERR_NETWORK,n,t));}s(new AxiosError(o.errMsg,void 0,n,t)),t=null;},complete(){u.unsubscribe();}});typeof e.onHeadersReceived=="function"&&t.onHeadersReceived(e.onHeadersReceived),u.subscribe(t,s);}),O=G;var v=e=>{switch(g(e)){case"download":return b;case"upload":return y;default:return O}};var Pe=(e={})=>{let i=T(e);return Axios.prototype.download=function(s,a){return this.request({url:s,method:"download",...a})},Axios.prototype.upload=function(s,a,n){return this.request({url:s,method:"upload",data:a,...n})},s=>v(s)(s,i)};
8
8
 
9
- export { Me as createUniAppAxiosAdapter };
9
+ export { Pe as createUniAppAxiosAdapter };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uni-helper/axios-adapter",
3
3
  "type": "module",
4
- "version": "1.5.0",
4
+ "version": "1.5.2",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "kejunmao",
@@ -51,9 +51,6 @@
51
51
  "types": "./dist/webpack.d.cts",
52
52
  "default": "./dist/webpack.cjs"
53
53
  }
54
- },
55
- "./client": {
56
- "types": "./client.d.ts"
57
54
  }
58
55
  },
59
56
  "main": "./dist/index.js",
@@ -73,7 +70,8 @@
73
70
  "rimraf": "^5.0.1",
74
71
  "tsup": "^7.2.0",
75
72
  "typescript": "^5.2.2",
76
- "vite": "^4.4.9"
73
+ "vite": "^4.4.9",
74
+ "vitest": "^0.34.4"
77
75
  },
78
76
  "peerDependencies": {
79
77
  "axios": "^1.5.0"
package/client.d.ts DELETED
@@ -1,35 +0,0 @@
1
- declare module "axios" {
2
- export interface AxiosRequestConfig
3
- extends Omit<
4
- UniApp.RequestOptions,
5
- "success" | "fail" | "complete" | "header"
6
- >,
7
- Omit<
8
- UniApp.UploadFileOption,
9
- "success" | "fail" | "complete" | "header" | "formData"
10
- >,
11
- Omit<
12
- UniApp.DownloadFileOption,
13
- "success" | "fail" | "complete" | "header"
14
- >,
15
- Partial<Pick<UniApp.RequestTask, "onHeadersReceived">> {}
16
-
17
- export interface AxiosResponse {
18
- cookies?: string[];
19
- }
20
-
21
- export interface Axios {
22
- upload<T = any, R = AxiosResponse<T>, D = any>(
23
- url: string,
24
- data?: D,
25
- config?: AxiosRequestConfig<D>
26
- ): Promise<R>;
27
-
28
- download<T = any, R = AxiosResponse<T>, D = any>(
29
- url: string,
30
- config?: AxiosRequestConfig<D>
31
- ): Promise<R>;
32
- }
33
- }
34
-
35
- export {};