utils-uniapp 1.2.10 → 1.2.11
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/EventBus/index.d.ts +24 -0
- package/lib/EventBus/index.js +1 -0
- package/lib/WebSocketClient/index.d.ts +16 -1
- package/lib/WebSocketClient/index.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare class EventBus {
|
|
2
|
+
/** 内部事件表(event -> listener[]),不建议外部直接操作 */
|
|
3
|
+
events: Record<string, Array<(...args: any[]) => any>>;
|
|
4
|
+
constructor();
|
|
5
|
+
/**
|
|
6
|
+
* 注册事件监听
|
|
7
|
+
* @returns 取消函数,调用后移除该监听
|
|
8
|
+
*/
|
|
9
|
+
on(event: string, listener: (...args: any[]) => any): () => void;
|
|
10
|
+
/**
|
|
11
|
+
* 移除事件监听;不传 listener 时清空该事件的所有监听
|
|
12
|
+
*/
|
|
13
|
+
off(event: string, listener?: (...args: any[]) => any): void;
|
|
14
|
+
/** 触发事件,监听器内异常不会中断其他监听器 */
|
|
15
|
+
emit(event: string, ...args: any[]): void;
|
|
16
|
+
/**
|
|
17
|
+
* 注册只触发一次的事件监听,触发后自动移除;
|
|
18
|
+
* 支持用 off(event, fn) 传入原始函数提前移除
|
|
19
|
+
* @returns 取消函数
|
|
20
|
+
*/
|
|
21
|
+
once(event: string, listener: (...args: any[]) => any): () => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const eventBus: InstanceType<typeof EventBus>;
|
|
24
|
+
export default EventBus;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../_rollupPluginBabelHelpers-63255c86.js");var v=function(){function h(){u._classCallCheck(this,h),this.events={}}return u._createClass(h,[{key:"on",value:function(t,r){var n=this;return u._typeof(this.events[t])!=="object"&&(this.events[t]=[]),this.events[t].push(r),function(){return n.off(t,r)}}},{key:"off",value:function(t,r){if(!r)return delete this.events[t];var n=this.events[t];if(u._typeof(n)==="object"){var o=n.findIndex(function(e){return e===r||e._origin===r});o>-1&&n.splice(o,1)}}},{key:"emit",value:function(t){for(var r=this,n=arguments.length,o=new Array(n>1?n-1:0),e=1;e<n;e++)o[e-1]=arguments[e];var i=this.events[t];u._typeof(i)==="object"&&i.slice().forEach(function(f){try{f.apply(r,o)}catch(s){console.error("[".concat(t,"] listener error:"),s)}})}},{key:"once",value:function(t,r){var n=this,o=this.events[t];if(u._typeof(o)==="object"&&o.some(function(i){return i===r||i._origin===r}))return function(){return n.off(t,r)};var e=function(){n.off(t,e);for(var f=arguments.length,s=new Array(f),a=0;a<f;a++)s[a]=arguments[a];r.apply(n,s)};return e._origin=r,this.on(t,e),function(){return n.off(t,r)}}}])}(),l=new v;exports.EventBus=v;exports.eventBus=l;
|
|
@@ -29,14 +29,21 @@ export declare class WebSocketClient {
|
|
|
29
29
|
* @param options 配置项
|
|
30
30
|
*/
|
|
31
31
|
constructor(url: string, options?: WebSocketClientOptions);
|
|
32
|
-
|
|
32
|
+
/** 连接的 URL */
|
|
33
33
|
url: string;
|
|
34
|
+
/** 重连间隔时间(ms) */
|
|
34
35
|
reconnectDelay: number;
|
|
36
|
+
/** 心跳发送间隔(ms) */
|
|
35
37
|
heartbeatInterval: number;
|
|
38
|
+
/** 心跳超时时间(ms) */
|
|
36
39
|
heartbeatTimeout: number;
|
|
40
|
+
/** 心跳消息内容 */
|
|
37
41
|
heartbeatMsg: string;
|
|
42
|
+
/** 最大重连次数,-1 为无限重连 */
|
|
38
43
|
maxReconnect: number;
|
|
44
|
+
/** 当前底层 WebSocket 实例,未连接时为 null */
|
|
39
45
|
socketTask: UniApp.SocketTask | null;
|
|
46
|
+
/** 是否已连接 */
|
|
40
47
|
isConnected: boolean;
|
|
41
48
|
heartbeatTimer: number | null;
|
|
42
49
|
heartbeatTimeoutTimer: number | null;
|
|
@@ -56,6 +63,14 @@ export declare class WebSocketClient {
|
|
|
56
63
|
*/
|
|
57
64
|
off<K extends WebSocketEventName>(event: K, fn: WebSocketEventHandler<K>): this;
|
|
58
65
|
|
|
66
|
+
/**
|
|
67
|
+
* 注册只触发一次的事件监听,触发后自动移除。
|
|
68
|
+
* 支持用 off(event, fn) 传入原始函数提前移除。
|
|
69
|
+
* @param event 事件名
|
|
70
|
+
* @param fn 事件回调
|
|
71
|
+
*/
|
|
72
|
+
once<K extends WebSocketEventName>(event: K, fn: WebSocketEventHandler<K>): this;
|
|
73
|
+
|
|
59
74
|
/**
|
|
60
75
|
* 内部触发事件(外部一般不用)
|
|
61
76
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../_rollupPluginBabelHelpers-63255c86.js");var u=function(){function
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../_rollupPluginBabelHelpers-63255c86.js");var u=function(){function a(s){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};c._classCallCheck(this,a),this.url=s,this.reconnectDelay=t.reconnectDelay||1e3,this.heartbeatInterval=t.heartbeatInterval||3e4,this.heartbeatTimeout=t.heartbeatTimeout||1e4,this.heartbeatMsg=t.heartbeatMsg||"ping",this.maxReconnect=(e=t.maxReconnect)!==null&&e!==void 0?e:-1,this.socketTask=null,this.isConnected=!1,this.heartbeatTimer=null,this.heartbeatTimeoutTimer=null,this.reconnectTimer=null,this.reconnectCount=0,this.manualClose=!1,this.events={open:[],message:[],close:[],error:[],reconnect:[],fail:[]}}return c._createClass(a,[{key:"on",value:function(e,t){return this.events[e]&&this.events[e].push(t),this}},{key:"off",value:function(e,t){if(!this.events[e])return this;var o=this.events[e],n=o.findIndex(function(i){return i===t||i._origin===t});return n>-1&&o.splice(n,1),this}},{key:"once",value:function(e,t){var o,n=this;if(!((o=this.events[e])!==null&&o!==void 0&&o.some(function(r){return r===t||r._origin===t}))){var i=function(){n.off(e,i),t.apply(void 0,arguments)};i._origin=t,this.on(e,i)}return this}},{key:"emit",value:function(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),n=1;n<t;n++)o[n-1]=arguments[n];this.events[e]&&this.events[e].forEach(function(i){try{i.apply(void 0,o)}catch(r){console.error("[".concat(e,"] callback error:"),r)}})}},{key:"connect",value:function(){var e=this;if(this.socketTask){var t=this.socketTask;this.socketTask=null,t.close({code:1e3,reason:"reconnect"})}this.manualClose=!1,this.socketTask=uni.connectSocket({url:this.url,success:function(){},complete:function(){}});var o=this.socketTask;return o.onOpen(function(n){var i=e.reconnectCount>0;e.isConnected=!0,e.reconnectCount=0,console.log("Connection established"),e.emit("open",n),i&&(console.log("Reconnected successfully"),e.emit("reconnect",n)),e.startHeartbeat()}),o.onMessage(function(n){e.resetHeartbeatTimeout(),e.emit("message",n)}),o.onClose(function(n){e.isConnected=!1,e.stopHeartbeat(),o===e.socketTask&&(console.log("Connection closed",n),e.emit("close",n),!e.manualClose&&e.reconnect())}),o.onError(function(n){if(console.error("WebSocket error: ",n),e.emit("error",n),o===e.socketTask){if(e.isConnected=!1,e.stopHeartbeat(),!e.manualClose){var i=e.maxReconnect===-1||e.reconnectCount<e.maxReconnect;e.emit("fail",{type:"connectError",url:e.url,willRetry:i,event:n})}try{o.close({code:1e3,reason:"error"})}catch(r){}e.manualClose||e.reconnect()}}),this}},{key:"send",value:function(e){return this.isConnected&&this.socketTask?this.socketTask.send({data:e}):console.error("WebSocket is not connected"),this}},{key:"startHeartbeat",value:function(){var e=this;this.stopHeartbeat(),this.heartbeatTimer=setInterval(function(){e.isConnected&&(e.send(e.heartbeatMsg),e.startHeartbeatTimeout())},this.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null),this.clearHeartbeatTimeout()}},{key:"startHeartbeatTimeout",value:function(){var e=this;this.clearHeartbeatTimeout(),this.heartbeatTimeoutTimer=setTimeout(function(){console.warn("Heartbeat timeout, close socket"),e.socketTask&&e.socketTask.close()},this.heartbeatTimeout)}},{key:"resetHeartbeatTimeout",value:function(){this.clearHeartbeatTimeout()}},{key:"clearHeartbeatTimeout",value:function(){this.heartbeatTimeoutTimer&&(clearTimeout(this.heartbeatTimeoutTimer),this.heartbeatTimeoutTimer=null)}},{key:"reconnect",value:function(){var e=this;if(!(this.isConnected||this.reconnectTimer)){if(this.maxReconnect!==-1&&this.reconnectCount>=this.maxReconnect){console.log("Reach max reconnect count, stop reconnect"),this.emit("fail",{type:"maxReconnect",maxReconnect:this.maxReconnect,willRetry:!1,url:this.url});return}this.reconnectCount+=1,console.log("Reconnecting in ".concat(this.reconnectDelay/1e3," seconds... count:").concat(this.reconnectCount)),this.reconnectTimer=setTimeout(function(){e.reconnectTimer=null,e.connect()},this.reconnectDelay)}}},{key:"close",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1e3,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";this.manualClose=!0,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectCount=0,this.socketTask&&this.socketTask.close({code:e,reason:t})}}])}();exports.WebSocketClient=u;exports.default=u;
|
package/lib/index.d.ts
CHANGED
package/lib/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 u=require("./aliPay/index.js"),a=require("./array/index.js"),n=require("./cache/index.js"),c=require("./date/index.js"),g=require("./EventBus/index.js"),r=require("./fs/index.js"),d=require("./getLocation/index.js"),o=require("./http/index.js"),e=require("./magic/index.js"),s=require("./object/index.js"),t=require("./pageStack/index.js"),i=require("./validate/index.js"),l=require("./WebSocketClient/index.js"),P=require("./index-2cb7f964.js");require("./_rollupPluginBabelHelpers-63255c86.js");var m=require("./lodash");Object.assign(exports,m);exports.alipaySubmit=u.alipaySubmit;exports.exchangeArrP=a.exchangeArrP;exports.filterTree=a.filterTree;exports.findTreeItem=a.findTreeItem;exports.flatWithKey=a.flatWithKey;exports.getTreePath=a.getTreePath;exports.groupBy=a.groupBy;exports.reverseForEach=a.reverseForEach;exports.treeItemSetParent=a.treeItemSetParent;exports.StorageCache=n.StorageCache;exports.localCache=n.localCache;exports.sessionCache=n.sessionCache;exports.dateFormat=c.dateFormat;exports.getDate=c.getDate;exports.EventBus=g.EventBus;exports.eventBus=g.eventBus;exports.$fs=r.$fs;exports.chooseImg=r.chooseImg;exports.getArraybufferTempPath=r.getArraybufferTempPath;exports.getImgBase64Prefix=r.getImgBase64Prefix;exports.readFile=r.readFile;exports.saveImageToPhotosAlbum=r.saveImageToPhotosAlbum;exports.writeFile=r.writeFile;exports.getLocation=d.getLocation;exports.openLocation=d.openLocation;exports.CONTENT_TYPES=o.CONTENT_TYPES;exports.CancelToken=o.CancelToken;exports.createDownloadFile=o.createDownloadFile;exports.createRequest=o.createRequest;exports.createUploadFile=o.createUploadFile;exports.promisifyRequest=o.promisifyRequest;exports.compareVersion=e.compareVersion;exports.compose=e.compose;exports.composeAsync=e.composeAsync;exports.debounce=e.debounce;exports.debouncePromise=e.debouncePromise;exports.decodeURIParams=e.decodeURIParams;exports.encodeURIParams=e.encodeURIParams;exports.getOnLoadParams=e.getOnLoadParams;exports.getPascalCase=e.getPascalCase;exports.getQueryParams=e.getQueryParams;exports.getQueryParamsFromHash=e.getQueryParamsFromHash;exports.getQueryParamsFromSearch=e.getQueryParamsFromSearch;exports.getRandom=e.getRandom;exports.getRandomStr=e.getRandomStr;exports.pipe=e.pipe;exports.pipeAsync=e.pipeAsync;exports.randomColor=e.randomColor;exports.throttle=e.throttle;exports.toQueryString=e.toQueryString;exports.cloneDeepWithDescriptors=s.cloneDeepWithDescriptors;exports.getRawType=s.getRawType;exports.hasOwnProperty=s.hasOwnProperty;exports.backToRoute=t.backToRoute;exports.findPageByFullPath=t.findPageByFullPath;exports.findPageByRoute=t.findPageByRoute;exports.getCurrentPage=t.getCurrentPage;exports.getCurrentPageOptions=t.getCurrentPageOptions;exports.getCurrentRoute=t.getCurrentRoute;exports.getPageStack=t.getPageStack;exports.getPageVm=t.getPageVm;exports.getPrevPage=t.getPrevPage;exports.getPrevRoute=t.getPrevRoute;exports.isExternal=i.isExternal;exports.validDate=i.validDate;exports.validIDCard=i.validIDCard;exports.validPhone=i.validPhone;exports.validPostalCode=i.validPostalCode;exports.validURL=i.validURL;exports.WebSocketClient=l.WebSocketClient;exports.wx=P.index;
|