utils-uniapp 1.1.12 → 1.1.13
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/lib/http/index.d.ts +16 -34
- package/lib/http/index.js +1 -1
- package/package.json +1 -1
package/lib/http/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const CONTENT_TYPES: Readonly<{
|
|
|
15
15
|
*/
|
|
16
16
|
FORM_URLENCODED: string;
|
|
17
17
|
/**
|
|
18
|
-
* 文件上传表单 multipart/form
|
|
18
|
+
* 文件上传表单 multipart/form-data
|
|
19
19
|
*/
|
|
20
20
|
FORM_DATA: string;
|
|
21
21
|
}>;
|
|
@@ -53,16 +53,17 @@ export interface CacheAdapter {
|
|
|
53
53
|
* 设置缓存
|
|
54
54
|
* @param key 缓存key
|
|
55
55
|
* @param value 缓存存储内容
|
|
56
|
-
* @param expire
|
|
56
|
+
* @param expire 过期秒数;语义由适配器实现;request库仅透传数值,不做过期逻辑
|
|
57
57
|
*/
|
|
58
58
|
set(key: string, value: unknown, expire: number): void;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* 外部传入缓存配置入参(仅调用方使用,业务传入)
|
|
63
|
-
* @description 开启请求缓存 isCache=true 时,必须传入对应 mode 的适配器 localAdapter / sessionAdapter
|
|
64
63
|
*/
|
|
65
64
|
export interface CacheConfigInput {
|
|
65
|
+
/** 是否开启缓存 */
|
|
66
|
+
enable?: boolean;
|
|
66
67
|
/**
|
|
67
68
|
* 自定义缓存业务key;不填默认由url生成,**不包含请求参数**,同URL不同参数务必手动指定key
|
|
68
69
|
*/
|
|
@@ -72,23 +73,18 @@ export interface CacheConfigInput {
|
|
|
72
73
|
*/
|
|
73
74
|
prefix?: string;
|
|
74
75
|
/**
|
|
75
|
-
*
|
|
76
|
-
* - local:持久存储
|
|
77
|
-
* - session:会话存储(H5会话销毁;小程序降级持久)
|
|
78
|
-
*/
|
|
79
|
-
mode?: 'local' | 'session';
|
|
80
|
-
/**
|
|
81
|
-
* 缓存过期时间,单位秒;语义由外部CacheAdapter实现,约定 <=0代表永不过期;库默认兜底1小时(3600s)
|
|
76
|
+
* 缓存过期时间,单位秒;库默认兜底1小时(3600s)
|
|
82
77
|
*/
|
|
83
78
|
expire?: number;
|
|
84
79
|
/**
|
|
85
|
-
*
|
|
86
|
-
|
|
87
|
-
localAdapter?: CacheAdapter | null;
|
|
88
|
-
/**
|
|
89
|
-
* session模式对应的缓存适配器实例;mode=session且开启缓存时必填
|
|
80
|
+
* 缓存适配器实例;enable=true开启缓存时必填
|
|
81
|
+
* 支持直接传入实例,或同步获取实例的函数;禁止async异步函数
|
|
90
82
|
*/
|
|
91
|
-
|
|
83
|
+
adapter?: CacheAdapter | null | ((ctx: {
|
|
84
|
+
url: string;
|
|
85
|
+
config: HttpRequestConfig;
|
|
86
|
+
options: UserRequestOpts;
|
|
87
|
+
}) => CacheAdapter | null);
|
|
92
88
|
}
|
|
93
89
|
|
|
94
90
|
/**
|
|
@@ -96,9 +92,9 @@ export interface CacheConfigInput {
|
|
|
96
92
|
* @description adapter 字段由内部派生生成,外部禁止传入、禁止读取使用
|
|
97
93
|
*/
|
|
98
94
|
interface CacheConfig {
|
|
95
|
+
enable: boolean;
|
|
99
96
|
key: string;
|
|
100
97
|
prefix: string;
|
|
101
|
-
mode: 'local' | 'session';
|
|
102
98
|
expire: number;
|
|
103
99
|
readonly adapter: CacheAdapter | null;
|
|
104
100
|
}
|
|
@@ -148,11 +144,7 @@ interface RequestOptions {
|
|
|
148
144
|
*/
|
|
149
145
|
showError: boolean;
|
|
150
146
|
/**
|
|
151
|
-
*
|
|
152
|
-
*/
|
|
153
|
-
isCache: boolean;
|
|
154
|
-
/**
|
|
155
|
-
* 缓存配置;adapter为内部运行时派生字段,外部请勿传入、请勿访问;开启isCache:true,必须传入对应模式的适配器,否则运行时抛出异常
|
|
147
|
+
* 缓存配置;adapter为内部运行时派生字段,外部请勿传入、请勿访问;开启缓存必须传入适配器,否则运行时抛出异常
|
|
156
148
|
*/
|
|
157
149
|
cacheConfig: CacheConfig;
|
|
158
150
|
/**
|
|
@@ -184,7 +176,6 @@ interface RequestOptions {
|
|
|
184
176
|
/**
|
|
185
177
|
* 业务侧传入配置【外部用户参数,支持拦截器数组】
|
|
186
178
|
* 经过内部 normalizeOpts 之后转换为 RequestOptions
|
|
187
|
-
* @description isCache 设置为 true 时,cacheConfig 需要传入对应 mode 的适配器 localAdapter / sessionAdapter,否则运行时抛出异常
|
|
188
179
|
*/
|
|
189
180
|
export interface UserRequestOpts {
|
|
190
181
|
/**
|
|
@@ -196,11 +187,7 @@ export interface UserRequestOpts {
|
|
|
196
187
|
*/
|
|
197
188
|
showError?: boolean;
|
|
198
189
|
/**
|
|
199
|
-
*
|
|
200
|
-
*/
|
|
201
|
-
isCache?: boolean;
|
|
202
|
-
/**
|
|
203
|
-
* 缓存配置,用户传入部分字段即可;isCache=true必须传入对应mode适配器
|
|
190
|
+
* 缓存配置,用户传入部分字段即可;开启缓存时cacheConfig.adapter必须提供适配器
|
|
204
191
|
*/
|
|
205
192
|
cacheConfig?: Partial<CacheConfigInput>;
|
|
206
193
|
/**
|
|
@@ -270,11 +257,6 @@ export type DownloadConfig = Partial<Omit<UniApp.DownloadFileOptions, 'url' | 'h
|
|
|
270
257
|
* @description 注意:当前实现token由请求内部source生成,**不支持外部传入自定义cancelToken**
|
|
271
258
|
*/
|
|
272
259
|
export declare const CancelToken: {
|
|
273
|
-
/**
|
|
274
|
-
* 保存token与uni任务映射
|
|
275
|
-
*/
|
|
276
|
-
caches: Record<string, UniTask>;
|
|
277
|
-
|
|
278
260
|
/**
|
|
279
261
|
* 注册请求任务
|
|
280
262
|
* @param token 取消令牌
|
|
@@ -390,7 +372,7 @@ export declare function createRequest(defaultConfig: HttpRequestConfig, defaultO
|
|
|
390
372
|
export declare function createUploadFile(
|
|
391
373
|
defaultConfig: UploadConfig,
|
|
392
374
|
defaultOpts?: UserRequestOpts
|
|
393
|
-
): <T = any>(url: string, params: { filePath: string; keyName?: string;
|
|
375
|
+
): <T = any>(url: string, params: { filePath: string; keyName?: string;[key: string]: any }, config?: UploadConfig, options?: UserRequestOpts) => Promise<T>;
|
|
394
376
|
|
|
395
377
|
/**
|
|
396
378
|
* 创建下载文件实例
|
package/lib/http/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../_rollupPluginBabelHelpers-fa19b5b2.js"),x=require("../object/index.js"),U=require("../magic/index.js");var H=["cancelToken"],M=["headers"],G=["keyName","filePath"],R=Object.freeze({JSON:"application/json;charset=UTF-8",TEXT:"text/plain;charset=UTF-8",FORM_URLENCODED:"application/x-www-form-urlencoded;charset=UTF-8",FORM_DATA:"multipart/form-data"}),C=Object.seal(function(){var e=Object.create(null);function i(a){var r=e[a];typeof(r==null?void 0:r.abort)=="function"&&r.abort()}return Object.seal({add:function(r,t){e[r]=t},delete:function(r){Reflect.deleteProperty(e,r)},_cancel:i,cancelAll:function(){Object.values(e).forEach(function(r){typeof(r==null?void 0:r.abort)=="function"&&r.abort()}),Object.keys(e).forEach(function(r){return delete e[r]})},source:function(){var r="".concat(Date.now(),"-").concat(U.getRandomStr(16));return{token:r,cancel:function(){return i(r)}}}})}());function k(e,i){return new Promise(function(a,r){var t=i.cancelToken,s=n._objectWithoutProperties(i,H),f=uni[e](n._objectSpread2(n._objectSpread2({},s),{},{success:function(c){if(c.statusCode>=200&&c.statusCode<300)return a(c);var d=new Error("HTTP status ".concat(c.statusCode));r(Object.assign(d,{type:"fail",res:c}))},fail:function(c){var d=new Error(c.errMsg||"request fail");r(Object.assign(d,{type:"fail",res:c}))},complete:function(){t&&C.delete(t)}}));t&&C.add(t,f)})}var T=0,S=!1;function $(e){S||(S=!0,uni.showLoading({title:e,mask:!0}))}function D(){S&&(S=!1,uni.hideLoading())}function z(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"加载中...";T++,T===1&&$(e)}function W(){T>0&&T--,T===0&&D()}function N(e,i){return function(a,r,t,s){return e(a,i,r,t,s)}}function I(e){return typeof e=="function"?e:function(){return e||{}}}function A(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=I(i.headers)(),t=I(a.headers)(),s=n._objectSpread2(n._objectSpread2(n._objectSpread2({},i),a),{},{headers:n._objectSpread2(n._objectSpread2({},r),t)}),f=s.headers,g=n._objectWithoutProperties(s,M),c=e.startsWith("http")?e:s.baseURL?"".concat(s.baseURL.replace(/\/+$/,""),"/").concat(e.replace(/^\/+/,"")):e;return{urlRes:c,headers:f,configRes:g}}function P(e){return typeof e=="function"?[e]:Array.isArray(e)?e.filter(function(i){return typeof i=="function"}):[]}function J(e){var i=e.url,a=e.config,r=a===void 0?{}:a,t=e.baseOpts,s=t===void 0?{}:t,f=e.defaultOpts,g=f===void 0?{}:f,c=e.options,d=c===void 0?{}:c,l=n._objectSpread2(n._objectSpread2({enable:!1,key:"",prefix:"api",expire:60*60},g.cacheConfig),d.cacheConfig);if(!l.key){var p=(l.prefix||"api").replace(/:$/,"");l.key="".concat(p,":").concat(i)}var u=l.adapter;if(l.enable&&(typeof u=="function"&&(u=u({url:i,config:r,options:s})),!(u&&typeof u.get=="function"&&typeof u.set=="function")))throw new Error("开启缓存(cacheConfig.enable=true)时,请在cacheConfig传入对应adapter的适配器,适配器必须实现 get(key)、set(key,value,expire) 方法");return Object.freeze(n._objectSpread2(n._objectSpread2({},l),{},{adapter:u}))}function E(e){var i=e.url,a=e.loadingText,r=e.config,t=e.defaultOpts,s=t===void 0?{}:t,f=e.options,g=f===void 0?{}:f,c=e.isCache,d=c===void 0?!0:c,l=n._objectSpread2(n._objectSpread2({qs:!0,showError:!0,cacheConfig:{},loadingText:a,loading:!0,reqInterceptor:function(u){return u},resInterceptor:function(u){return u},errInterceptor:function(){}},s),g);return d&&(l.cacheConfig=J({url:i,config:r,baseOpts:l,defaultOpts:s,options:g})),["reqInterceptor","resInterceptor","errInterceptor"].forEach(function(p){var u=[].concat(n._toConsumableArray(P(s[p])),n._toConsumableArray(P(g[p])));l[p]=u.length?U.composeAsync.apply(void 0,n._toConsumableArray(u)):function(o){return o}}),l}function q(e,i){var a=Array.from(i);return function(){return e.apply(void 0,n._toConsumableArray(x.cloneDeepWithDescriptors(a)))}}function L(e,i,a,r,t){return w.apply(this,arguments)}function w(){return w=n._asyncToGenerator(n._regenerator().m(function e(i,a,r,t,s){var f,g,c,d,l,p,u;return n._regenerator().w(function(o){for(;;)switch(o.p=o.n){case 0:return f=null,t.loading&&(z(t.loadingText),f=function(){W(),f=null}),o.p=1,o.n=2,t.reqInterceptor(r,t);case 2:return g=o.v,o.n=3,i(a,g);case 3:return c=o.v,o.n=4,t.resInterceptor(c,t,s);case 4:return d=o.v,o.a(2,d);case 5:return o.p=5,u=o.v,o.n=6,t.errInterceptor(u,t,s);case 6:if(l=o.v,l===void 0){o.n=7;break}return o.a(2,l);case 7:return o.a(2,Promise.reject(u));case 8:return o.p=8,(p=f)===null||p===void 0||p(),o.f(8);case 9:return o.a(2)}},e,null,[[1,5,8,9]])})),w.apply(this,arguments)}function Y(e,i){function a(r,t,s,f,g){var c=C.source(),d=q(a,arguments),l=A(r,e,f),p=l.urlRes,u=l.headers,o=l.configRes,v=E({url:r,loadingText:"加载中...",config:n._objectSpread2(n._objectSpread2({},o),{},{headers:u}),defaultOpts:i,options:g,isCache:!0}),h=v.cacheConfig,j=h.enable;if(j){var b=h.adapter.get(h.key);if(b)return Promise.resolve(b)}var _=t.toUpperCase()==="GET",y=_?R.JSON:v.qs?R.FORM_URLENCODED:R.JSON,O=n._objectSpread2({cancelToken:c.token,method:t,url:p,data:s,header:n._objectSpread2({"Content-Type":y},u)},o),m=L(k,"request",O,v,d).then(function(F){return j&&h.adapter.set(h.key,F,h.expire),F});return m.cancel=c.cancel,m.token=c.token,m}return a.get=N(a,"get"),a.post=N(a,"post"),a}function B(e,i){return function a(r,t,s,f){var g=C.source(),c=q(a,arguments),d=A(r,e,s),l=d.urlRes,p=d.headers,u=d.configRes,o=E({url:r,loadingText:"上传中...",config:n._objectSpread2(n._objectSpread2({},u),{},{headers:p}),defaultOpts:i,options:f,isCache:!1}),v=n._objectSpread2({keyName:"file"},t),h=v.keyName,j=h===void 0?"file":h,b=v.filePath,_=n._objectWithoutProperties(v,G);function y(m){return m?!!(m.startsWith("wxfile://tmp")||m.startsWith("http://tmp")||m.startsWith("http://temp")||m.startsWith("blob:")||m.startsWith("_doc/")):!1}if(!y(b))return Promise.resolve({data:b});var O=n._objectSpread2({cancelToken:g.token,url:l,filePath:b,name:j,formData:_,header:n._objectSpread2({},p)},u);return L(k,"uploadFile",O,o,c)}}function V(e,i){return function a(r,t,s,f){var g=C.source(),c=q(a,arguments),d=A(r,e,s),l=d.urlRes,p=d.headers,u=d.configRes,o=E({url:r,loadingText:"下载中...",config:n._objectSpread2(n._objectSpread2({},u),{},{headers:p}),defaultOpts:i,options:f,isCache:!1}),v=l;if(t&&n._typeof(t)==="object"&&!Array.isArray(t)){var h=Object.entries(t).filter(function(b){var _=n._slicedToArray(b,2),y=_[1];return y!=null&&y!==""}).map(function(b){var _=n._slicedToArray(b,2),y=_[0],O=_[1];return"".concat(encodeURIComponent(y),"=").concat(encodeURIComponent(O))}).join("&");h&&(v+=(v.includes("?")?"&":"?")+h)}var j=n._objectSpread2({cancelToken:g.token,url:v,header:n._objectSpread2({},p)},u);return L(k,"downloadFile",j,o,c)}}exports.CONTENT_TYPES=R;exports.CancelToken=C;exports.createDownloadFile=V;exports.createRequest=Y;exports.createUploadFile=B;exports.endLoading=W;exports.hideLoading=D;exports.promisifyRequest=k;exports.showLoading=$;exports.startLoading=z;
|