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.
@@ -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 i(o){var e,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};c._classCallCheck(this,i),this.url=o,this.reconnectDelay=n.reconnectDelay||1e3,this.heartbeatInterval=n.heartbeatInterval||3e4,this.heartbeatTimeout=n.heartbeatTimeout||1e4,this.heartbeatMsg=n.heartbeatMsg||"ping",this.maxReconnect=(e=n.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(i,[{key:"on",value:function(e,n){return this.events[e]&&this.events[e].push(n),this}},{key:"off",value:function(e,n){if(!this.events[e])return this;var s=this.events[e].indexOf(n);return s>-1&&this.events[e].splice(s,1),this}},{key:"emit",value:function(e){for(var n=arguments.length,s=new Array(n>1?n-1:0),t=1;t<n;t++)s[t-1]=arguments[t];this.events[e]&&this.events[e].forEach(function(a){try{a.apply(void 0,s)}catch(r){console.error("[".concat(e,"] callback error:"),r)}})}},{key:"connect",value:function(){var e=this;if(this.socketTask){var n=this.socketTask;this.socketTask=null,n.close({code:1e3,reason:"reconnect"})}this.manualClose=!1,this.socketTask=uni.connectSocket({url:this.url,success:function(){},complete:function(){}});var s=this.socketTask;return s.onOpen(function(t){var a=e.reconnectCount>0;e.isConnected=!0,e.reconnectCount=0,console.log("Connection established"),e.emit("open",t),a&&(console.log("Reconnected successfully"),e.emit("reconnect",t)),e.startHeartbeat()}),s.onMessage(function(t){e.resetHeartbeatTimeout(),e.emit("message",t)}),s.onClose(function(t){e.isConnected=!1,e.stopHeartbeat(),s===e.socketTask&&(console.log("Connection closed",t),e.emit("close",t),!e.manualClose&&e.reconnect())}),s.onError(function(t){if(console.error("WebSocket error: ",t),e.emit("error",t),s===e.socketTask){if(e.isConnected=!1,e.stopHeartbeat(),!e.manualClose){var a=e.maxReconnect===-1||e.reconnectCount<e.maxReconnect;e.emit("fail",{type:"connectError",url:e.url,willRetry:a,event:t})}try{s.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,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,n=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:n})}}])}();exports.WebSocketClient=u;exports.default=u;
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
@@ -2,6 +2,7 @@ export * from './aliPay';
2
2
  export * from './array';
3
3
  export * from './cache';
4
4
  export * from './date';
5
+ export * from './EventBus';
5
6
  export * from './fs';
6
7
  export * from './getLocation';
7
8
  export * from './http';
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./aliPay/index.js"),a=require("./array/index.js"),n=require("./cache/index.js"),c=require("./date/index.js"),r=require("./fs/index.js"),g=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"),u=require("./index-2cb7f964.js");require("./_rollupPluginBabelHelpers-63255c86.js");var P=require("./lodash");Object.assign(exports,P);exports.alipaySubmit=d.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.$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=g.getLocation;exports.openLocation=g.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=u.index;
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utils-uniapp",
3
- "version": "1.2.10",
3
+ "version": "1.2.11",
4
4
  "description": "aubyn's utils for uniapp",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",