diff --git a/hs-im-app-server/logs/mylog.log.2023-10-06.log b/hs-im-app-server/logs/mylog.log.2023-10-06.log new file mode 100644 index 0000000..dc85dc7 --- /dev/null +++ b/hs-im-app-server/logs/mylog.log.2023-10-06.log @@ -0,0 +1,18 @@ +2023-10-06 11:20:31 -Shutting down ExecutorService 'applicationTaskExecutor' +2023-10-06 11:59:33 -Starting AppServiceApplication on luojie with PID 10500 (E:\workplace\huashi_project\im-system\hs-im-app-server\target\classes started by coolp in E:\workplace\huashi_project\im-system\hs-im-app-server) +2023-10-06 11:59:33 -The following profiles are active: dev +2023-10-06 11:59:34 -Tomcat initialized with port(s): 8989 (http) +2023-10-06 11:59:34 -Initializing ProtocolHandler ["http-nio-8989"] +2023-10-06 11:59:34 -Starting service [Tomcat] +2023-10-06 11:59:34 -Starting Servlet engine: [Apache Tomcat/9.0.37] +2023-10-06 11:59:34 -Initializing Spring embedded WebApplicationContext +2023-10-06 11:59:34 -Root WebApplicationContext: initialization completed in 554 ms +2023-10-06 11:59:35 -Initializing ExecutorService 'applicationTaskExecutor' +2023-10-06 11:59:35 -Starting ProtocolHandler ["http-nio-8989"] +2023-10-06 11:59:35 -Tomcat started on port(s): 8989 (http) with context path '' +2023-10-06 11:59:35 -Started AppServiceApplication in 2.549 seconds (JVM running for 3.426) +2023-10-06 12:00:10 -Initializing Spring DispatcherServlet 'dispatcherServlet' +2023-10-06 12:00:10 -Initializing Servlet 'dispatcherServlet' +2023-10-06 12:00:10 -Completed initialization in 2 ms +2023-10-06 12:00:10 -HikariPool-1 - Starting... +2023-10-06 12:00:11 -HikariPool-1 - Start completed. diff --git a/hs-im-app-server/src/main/resources/application.yml b/hs-im-app-server/src/main/resources/application.yml index d076828..d551616 100644 --- a/hs-im-app-server/src/main/resources/application.yml +++ b/hs-im-app-server/src/main/resources/application.yml @@ -32,7 +32,7 @@ mybatis: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl appConfig: - imUrl: http://127.0.0.1:28000 + imUrl: http://192.168.1.117:28000 imVersion: v1 appId: 10000 adminId: admin diff --git a/hs-im-server/im-common/pom.xml b/hs-im-server/im-common/pom.xml index f6ec3d4..03e7dea 100644 --- a/hs-im-server/im-common/pom.xml +++ b/hs-im-server/im-common/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - common + im-common 1.8 diff --git a/hs-im-server/im-common/src/main/java/com/lld/im/common/model/SyncReq.java b/hs-im-server/im-common/src/main/java/com/lld/im/common/model/SyncReq.java index 1bfa09e..2ece45d 100644 --- a/hs-im-server/im-common/src/main/java/com/lld/im/common/model/SyncReq.java +++ b/hs-im-server/im-common/src/main/java/com/lld/im/common/model/SyncReq.java @@ -14,6 +14,7 @@ public class SyncReq extends RequestBase { private Long lastSequence; //一次拉取多少 private Integer maxLimit; + private Integer appId; private String operater; } diff --git a/hs-im-server/im-service/pom.xml b/hs-im-server/im-service/pom.xml index 805ad60..d2bc5d9 100644 --- a/hs-im-server/im-service/pom.xml +++ b/hs-im-server/im-service/pom.xml @@ -14,7 +14,7 @@ 1.8 - service + im-service @@ -84,15 +84,10 @@ com.lld - common + im-common 1.0.0-SNAPSHOT - - com.lld - im-system - 1.0.0-SNAPSHOT - compile - + diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/controller/ConversationController.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/controller/ConversationController.java index db90c65..74bc704 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/controller/ConversationController.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/controller/ConversationController.java @@ -42,7 +42,7 @@ public class ConversationController { @RequestMapping("/syncConversationList") public ResponseVO syncFriendShipList(@RequestBody @Validated SyncReq req,Integer appId) { - req.setAppId(appId); + // req.setAppId(appId); return conversationService.syncConversationSet(req); } diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/service/ConversationService.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/service/ConversationService.java index df4594d..f6db2d5 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/service/ConversationService.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/conversation/service/ConversationService.java @@ -181,9 +181,11 @@ public class ConversationService { queryWrapper.last(" limit " + req.getMaxLimit()); queryWrapper.orderByAsc("sequence"); + log.info("============================= syncConversationSet ========================"); log.info("============================= syncConversationSet ========================"); log.info("============================= syncConversationSet ========================"); + log.info(req.toString()); List list = imConversationSetMapper diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/mq/ChatOperateReceiver.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/mq/ChatOperateReceiver.java index 5ca1f8b..fc19162 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/mq/ChatOperateReceiver.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/mq/ChatOperateReceiver.java @@ -75,6 +75,9 @@ public class ChatOperateReceiver { //消息接收确认 MessageReadedContent messageContent = jsonObject.toJavaObject(MessageReadedContent.class); + + logger.error("==============服务端接收到1106的信号:{}",messageContent); + messageSyncService.readMark(messageContent); }else if (Objects.equals(command, MessageCommand.MSG_RECALL.getCommand())) { // 撤回消息 diff --git a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageStoreService.java b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageStoreService.java index ea602b4..91fbf9f 100644 --- a/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageStoreService.java +++ b/hs-im-server/im-service/src/main/java/com/lld/im/service/message/service/MessageStoreService.java @@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit; /** * @description: - * @author: lld + * @author: rowger * @version: 1.0 */ @Service @@ -155,7 +155,7 @@ public class MessageStoreService { * @description: 存储单人离线消息 * @param * @return void - * @author lld + * @author lld */ public void storeOfflineMessage(OfflineMessageContent offlineMessage){ diff --git a/hs-im-server/im-tcp/pom.xml b/hs-im-server/im-tcp/pom.xml index 3e217fb..2449368 100644 --- a/hs-im-server/im-tcp/pom.xml +++ b/hs-im-server/im-tcp/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - tcp + im-tcp 1.8 3.3.0 diff --git a/hs-im-server/im-tcp/src/main/java/com/lld/im/tcp/handler/NettyServerHandler.java b/hs-im-server/im-tcp/src/main/java/com/lld/im/tcp/handler/NettyServerHandler.java index 0856960..0844d7b 100644 --- a/hs-im-server/im-tcp/src/main/java/com/lld/im/tcp/handler/NettyServerHandler.java +++ b/hs-im-server/im-tcp/src/main/java/com/lld/im/tcp/handler/NettyServerHandler.java @@ -150,7 +150,6 @@ public class NettyServerHandler extends SimpleChannelInboundHandler { || command == GroupEventCommand.MSG_GROUP.getCommand()){ logger.info("***********************收到单聊或者群聊消息:{}", msg); - try { String toId = ""; CheckSendMessageReq req = new CheckSendMessageReq(); diff --git a/hs-im-server/pom.xml b/hs-im-server/pom.xml index 86ec431..e2ba15b 100644 --- a/hs-im-server/pom.xml +++ b/hs-im-server/pom.xml @@ -88,12 +88,6 @@ com.github.sgroschupf zkclient - - com.lld - common - 1.0.0-SNAPSHOT - compile - com.netflix.feign feign-core diff --git a/im-uniapp/App.vue b/im-uniapp/App.vue index a5a6768..455d98e 100644 --- a/im-uniapp/App.vue +++ b/im-uniapp/App.vue @@ -23,20 +23,10 @@ // todo 下列两行 uni.setStorageSync('device', 'H5'); uni.setStorageSync('version', versionName); - this.$http.request({ - url: '/common/getVersion', - success: (res) => { - if(res.data.data.upgrade=='Y'){ - console.log( - `%c 有新版本 `+res.data.data.version, - 'background:#007aff ;padding: 1px; border-radius: 0 3px 3px 0; color: #fff; font-weight: bold;' - ) - } - } - }); + // #endif console.log('App Launch') - let token= uni.getStorageSync('Authorization'); + let token= uni.getStorageSync('imUserSign'); if (!token) { //不存在则跳转至登录页 // #ifdef APP-PLUS @@ -104,29 +94,7 @@ }) } // #ifdef APP-PLUS - //升级检测 - uni.getSystemInfo({ - success: (res)=> { - uni.setStorageSync('device', res.platform); - plus.runtime.getProperty(plus.runtime.appid, (widgetInfo)=> { - uni.setStorageSync('version', widgetInfo.version); - this.$http.request({ - url: '/common/getVersion', - success: (res) => { - if(res.data.data.upgrade=='Y'){ - appUpgrade.init({ - titleText: '版本更新'+res.data.data.version, - packageUrl:res.data.data.url, - content: res.data.data.content, - forceUpgrade:res.data.data.forceUpgrade=='Y' ? true : false - }); - appUpgrade.show(); - } - } - }); - }); - } - }); + uni.onNetworkStatusChange( (res)=> { if(res.isConnected){ this.$store.dispatch('get_UserInfo') diff --git a/im-uniapp/common/imSdk/lim-sdk.js b/im-uniapp/common/imSdk/lim-sdk.js index 50c29b4..13ca009 100644 --- a/im-uniapp/common/imSdk/lim-sdk.js +++ b/im-uniapp/common/imSdk/lim-sdk.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.imsdk=e():t.imsdk=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";var r=this&&this.__spreadArrays||function(){for(var t=0,e=0,n=arguments.length;e0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=1e4){r=Date.now();var s=e.imClient.buildMessagePack(y.SystemCommand.PING,{});t.send(s.pack(!1))}setTimeout(i,500)}else a.default.error("heartbeatLoop exited")};setTimeout(i,500)},t.prototype.createP2PTextMessage=function(t,e){var n=new g.MessagePack(this.appId);return n.buildTextMessagePack(this.userId,t,e),n},t.prototype.sendP2PMessage=function(t){var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_P2P,t);this.conn&&this.conn.send(n.pack(!1))},t.prototype.getUserId=function(){return this.userId},t.prototype.loadOfflineMessage=function(){return r(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return a.default.info("loadOfflineMessage start"),[4,new p.default(this.httpUrl).call("/message/syncOfflineMessage",this.getRequestParams(),{clientType:this.clientType,operater:this.userId,appId:this.appId,lastSequence:this.lastOfflineMessageSequence,maxLimit:100})];case 1:return(t=r.sent()).isSucceed()?(this.lastOfflineMessageSequence=t.data.maxSequence,n=t.data.dataList,this.offlineMessageList.push(n),n.length>0&&"function"==typeof e.imClient.listeners.onOfflineMessage&&e.imClient.listeners.onOfflineMessage(n),console.log(t.data.completed),t.data.completed||this.loadOfflineMessage()):a.default.error("loadOfflineMessage - error"),[2]}}))}))},t}();e.ImClient=m,e.limLogin=function(t,e,n){return r(void 0,void 0,void 0,(function(){return i(this,(function(r){return[2,new Promise((function(r,i){var o=new c.w3cwebsocket(t);o.binaryType="arraybuffer",a.default.info("limLogin");var s=setTimeout((function(){clearTimeout(s),r({success:!1,err:new Error("timeout"),conn:o})}),1e4);o.onopen=function(){if(o.readyState==c.w3cwebsocket.OPEN){"function"==typeof n.listeners.onSocketConnectEvent&&n.listeners.onSocketConnectEvent(t,e),a.default.info("开启连接");var r={userId:e.userId},i=n.buildMessagePack(9e3,r);o.send(i.pack(!1))}},o.onerror=function(t){clearTimeout(s),a.default.error(t),r({success:!1,err:t,conn:o})},o.onmessage=function(t){if("string"!=typeof t.data){clearTimeout(s);var e=new u.default(t.data).int32().int32().unpack(),n=e[0];e[1];9001==n&&r({success:!0,conn:o})}else a.default.info("Received: '"+t.data+"'")}}))]}))}))},e.getLen=function(t){for(var e=0,n=0;n=1&&r<=126||65376<=r&&r<=65439?e++:e+=3}return e},e.imClient=new m},function(t,e,n){"use strict";(function(t){e.__esModule=!0;var r=function(){function e(){}return e.getFetchToolkit=function(){var e;if(void 0!==t.fetch&&"function"==typeof t.fetch)e=t.fetch;else if("function"==typeof fetch)e=fetch;else{e=n(9).fetch}return e},e}();e.default=r}).call(this,n(8))},function(t,e,n){"use strict";e.__esModule=!0,e.im=void 0;var r=n(2);e.im=r.imClient,"undefined"!=typeof uni&&(uni.im=r.imClient)},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(t,e){this.Type_Byte=1,this.Type_Short=2,this.Type_UShort=3,this.Type_Int32=4,this.Type_UInt32=5,this.Type_String=6,this.Type_VString=7,this.Type_Int64=8,this.Type_Float=9,this.Type_Double=10,this.Type_ByteArray=11,this._offset=0,this._list=[],this._littleEndian=!1,this._org_buf=t?t.constructor==DataView?t:t.constructor==Uint8Array?new DataView(t.buffer,e):new DataView(t,e):new DataView(new Uint8Array([]).buffer),this.arrayBuf=t,this.offset=e}return t.prototype.bigEndian=function(){return this._littleEndian=!1,this},t.prototype.littleEndianfunction=function(){return this._littleEndian=!0,this},t.prototype.utf8Write=function(t,e,n){for(var r=0,i=0,o=n.length;i>6),t.setUint8(e++,128|63&r)):r<55296||r>=57344?(t.setUint8(e++,224|r>>12),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r)):(i++,r=65536+((1023&r)<<10|1023&n.charCodeAt(i)),t.setUint8(e++,240|r>>18),t.setUint8(e++,128|r>>12&63),t.setUint8(e++,128|r>>6&63),t.setUint8(e++,128|63&r))},t.prototype.int32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getInt32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int32,d:t,l:4}),this._offset+=4),this},t.prototype.uint32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getUint32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_UInt32,d:t,l:4}),this._offset+=4),this},t.prototype.blength=function(){return this._offset},t.prototype.string=function(t,e){if(0==arguments.length){var n=this._org_buf.getInt32(this._offset,this._littleEndian);this._offset+=4,this._list.push(this.utf8Read(this._org_buf,this._offset,n)),this._offset+=n}else{n=0;t&&(n=this.utf8Length(t)),this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_String,d:t,l:n}),this._offset+=n+4}return this},t.prototype.utf8Length=function(t){for(var e=0,n=0,r=0,i=t.length;r=57344?n+=3:(r++,n+=4);return n},t.prototype.utf8Read=function(t,e,n){for(var r="",i=0,o=e,s=e+n;o=65536?(i-=65536,r+=String.fromCharCode(55296+(i>>>10),56320+(1023&i))):r+=String.fromCharCode(i)}else r+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else r+=String.fromCharCode((15&a)<<6|63&t.getUint8(++o));else r+=String.fromCharCode(a)}return r},t.prototype.vstring=function(t,e,n){if(!e)throw new Error("vstring must got len argument");if(null==t||null==t){for(var r=0,i=this._offset;i0&&r++;this._list.push(this.utf8Read(this._org_buf,this._offset,r)),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_VString,d:t,l:e}),this._offset+=e;return this},t.prototype.int64=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int64,d:t,l:8}),this._offset+=8),this},t.prototype.float=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Float,d:t,l:4}),this._offset+=4),this},t.prototype.double=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Double,d:t,l:8}),this._offset+=8),this},t.prototype.byteArray=function(t,e,n){if(!e)throw new Error("byteArray must got len argument");if(null==t||null==t){var r=new Uint8Array(this._org_buf.buffer.slice(this._offset,this._offset+e));this._list.push(r),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_ByteArray,d:t,l:e}),this._offset+=e;return this},t.prototype.unpack=function(){return this._list},t.prototype.packWithHead=function(){return this.pack(!0)},t.prototype.pack=function(t){this._org_buf=new DataView(new ArrayBuffer(t?this._offset+4:this._offset));var e=0;t&&(this._org_buf.setUint32(e,this._offset,this._littleEndian),e+=4);for(var n=0;n>2,o=(3&e)<<4|(n=t.charCodeAt(f++))>>4,s=(15&n)<<2|(r=t.charCodeAt(f++))>>6,a=63&r,isNaN(n)?s=a=64:isNaN(r)&&(a=64),u=u+this._keyStr.charAt(i)+this._keyStr.charAt(o)+this._keyStr.charAt(s)+this._keyStr.charAt(a);return u},decode:function(t){var e,n,r,i,o,s,a="",u=0;for(t=t.replace(/[^A-Za-z0-9+/=]/g,"");u>4,n=(15&i)<<4|(o=this._keyStr.indexOf(t.charAt(u++)))>>2,r=(3&o)<<6|(s=this._keyStr.indexOf(t.charAt(u++))),a+=String.fromCharCode(e),64!=o&&(a+=String.fromCharCode(n)),64!=s&&(a+=String.fromCharCode(r));return a=Base64._utf8_decode(a)},_utf8_encode:function(t){t=t.replace(/rn/g,"n");for(var e="",n=0;n127&&r<2048?(e+=String.fromCharCode(r>>6|192),e+=String.fromCharCode(63&r|128)):(e+=String.fromCharCode(r>>12|224),e+=String.fromCharCode(r>>6&63|128),e+=String.fromCharCode(63&r|128))}return e},_utf8_decode:function(t){for(var e="",n=0,r=0,i=0;n191&&r<224)i=t.charCodeAt(n+1),e+=String.fromCharCode((31&r)<<6|63&i),n+=2;else{i=t.charCodeAt(n+1);var o=t.charCodeAt(n+2);e+=String.fromCharCode((15&r)<<12|(63&i)<<6|63&o),n+=3}return e}},WebToolkit=function(){function WebToolkit(){}return WebToolkit.getBrowserInfo=function(){var t=navigator.userAgent.toLowerCase(),e=/edge\/[\d.]+/gi,n=/trident\/[\d.]+/gi,r=/msie\s[\d.]+/gi,i=/firefox\/[\d.]+/gi,o=/chrome\/[\d.]+/gi,s=/safari\/[\d.]+/gi,a=/opr\/[\d.]+/gi,u={code:0,system:t.split(" ")[1].split(" ")[0].split("(")[1],browser:"",browserVersion:""};return t.indexOf("trident")>0?(u.browser=t.match(n)[0].split("/")[0],u.browserVersion=t.match(n)[0].split("/")[1],u):t.indexOf("msie")>0?(u.browser=t.match(r)[0].split(" ")[0],u.browserVersion=t.match(r)[0].split(" ")[1],u):t.indexOf("edge")>0?(u.browser=t.match(e)[0].split("/")[0],u.browserVersion=t.match(e)[0].split("/")[1],u):t.indexOf("firefox")>0?(u.browser=t.match(i)[0].split("/")[0],u.browserVersion=t.match(i)[0].split("/")[1],u):t.indexOf("opr")>0?(u.browser=t.match(a)[0].split("/")[0],u.browserVersion=t.match(a)[0].split("/")[1],u):t.indexOf("safari")>0&&t.indexOf("chrome")<0?(u.browser=t.match(s)[0].split("/")[0],u.browserVersion=t.match(s)[0].split("/")[1],u):t.indexOf("chrome")>0?(u.browser=t.match(o)[0].split("/")[0],u.browserVersion=t.match(o)[0].split("/")[1],u):(u.code=-1,u)},WebToolkit.getWxappInfo=function(){return{system:"WXAPP",browser:"WXAPP",browserVersion:"1.0"}},WebToolkit.getReactNativeInfo=function(){return{system:"RNNative",browser:"RNNative",browserVersion:"1.0"}},WebToolkit.getUniAppInfo=function(){return{system:"UNIAPP",browser:"UNIAPP",browserVersion:"1.0"}},WebToolkit.loadJS=function(t,e){var n=document.createElement("script"),r=e||function(){};n.type="text/javascript";var i=!1;for(var o in document.getElementsByTagName("head")[0].children){var s=document.getElementsByTagName("head")[0].children[o];void 0!==s.outerHTML&&s.outerHTML.indexOf(t)>=0&&(i=!0)}i?r():(n.readyState?n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(n.onreadystatechange=null,r())}:n.onload=function(){r()},n.src=t,document.getElementsByTagName("head")[0].appendChild(n))},WebToolkit.getIpInfoByFetch=function(callback){var url="http://pv.sohu.com/cityjson?ie=utf-8",fetch=Fetch_1.default.getFetchToolkit(),request={method:"GET",mode:"cors",headers:{"Content-Type":"application/json"}};return fetch(url,request).then((function(t){return t.text()})).then((function(res){if("function"==typeof callback){var currentCity=eval("_current_city="+res.replace("var returnCitySN = ",""));callback(currentCity)}})).catch((function(t){Logger_1.default.trace(t)}))},WebToolkit.getIpInfoByInsertScript=function(t){WebToolkit.loadJS("http://pv.sohu.com/cityjson?ie=utf-8",(function(){t(window.returnCitySN)}))},WebToolkit.getIpInfo=function(t){WebToolkit.getIpInfoByFetch(t)},WebToolkit.getDeviceInfo=function(){return WebToolkit.getUniAppInfo()},WebToolkit.base64Encode=function(t){return Base64.encode(t)},WebToolkit.base64Decode=function(t){return Base64.decode(t)},WebToolkit}();exports.default=WebToolkit},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";n.r(e),n.d(e,"Headers",(function(){return p})),n.d(e,"Request",(function(){return v})),n.d(e,"Response",(function(){return C})),n.d(e,"DOMException",(function(){return I})),n.d(e,"fetch",(function(){return O}));var r="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==r&&r,i="URLSearchParams"in r,o="Symbol"in r&&"iterator"in Symbol,s="FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in r,u="ArrayBuffer"in r;if(u)var f=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],l=ArrayBuffer.isView||function(t){return t&&f.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t}function h(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return o&&(e[Symbol.iterator]=function(){return e}),e}function p(t){this.map={},t instanceof p?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function _(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function y(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function g(t){var e=new FileReader,n=y(e);return e.readAsArrayBuffer(t),n}function b(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:s&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:i&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():u&&s&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=b(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):u&&(ArrayBuffer.prototype.isPrototypeOf(t)||l(t))?this._bodyArrayBuffer=b(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("Content-Type")||("string"==typeof t?this.headers.set("Content-Type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("Content-Type",this._bodyBlob.type):i&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"))},s&&(this.blob=function(){var t=_(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var t=_(this);return t||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}return this.blob().then(g)}),this.text=function(){var t,e,n,r=_(this);if(r)return r;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,n=y(e),e.readAsText(t),n;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var o=/([?&])_=[^&]*/;if(o.test(this.url))this.url=this.url.replace(o,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function S(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(i))}})),e}function T(t){var e=new p;for(var n in t)e.append(n,t[n]);return e}function C(t,e){if(!(this instanceof C))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new p(e.headers),this.url=e.url||"",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},C.error=function(){var t=new C(null,{status:0,statusText:""});return t.type="error",t};var w=[301,302,303,307,308];C.redirect=function(t,e){if(-1===w.indexOf(e))throw new RangeError("Invalid status code");return new C(null,{status:e,headers:{location:t}})};var I=r.DOMException;try{new I}catch(t){(I=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack}).prototype=Object.create(Error.prototype),I.prototype.constructor=I}function O(t,e){return new Promise((function(n,i){var o=new v(t,e);if(o.signal&&o.signal.aborted)return i(new I("Aborted","AbortError"));function s(t){try{if("object"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t}catch(t){}return t.toString()}let a=void 0===o._bodyInit?null:o._bodyInit;o.headers.hasOwnProperty("Content-Type")&&o.headers["Content-Type"].indexOf("application/json")>=0&&"POST"===o.method.toUpperCase()&&(a=JSON.parse(a));const u=uni.request({url:function(t){try{return""===t&&r.location.href?r.location.href:t}catch(e){return t}}(o.url),method:o.method,data:a,header:o.headers.map,complete:t=>{if(o.signal&&o.signal.removeEventListener("abort",f),t.errMsg.indexOf("fail")>=0)setTimeout((function(){i(new TypeError("Network request failed"))}),0);else{var e={status:t.statusCode,statusText:t.data?s(t.data):"",headers:T(t.header||{})};e.url=e.headers.get("X-Request-URL");var r=e.statusText;setTimeout((function(){n(new C(r,e))}),0)}}});function f(){u.abort()}o.signal&&o.signal.addEventListener("abort",f)}))}O.polyfill=!0,r.fetch||(r.fetch=O,r.Headers=p,r.Request=v,r.Response=C)},function(t,e,n){var r;if("object"==typeof globalThis)r=globalThis;else try{r=n(11)}catch(t){}finally{if(r||"undefined"==typeof window||(r=window),!r)throw new Error("Could not determine global this")}var i=r.WebSocket||r.MozWebSocket,o=n(12);function s(t,e){return e?new i(t,e):new i(t)}i&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(t){Object.defineProperty(s,t,{get:function(){return i[t]}})})),t.exports={w3cwebsocket:i?s:null,version:o}},function(t,e){var n=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;if("object"==typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},function(t,e,n){t.exports=n(13).version},function(t){t.exports=JSON.parse('{"name":"websocket","description":"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.","keywords":["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],"author":"Brian McKelvey (https://github.com/theturtle32)","contributors":["Iñaki Baz Castillo (http://dev.sipdoc.net)"],"version":"1.0.34","repository":{"type":"git","url":"https://github.com/theturtle32/WebSocket-Node.git"},"homepage":"https://github.com/theturtle32/WebSocket-Node","engines":{"node":">=4.0.0"},"dependencies":{"bufferutil":"^4.0.1","debug":"^2.2.0","es5-ext":"^0.10.50","typedarray-to-buffer":"^3.1.5","utf-8-validate":"^5.0.2","yaeti":"^0.0.6"},"devDependencies":{"buffer-equal":"^1.0.0","gulp":"^4.0.2","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1","jshint":"^2.0.0","tape":"^4.9.1"},"config":{"verbose":false},"scripts":{"test":"tape test/unit/*.js","gulp":"gulp"},"main":"index","directories":{"lib":"./lib"},"browser":"lib/browser.js","license":"Apache-2.0"}')},function(t,e,n){"use strict";e.__esModule=!0,e.RequestBase=void 0;var r=function(t,e,n){this.appId=t,this.clientType=e,this.imei=n};e.RequestBase=r},function(t,e,n){"use strict";e.__esModule=!0,e.RequestParams=void 0;var r=function(t,e,n){this.appId=t,this.identifier=e,this.userSign=n};e.RequestParams=r},function(t,e,n){"use strict";e.__esModule=!0;var r=n(0),i=n(2),o=n(17),s=n(1),a=n(3),u=function(){function t(t){this.url="",this.url=t}return t.prototype.call=function(t,e,n){var o=i.imClient.userId;r.default.info(o);var a=this.url+t;if(null!=e){var u=this.setQueryConfig(e);console.log(u),a+=u}n=this.setQueryToBody(e,n);var f={method:"POST",headers:{"Content-Type":"application/json"},mode:"cors",body:s.default.json(n)};return this.httpFetch(a,f)},t.prototype.setQueryToBody=function(t,e){for(var n in t)e[n]=t[n];return e},t.prototype.setQueryConfig=function(t){var e="?";for(var n in t)e+=n+"="+t[n]+"&";return e=e.substring(0,e.length-1)},t.prototype.httpFetch=function(t,e){var n=this;return console.log("httpFetch"),a.default.getFetchToolkit()(t,e).then((function(t){return console.log(t),t.json()})).then((function(i){r.default.info("==> ["+e.method+"] "+t+" back:"+s.default.json(i));var o=n.response2ApiResponse(i);return o.isFailed()?Promise.reject(o):Promise.resolve(o)}))},t.prototype.response2ApiResponse=function(t){var e=new o.default(!0);return e.data=t.data,e.msg=t.msg,e.code=t.code,e},t}();e.default=u},function(t,e,n){"use strict";e.__esModule=!0;var r=function(){function t(t){void 0===t&&(t=!1),this.msg="",this.data=null,t&&(this.code=200)}return t.prototype.isSucceed=function(){return 200===this.code},t.prototype.isFailed=function(){return!this.isSucceed()},t}();e.default=r},function(t,e,n){"use strict";var r,i,o,s,a,u;e.__esModule=!0,e.ConversationEventCommand=e.UserEventCommand=e.SystemCommand=e.GroupCommand=e.FriendShipCommand=e.MessageCommand=void 0,function(t){t[t.MSG_P2P=1103]="MSG_P2P",t[t.MSG_P2P_SYNC=1108]="MSG_P2P_SYNC",t[t.MSG_READED=1106]="MSG_READED",t[t.MSG_RECIVE_ACK=1107]="MSG_RECIVE_ACK",t[t.MSG_ACK=1046]="MSG_ACK",t[t.MSG_RECALL=1050]="MSG_RECALL",t[t.MSG_RECALL_NOTIFY=1052]="MSG_RECALL_NOTIFY",t[t.MSG_RECALL_ACK=1051]="MSG_RECALL_ACK",t[t.MSG_READED_NOTIFY=1053]="MSG_READED_NOTIFY"}(r||(r={})),e.MessageCommand=r,function(t){t[t.FRIEND_ADD=3e3]="FRIEND_ADD",t[t.FRIEND_UPDATE=3001]="FRIEND_UPDATE",t[t.FRIEND_DELETE=3002]="FRIEND_DELETE",t[t.FRIEND_REQUEST=3003]="FRIEND_REQUEST",t[t.FRIEND_REQUEST_READ=3004]="FRIEND_REQUEST_READ",t[t.FRIEND_REQUEST_APPROVER=3005]="FRIEND_REQUEST_APPROVER",t[t.FRIEND_BLACK_ADD=3010]="FRIEND_BLACK_ADD",t[t.FRIEND_BLACK_DELETE=3011]="FRIEND_BLACK_DELETE",t[t.FRIEND_GROUP_ADD=3012]="FRIEND_GROUP_ADD",t[t.FRIEND_GROUP_DELETE=3013]="FRIEND_GROUP_DELETE",t[t.FRIEND_GROUP_MEMBER_ADD=3014]="FRIEND_GROUP_MEMBER_ADD",t[t.FRIEND_GROUP_MEMBER_DELETE=3015]="FRIEND_GROUP_MEMBER_DELETE"}(i||(i={})),e.FriendShipCommand=i,function(t){t[t.JOIN_GROUP=2e3]="JOIN_GROUP",t[t.ADDED_MEMBER=2001]="ADDED_MEMBER",t[t.CREATED_GROUP=2002]="CREATED_GROUP",t[t.UPDATED_GROUP=2003]="UPDATED_GROUP",t[t.EXIT_GROUP=2004]="EXIT_GROUP",t[t.UPDATED_MEMBER=2005]="UPDATED_MEMBER",t[t.DELETED_MEMBER=2006]="DELETED_MEMBER",t[t.DESTROY_GROUP=2007]="DESTROY_GROUP",t[t.TRANSFER_GROUP=2008]="TRANSFER_GROUP",t[t.MUTE_GROUP=2009]="MUTE_GROUP",t[t.SPEAK_GOUP_MEMBER=2010]="SPEAK_GOUP_MEMBER",t[t.MSG_GROUP=2104]="MSG_GROUP",t[t.MSG_GROUP_SYNC=2105]="MSG_GROUP_SYNC",t[t.GROUP_MSG_ACK=2047]="GROUP_MSG_ACK"}(o||(o={})),e.GroupCommand=o,function(t){t[t.PING=9999]="PING",t[t.LOGIN=9e3]="LOGIN",t[t.LOGINACK=9001]="LOGINACK",t[t.MUTUALLOGIN=9002]="MUTUALLOGIN",t[t.LOGOUT=9003]="LOGOUT"}(s||(s={})),e.SystemCommand=s,function(t){t[t.USER_MODIFY=4e3]="USER_MODIFY",t[t.USER_ONLINE_STATUS_CHANGE=4001]="USER_ONLINE_STATUS_CHANGE",t[t.USER_ONLINE_STATUS_SUBSCRIBE=4002]="USER_ONLINE_STATUS_SUBSCRIBE",t[t.PULL_USER_ONLINE_STATUS=4003]="PULL_USER_ONLINE_STATUS",t[t.USER_ONLINE_STATUS_CHANGE_NOTIFY=4004]="USER_ONLINE_STATUS_CHANGE_NOTIFY"}(a||(a={})),e.UserEventCommand=a,function(t){t[t.CONVERSATION_DELETE=5e3]="CONVERSATION_DELETE",t[t.CONVERSATION_UPDATE=5001]="CONVERSATION_UPDATE"}(u||(u={})),e.ConversationEventCommand=u},function(t,e,n){"use strict";e.__esModule=!0,e.MessagePack=void 0;var r=n(1),i=function(){function t(t){this.messageId=r.default.uuid(),this.appId=t,this.messageRandom=this.RangeInteger(0,1e4),this.messageTime=Date.parse((new Date).toString())}return t.prototype.RangeInteger=function(t,e){var n=e-t;return Math.floor(Math.random()*n)+t},t.prototype.buildTextMessagePack=function(t,e,n){this.fromId=t,this.toId=e;var i={type:1,content:n};this.messageBody=r.default.json(i)},t.prototype.buildCustomerMessagePack=function(t,e,n,i){this.fromId=t,this.toId=e;var o={type:n,content:i};this.messageBody=r.default.json(o)},t}();e.MessagePack=i}])})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.imsdk=e():t.imsdk=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e,n){"use strict";var i=this&&this.__spreadArrays||function(){for(var t=0,e=0,n=arguments.length;e0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=1e4){i=Date.now();var s=e.imClient.buildMessagePack(y.SystemCommand.PING,{});t.send(s.pack(!1))}setTimeout(r,500)}else a.default.error("heartbeatLoop exited")};setTimeout(r,500)},t.prototype.createP2PTextMessage=function(t,e){var n=new g.MessagePack(this.appId);return n.buildTextMessagePack(this.userId,t,e),n},t.prototype.sendP2PMessage=function(t){var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_P2P,t);this.conn&&this.conn.send(n.pack(!1))},t.prototype.sendP2PMessageReciveAck=function(t){console.log("=============== sendP2PMessageReciveAck"),console.log(t),t.toId=t.fromId,t.fromId=this.userId,console.log(t);var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_RECIVE_ACK,t);t.conversationType=0;var i=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED,t),r=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED_RECEIPT,t);this.conn&&(this.conn.send(n.pack(!1)),this.conn.send(i.pack(!1)),this.conn.send(r.pack(!1)))},t.prototype.sendP2PMessageReadedReceipt=function(t){console.log("=============== sendP2PMessageReadedRECEIPT"),console.log(t),t.toId=t.fromId,t.fromId=this.userId,console.log(t);var n=e.imClient.buildMessagePack(y.MessageCommand.MSG_READED_RECEIPT,t);this.conn&&(console.log("=============== sendP2PMessageReadedRECEIPT 正式开始发送已读回执"),this.conn.send(n.pack(!1)))},t.prototype.getUserId=function(){return this.userId},t.prototype.loadOfflineMessage=function(){return i(this,void 0,void 0,(function(){var t,n;return r(this,(function(i){switch(i.label){case 0:return a.default.info("loadOfflineMessage start"),[4,new p.default(this.httpUrl).call("/message/syncOfflineMessage",this.getRequestParams(),{clientType:this.clientType,operater:this.userId,appId:this.appId,lastSequence:this.lastOfflineMessageSequence,maxLimit:100})];case 1:return(t=i.sent()).isSucceed()?(this.lastOfflineMessageSequence=t.data.maxSequence,n=t.data.dataList,this.offlineMessageList.push(n),n.length>0&&"function"==typeof e.imClient.listeners.onOfflineMessage&&e.imClient.listeners.onOfflineMessage(n),console.log(t.data.completed),t.data.completed||this.loadOfflineMessage()):a.default.error("loadOfflineMessage - error"),[2]}}))}))},t}();e.ImClient=m,e.limLogin=function(t,e,n){return i(void 0,void 0,void 0,(function(){return r(this,(function(i){return[2,new Promise((function(i,r){var o=new c.w3cwebsocket(t);o.binaryType="arraybuffer",a.default.info("limLogin");var s=setTimeout((function(){clearTimeout(s),i({success:!1,err:new Error("timeout"),conn:o})}),1e4);o.onopen=function(){if(o.readyState==c.w3cwebsocket.OPEN){"function"==typeof n.listeners.onSocketConnectEvent&&n.listeners.onSocketConnectEvent(t,e),a.default.info("开启连接");var i={userId:e.userId},r=n.buildMessagePack(9e3,i);o.send(r.pack(!1))}},o.onerror=function(t){clearTimeout(s),a.default.error(t),i({success:!1,err:t,conn:o})},o.onmessage=function(t){if("string"!=typeof t.data){clearTimeout(s);var e=new u.default(t.data).int32().int32().unpack(),n=e[0];e[1];9001==n&&i({success:!0,conn:o})}else a.default.info("Received: '"+t.data+"'")}}))]}))}))},e.getLen=function(t){for(var e=0,n=0;n=1&&i<=126||65376<=i&&i<=65439?e++:e+=3}return e},e.imClient=new m},function(t,e,n){"use strict";(function(t){e.__esModule=!0;var i=function(){function e(){}return e.getFetchToolkit=function(){var e;if(void 0!==t.fetch&&"function"==typeof t.fetch)e=t.fetch;else if("function"==typeof fetch)e=fetch;else{e=n(9).fetch}return e},e}();e.default=i}).call(this,n(8))},function(t,e,n){"use strict";e.__esModule=!0,e.im=void 0;var i=n(2);e.im=i.imClient,"undefined"!=typeof uni&&(uni.im=i.imClient)},function(t,e,n){"use strict";e.__esModule=!0;var i=function(){function t(t,e){this.Type_Byte=1,this.Type_Short=2,this.Type_UShort=3,this.Type_Int32=4,this.Type_UInt32=5,this.Type_String=6,this.Type_VString=7,this.Type_Int64=8,this.Type_Float=9,this.Type_Double=10,this.Type_ByteArray=11,this._offset=0,this._list=[],this._littleEndian=!1,this._org_buf=t?t.constructor==DataView?t:t.constructor==Uint8Array?new DataView(t.buffer,e):new DataView(t,e):new DataView(new Uint8Array([]).buffer),this.arrayBuf=t,this.offset=e}return t.prototype.bigEndian=function(){return this._littleEndian=!1,this},t.prototype.littleEndianfunction=function(){return this._littleEndian=!0,this},t.prototype.utf8Write=function(t,e,n){for(var i=0,r=0,o=n.length;r>6),t.setUint8(e++,128|63&i)):i<55296||i>=57344?(t.setUint8(e++,224|i>>12),t.setUint8(e++,128|i>>6&63),t.setUint8(e++,128|63&i)):(r++,i=65536+((1023&i)<<10|1023&n.charCodeAt(r)),t.setUint8(e++,240|i>>18),t.setUint8(e++,128|i>>12&63),t.setUint8(e++,128|i>>6&63),t.setUint8(e++,128|63&i))},t.prototype.int32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getInt32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int32,d:t,l:4}),this._offset+=4),this},t.prototype.uint32=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getUint32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_UInt32,d:t,l:4}),this._offset+=4),this},t.prototype.blength=function(){return this._offset},t.prototype.string=function(t,e){if(0==arguments.length){var n=this._org_buf.getInt32(this._offset,this._littleEndian);this._offset+=4,this._list.push(this.utf8Read(this._org_buf,this._offset,n)),this._offset+=n}else{n=0;t&&(n=this.utf8Length(t)),this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_String,d:t,l:n}),this._offset+=n+4}return this},t.prototype.utf8Length=function(t){for(var e=0,n=0,i=0,r=t.length;i=57344?n+=3:(i++,n+=4);return n},t.prototype.utf8Read=function(t,e,n){for(var i="",r=0,o=e,s=e+n;o=65536?(r-=65536,i+=String.fromCharCode(55296+(r>>>10),56320+(1023&r))):i+=String.fromCharCode(r)}else i+=String.fromCharCode((15&a)<<12|(63&t.getUint8(++o))<<6|(63&t.getUint8(++o))<<0);else i+=String.fromCharCode((15&a)<<6|63&t.getUint8(++o));else i+=String.fromCharCode(a)}return i},t.prototype.vstring=function(t,e,n){if(!e)throw new Error("vstring must got len argument");if(null==t||null==t){for(var i=0,r=this._offset;r0&&i++;this._list.push(this.utf8Read(this._org_buf,this._offset,i)),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_VString,d:t,l:e}),this._offset+=e;return this},t.prototype.int64=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Int64,d:t,l:8}),this._offset+=8),this},t.prototype.float=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat32(this._offset,this._littleEndian)),this._offset+=4):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Float,d:t,l:4}),this._offset+=4),this},t.prototype.double=function(t,e){return 0==arguments.length?(this._list.push(this._org_buf.getFloat64(this._offset,this._littleEndian)),this._offset+=8):(this._list.splice(null!=e?e:this._list.length,0,{t:this.Type_Double,d:t,l:8}),this._offset+=8),this},t.prototype.byteArray=function(t,e,n){if(!e)throw new Error("byteArray must got len argument");if(null==t||null==t){var i=new Uint8Array(this._org_buf.buffer.slice(this._offset,this._offset+e));this._list.push(i),this._offset+=e}else this._list.splice(null!=n?n:this._list.length,0,{t:this.Type_ByteArray,d:t,l:e}),this._offset+=e;return this},t.prototype.unpack=function(){return this._list},t.prototype.packWithHead=function(){return this.pack(!0)},t.prototype.pack=function(t){this._org_buf=new DataView(new ArrayBuffer(t?this._offset+4:this._offset));var e=0;t&&(this._org_buf.setUint32(e,this._offset,this._littleEndian),e+=4);for(var n=0;n>2,o=(3&e)<<4|(n=t.charCodeAt(l++))>>4,s=(15&n)<<2|(i=t.charCodeAt(l++))>>6,a=63&i,isNaN(n)?s=a=64:isNaN(i)&&(a=64),u=u+this._keyStr.charAt(r)+this._keyStr.charAt(o)+this._keyStr.charAt(s)+this._keyStr.charAt(a);return u},decode:function(t){var e,n,i,r,o,s,a="",u=0;for(t=t.replace(/[^A-Za-z0-9+/=]/g,"");u>4,n=(15&r)<<4|(o=this._keyStr.indexOf(t.charAt(u++)))>>2,i=(3&o)<<6|(s=this._keyStr.indexOf(t.charAt(u++))),a+=String.fromCharCode(e),64!=o&&(a+=String.fromCharCode(n)),64!=s&&(a+=String.fromCharCode(i));return a=Base64._utf8_decode(a)},_utf8_encode:function(t){t=t.replace(/rn/g,"n");for(var e="",n=0;n127&&i<2048?(e+=String.fromCharCode(i>>6|192),e+=String.fromCharCode(63&i|128)):(e+=String.fromCharCode(i>>12|224),e+=String.fromCharCode(i>>6&63|128),e+=String.fromCharCode(63&i|128))}return e},_utf8_decode:function(t){for(var e="",n=0,i=0,r=0;n191&&i<224)r=t.charCodeAt(n+1),e+=String.fromCharCode((31&i)<<6|63&r),n+=2;else{r=t.charCodeAt(n+1);var o=t.charCodeAt(n+2);e+=String.fromCharCode((15&i)<<12|(63&r)<<6|63&o),n+=3}return e}},WebToolkit=function(){function WebToolkit(){}return WebToolkit.getBrowserInfo=function(){var t=navigator.userAgent.toLowerCase(),e=/edge\/[\d.]+/gi,n=/trident\/[\d.]+/gi,i=/msie\s[\d.]+/gi,r=/firefox\/[\d.]+/gi,o=/chrome\/[\d.]+/gi,s=/safari\/[\d.]+/gi,a=/opr\/[\d.]+/gi,u={code:0,system:t.split(" ")[1].split(" ")[0].split("(")[1],browser:"",browserVersion:""};return t.indexOf("trident")>0?(u.browser=t.match(n)[0].split("/")[0],u.browserVersion=t.match(n)[0].split("/")[1],u):t.indexOf("msie")>0?(u.browser=t.match(i)[0].split(" ")[0],u.browserVersion=t.match(i)[0].split(" ")[1],u):t.indexOf("edge")>0?(u.browser=t.match(e)[0].split("/")[0],u.browserVersion=t.match(e)[0].split("/")[1],u):t.indexOf("firefox")>0?(u.browser=t.match(r)[0].split("/")[0],u.browserVersion=t.match(r)[0].split("/")[1],u):t.indexOf("opr")>0?(u.browser=t.match(a)[0].split("/")[0],u.browserVersion=t.match(a)[0].split("/")[1],u):t.indexOf("safari")>0&&t.indexOf("chrome")<0?(u.browser=t.match(s)[0].split("/")[0],u.browserVersion=t.match(s)[0].split("/")[1],u):t.indexOf("chrome")>0?(u.browser=t.match(o)[0].split("/")[0],u.browserVersion=t.match(o)[0].split("/")[1],u):(u.code=-1,u)},WebToolkit.getWxappInfo=function(){return{system:"WXAPP",browser:"WXAPP",browserVersion:"1.0"}},WebToolkit.getReactNativeInfo=function(){return{system:"RNNative",browser:"RNNative",browserVersion:"1.0"}},WebToolkit.getUniAppInfo=function(){return{system:"UNIAPP",browser:"UNIAPP",browserVersion:"1.0"}},WebToolkit.loadJS=function(t,e){var n=document.createElement("script"),i=e||function(){};n.type="text/javascript";var r=!1;for(var o in document.getElementsByTagName("head")[0].children){var s=document.getElementsByTagName("head")[0].children[o];void 0!==s.outerHTML&&s.outerHTML.indexOf(t)>=0&&(r=!0)}r?i():(n.readyState?n.onreadystatechange=function(){"loaded"!=n.readyState&&"complete"!=n.readyState||(n.onreadystatechange=null,i())}:n.onload=function(){i()},n.src=t,document.getElementsByTagName("head")[0].appendChild(n))},WebToolkit.getIpInfoByFetch=function(callback){var url="http://pv.sohu.com/cityjson?ie=utf-8",fetch=Fetch_1.default.getFetchToolkit(),request={method:"GET",mode:"cors",headers:{"Content-Type":"application/json"}};return fetch(url,request).then((function(t){return t.text()})).then((function(res){if("function"==typeof callback){var currentCity=eval("_current_city="+res.replace("var returnCitySN = ",""));callback(currentCity)}})).catch((function(t){Logger_1.default.trace(t)}))},WebToolkit.getIpInfoByInsertScript=function(t){WebToolkit.loadJS("http://pv.sohu.com/cityjson?ie=utf-8",(function(){t(window.returnCitySN)}))},WebToolkit.getIpInfo=function(t){WebToolkit.getIpInfoByFetch(t)},WebToolkit.getDeviceInfo=function(){return WebToolkit.getUniAppInfo()},WebToolkit.base64Encode=function(t){return Base64.encode(t)},WebToolkit.base64Decode=function(t){return Base64.decode(t)},WebToolkit}();exports.default=WebToolkit},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";n.r(e),n.d(e,"Headers",(function(){return p})),n.d(e,"Request",(function(){return v})),n.d(e,"Response",(function(){return C})),n.d(e,"DOMException",(function(){return w})),n.d(e,"fetch",(function(){return R}));var i="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==i&&i,r="URLSearchParams"in i,o="Symbol"in i&&"iterator"in Symbol,s="FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch(t){return!1}}(),a="FormData"in i,u="ArrayBuffer"in i;if(u)var l=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],f=ArrayBuffer.isView||function(t){return t&&l.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t}function h(t){return"string"!=typeof t&&(t=String(t)),t}function d(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return o&&(e[Symbol.iterator]=function(){return e}),e}function p(t){this.map={},t instanceof p?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function _(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function y(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function g(t){var e=new FileReader,n=y(e);return e.readAsArrayBuffer(t),n}function b(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:s&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:a&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():u&&s&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=b(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):u&&(ArrayBuffer.prototype.isPrototypeOf(t)||f(t))?this._bodyArrayBuffer=b(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("Content-Type")||("string"==typeof t?this.headers.set("Content-Type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("Content-Type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"))},s&&(this.blob=function(){var t=_(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){if(this._bodyArrayBuffer){var t=_(this);return t||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer))}return this.blob().then(g)}),this.text=function(){var t,e,n,i=_(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,n=y(e),e.readAsText(t),n;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),i=0;i-1?i:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(r),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==e.cache&&"no-cache"!==e.cache)){var o=/([?&])_=[^&]*/;if(o.test(this.url))this.url=this.url.replace(o,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function S(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var n=t.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(i),decodeURIComponent(r))}})),e}function T(t){var e=new p;for(var n in t)e.append(n,t[n]);return e}function C(t,e){if(!(this instanceof C))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new p(e.headers),this.url=e.url||"",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},m.call(v.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},C.error=function(){var t=new C(null,{status:0,statusText:""});return t.type="error",t};var I=[301,302,303,307,308];C.redirect=function(t,e){if(-1===I.indexOf(e))throw new RangeError("Invalid status code");return new C(null,{status:e,headers:{location:t}})};var w=i.DOMException;try{new w}catch(t){(w=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack}).prototype=Object.create(Error.prototype),w.prototype.constructor=w}function R(t,e){return new Promise((function(n,r){var o=new v(t,e);if(o.signal&&o.signal.aborted)return r(new w("Aborted","AbortError"));function s(t){try{if("object"==typeof t)return JSON.stringify(t);if("string"==typeof t)return t}catch(t){}return t.toString()}let a=void 0===o._bodyInit?null:o._bodyInit;o.headers.hasOwnProperty("Content-Type")&&o.headers["Content-Type"].indexOf("application/json")>=0&&"POST"===o.method.toUpperCase()&&(a=JSON.parse(a));const u=uni.request({url:function(t){try{return""===t&&i.location.href?i.location.href:t}catch(e){return t}}(o.url),method:o.method,data:a,header:o.headers.map,complete:t=>{if(o.signal&&o.signal.removeEventListener("abort",l),t.errMsg.indexOf("fail")>=0)setTimeout((function(){r(new TypeError("Network request failed"))}),0);else{var e={status:t.statusCode,statusText:t.data?s(t.data):"",headers:T(t.header||{})};e.url=e.headers.get("X-Request-URL");var i=e.statusText;setTimeout((function(){n(new C(i,e))}),0)}}});function l(){u.abort()}o.signal&&o.signal.addEventListener("abort",l)}))}R.polyfill=!0,i.fetch||(i.fetch=R,i.Headers=p,i.Request=v,i.Response=C)},function(t,e,n){var i;if("object"==typeof globalThis)i=globalThis;else try{i=n(11)}catch(t){}finally{if(i||"undefined"==typeof window||(i=window),!i)throw new Error("Could not determine global this")}var r=i.WebSocket||i.MozWebSocket,o=n(12);function s(t,e){return e?new r(t,e):new r(t)}r&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(t){Object.defineProperty(s,t,{get:function(){return r[t]}})})),t.exports={w3cwebsocket:r?s:null,version:o}},function(t,e){var n=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};t.exports=function(){if(this)return this;if("object"==typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(t){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},function(t,e,n){t.exports=n(13).version},function(t){t.exports=JSON.parse('{"name":"websocket","description":"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.","keywords":["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],"author":"Brian McKelvey (https://github.com/theturtle32)","contributors":["Iñaki Baz Castillo (http://dev.sipdoc.net)"],"version":"1.0.34","repository":{"type":"git","url":"https://github.com/theturtle32/WebSocket-Node.git"},"homepage":"https://github.com/theturtle32/WebSocket-Node","engines":{"node":">=4.0.0"},"dependencies":{"bufferutil":"^4.0.1","debug":"^2.2.0","es5-ext":"^0.10.50","typedarray-to-buffer":"^3.1.5","utf-8-validate":"^5.0.2","yaeti":"^0.0.6"},"devDependencies":{"buffer-equal":"^1.0.0","gulp":"^4.0.2","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1","jshint":"^2.0.0","tape":"^4.9.1"},"config":{"verbose":false},"scripts":{"test":"tape test/unit/*.js","gulp":"gulp"},"main":"index","directories":{"lib":"./lib"},"browser":"lib/browser.js","license":"Apache-2.0"}')},function(t,e,n){"use strict";e.__esModule=!0,e.RequestBase=void 0;var i=function(t,e,n){this.appId=t,this.clientType=e,this.imei=n};e.RequestBase=i},function(t,e,n){"use strict";e.__esModule=!0,e.RequestParams=void 0;var i=function(t,e,n){this.appId=t,this.identifier=e,this.userSign=n};e.RequestParams=i},function(t,e,n){"use strict";e.__esModule=!0;var i=n(0),r=n(2),o=n(17),s=n(1),a=n(3),u=function(){function t(t){this.url="",this.url=t}return t.prototype.call=function(t,e,n){var o=r.imClient.userId;i.default.info(o);var a=this.url+t;null!=e&&(a+=this.setQueryConfig(e));n=this.setQueryToBody(e,n);var u={method:"POST",headers:{"Content-Type":"application/json"},mode:"cors",body:s.default.json(n)};return this.httpFetch(a,u)},t.prototype.setQueryToBody=function(t,e){for(var n in t)e[n]=t[n];return e},t.prototype.setQueryConfig=function(t){var e="?";for(var n in t)e+=n+"="+t[n]+"&";return e=e.substring(0,e.length-1)},t.prototype.httpFetch=function(t,e){var n=this;return console.log("httpFetch"),a.default.getFetchToolkit()(t,e).then((function(t){return t.json()})).then((function(r){i.default.info("==> ["+e.method+"] "+t+" back:"+s.default.json(r));var o=n.response2ApiResponse(r);return o.isFailed()?Promise.reject(o):Promise.resolve(o)}))},t.prototype.response2ApiResponse=function(t){var e=new o.default(!0);return e.data=t.data,e.msg=t.msg,e.code=t.code,e},t}();e.default=u},function(t,e,n){"use strict";e.__esModule=!0;var i=function(){function t(t){void 0===t&&(t=!1),this.msg="",this.data=null,t&&(this.code=200)}return t.prototype.isSucceed=function(){return 200===this.code},t.prototype.isFailed=function(){return!this.isSucceed()},t}();e.default=i},function(t,e,n){"use strict";var i,r,o,s,a,u;e.__esModule=!0,e.ConversationEventCommand=e.UserEventCommand=e.SystemCommand=e.GroupCommand=e.FriendShipCommand=e.MessageCommand=void 0,function(t){t[t.MSG_P2P=1103]="MSG_P2P",t[t.MSG_P2P_SYNC=1108]="MSG_P2P_SYNC",t[t.MSG_READED=1106]="MSG_READED",t[t.MSG_RECIVE_ACK=1107]="MSG_RECIVE_ACK",t[t.MSG_ACK=1046]="MSG_ACK",t[t.MSG_RECALL=1050]="MSG_RECALL",t[t.MSG_RECALL_NOTIFY=1052]="MSG_RECALL_NOTIFY",t[t.MSG_RECALL_ACK=1051]="MSG_RECALL_ACK",t[t.MSG_READED_NOTIFY=1053]="MSG_READED_NOTIFY",t[t.MSG_READED_RECEIPT=1054]="MSG_READED_RECEIPT"}(i||(i={})),e.MessageCommand=i,function(t){t[t.FRIEND_ADD=3e3]="FRIEND_ADD",t[t.FRIEND_UPDATE=3001]="FRIEND_UPDATE",t[t.FRIEND_DELETE=3002]="FRIEND_DELETE",t[t.FRIEND_REQUEST=3003]="FRIEND_REQUEST",t[t.FRIEND_REQUEST_READ=3004]="FRIEND_REQUEST_READ",t[t.FRIEND_REQUEST_APPROVER=3005]="FRIEND_REQUEST_APPROVER",t[t.FRIEND_BLACK_ADD=3010]="FRIEND_BLACK_ADD",t[t.FRIEND_BLACK_DELETE=3011]="FRIEND_BLACK_DELETE",t[t.FRIEND_GROUP_ADD=3012]="FRIEND_GROUP_ADD",t[t.FRIEND_GROUP_DELETE=3013]="FRIEND_GROUP_DELETE",t[t.FRIEND_GROUP_MEMBER_ADD=3014]="FRIEND_GROUP_MEMBER_ADD",t[t.FRIEND_GROUP_MEMBER_DELETE=3015]="FRIEND_GROUP_MEMBER_DELETE"}(r||(r={})),e.FriendShipCommand=r,function(t){t[t.JOIN_GROUP=2e3]="JOIN_GROUP",t[t.ADDED_MEMBER=2001]="ADDED_MEMBER",t[t.CREATED_GROUP=2002]="CREATED_GROUP",t[t.UPDATED_GROUP=2003]="UPDATED_GROUP",t[t.EXIT_GROUP=2004]="EXIT_GROUP",t[t.UPDATED_MEMBER=2005]="UPDATED_MEMBER",t[t.DELETED_MEMBER=2006]="DELETED_MEMBER",t[t.DESTROY_GROUP=2007]="DESTROY_GROUP",t[t.TRANSFER_GROUP=2008]="TRANSFER_GROUP",t[t.MUTE_GROUP=2009]="MUTE_GROUP",t[t.SPEAK_GOUP_MEMBER=2010]="SPEAK_GOUP_MEMBER",t[t.MSG_GROUP=2104]="MSG_GROUP",t[t.MSG_GROUP_SYNC=2105]="MSG_GROUP_SYNC",t[t.GROUP_MSG_ACK=2047]="GROUP_MSG_ACK"}(o||(o={})),e.GroupCommand=o,function(t){t[t.PING=9999]="PING",t[t.LOGIN=9e3]="LOGIN",t[t.LOGINACK=9001]="LOGINACK",t[t.MUTUALLOGIN=9002]="MUTUALLOGIN",t[t.LOGOUT=9003]="LOGOUT"}(s||(s={})),e.SystemCommand=s,function(t){t[t.USER_MODIFY=4e3]="USER_MODIFY",t[t.USER_ONLINE_STATUS_CHANGE=4001]="USER_ONLINE_STATUS_CHANGE",t[t.USER_ONLINE_STATUS_SUBSCRIBE=4002]="USER_ONLINE_STATUS_SUBSCRIBE",t[t.PULL_USER_ONLINE_STATUS=4003]="PULL_USER_ONLINE_STATUS",t[t.USER_ONLINE_STATUS_CHANGE_NOTIFY=4004]="USER_ONLINE_STATUS_CHANGE_NOTIFY"}(a||(a={})),e.UserEventCommand=a,function(t){t[t.CONVERSATION_DELETE=5e3]="CONVERSATION_DELETE",t[t.CONVERSATION_UPDATE=5001]="CONVERSATION_UPDATE"}(u||(u={})),e.ConversationEventCommand=u},function(t,e,n){"use strict";e.__esModule=!0,e.MessagePack=void 0;var i=n(1),r=function(){function t(t){this.messageId=i.default.uuid(),this.appId=t,this.messageRandom=this.RangeInteger(0,1e4),this.messageTime=Date.parse((new Date).toString())}return t.prototype.RangeInteger=function(t,e){var n=e-t;return Math.floor(Math.random()*n)+t},t.prototype.buildTextMessagePack=function(t,e,n){this.fromId=t,this.toId=e;var r={type:1,content:n};this.messageBody=i.default.json(r)},t.prototype.buildCustomerMessagePack=function(t,e,n,r){this.fromId=t,this.toId=e;var o={type:n,content:r};this.messageBody=i.default.json(o)},t}();e.MessagePack=r}])})); //# sourceMappingURL=lim-sdk.js.map \ No newline at end of file diff --git a/im-uniapp/common/imSdk/lim-sdk.js.map b/im-uniapp/common/imSdk/lim-sdk.js.map index 8d7f26a..1374f79 100644 --- a/im-uniapp/common/imSdk/lim-sdk.js.map +++ b/im-uniapp/common/imSdk/lim-sdk.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://imsdk/webpack/universalModuleDefinition","webpack://imsdk/webpack/bootstrap","webpack://imsdk/./src/lim/log/Logger.ts","webpack://imsdk/./src/lim/common/utils.ts","webpack://imsdk/./src/lim/core/ImClient.ts","webpack://imsdk/./src/lim/common/Fetch.ts","webpack://imsdk/./src/lim.ts","webpack://imsdk/./src/lim/codec/ByteBuffer.ts","webpack://imsdk/./src/lim/pack/LoginPack.ts","webpack://imsdk/./src/lim/common/WebToolkit.ts","webpack://imsdk/(webpack)/buildin/global.js","webpack://imsdk/./src/lim/uniapp/http/uni-fetch.js","webpack://imsdk/./node_modules/websocket/lib/browser.js","webpack://imsdk/./node_modules/es5-ext/global.js","webpack://imsdk/./node_modules/websocket/lib/version.js","webpack://imsdk/./src/lim/model/RequestBase.ts","webpack://imsdk/./src/lim/model/RequestParams.ts","webpack://imsdk/./src/lim/core/HttpApi.ts","webpack://imsdk/./src/lim/model/ApiResponse.ts","webpack://imsdk/./src/lim/common/Command.ts","webpack://imsdk/./src/lim/pack/MessagePack.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__spreadArrays","this","il","arguments","length","Array","k","a","j","jl","Logger","info","message","optionalParams","_i","debug","console","apply","Date","toISOString","infoTag","tag","error","errorTag","trace","e","Error","undefined","stack","Beans","to","target","JSON","parse","stringify","bean","json","copy","replace","replaceJSON","v","toMapByKey","arrs","result","forEach","strEmpty","strNotEmpty","isEmpty","str","uuid","Math","random","toString","slice","getTime","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","op","TypeError","pop","push","imClient","getLen","limLogin","ImClient","sleep","State","TimeUnit","Logger_1","ByteBuffer_1","LoginPack_1","WebToolkit_1","websocket_1","RequestBase_1","RequestParams_1","HttpApi_1","utils_1","Command_1","MessagePack_1","firstMonitorSocket","second","Unit","Second","_a","setTimeout","url","version","clientType","listeners","state","INIT","lastOfflineMessageSequence","offlineMessageList","httpUrl","getRequestBase","RequestBase","appId","imei","isInit","CONNECTED","getRequestParams","RequestParams","userId","userSign","init","callback","self","resp","ip","port","req","success","err","conn","_this","_b","getDeviceInfo","system","imeiLength","isFailed","data","LoginPack","onerror","onSocketErrorEvent","errorHandler","onclose","CLOSEING","onSocketCloseEvent","reason","onmessage","evt","bytebuf","byteBuffer","int32","unpack","command","bodyLen","msgBody","vstring","log","MessageCommand","MSG_P2P","onP2PMessage","onTestMessage","loadOfflineMessage","heartbeatLoop","onLogin","buildMessagePack","messagePack","jsonData","pack","index","error_1","CLOSED","RECONNECTING","onSocketReConnectEvent","onSocketReConnectSuccessEvent","getSingleUserInfo","uid","syncGetUserInfo","api","userIds","getUserInfo","getAllFriend","fromId","getUserSequence","getUserConversationList","lastSequence","maxLimit","operater","start","now","loop","pingPack","SystemCommand","PING","send","createP2PTextMessage","text","MessagePack","buildTextMessagePack","sendP2PMessage","p2pPack","getUserId","offmessages","isSucceed","maxSequence","dataList","onOfflineMessage","completed","w3cwebsocket","binaryType","tr","clearTimeout","onopen","readyState","OPEN","onSocketConnectEvent","loginPack","len","charCodeAt","Fetch","getFetchToolkit","httpFetch","global","fetch","im","ImClient_1","uni","ByteBuffer","arrayBuf","offset","Type_Byte","Type_Short","Type_UShort","Type_Int32","Type_UInt32","Type_String","Type_VString","Type_Int64","Type_Float","Type_Double","Type_ByteArray","_offset","_list","_littleEndian","_org_buf","constructor","DataView","Uint8Array","buffer","bigEndian","littleEndianfunction","utf8Write","view","setUint8","val","getInt32","splice","uint32","getUint32","blength","string","utf8Read","utf8Length","chr","end","byte","getUint8","String","fromCharCode","vlen","int64","getFloat64","float","getFloat32","double","byteArray","arr","packWithHead","ifHead","ArrayBuffer","setUint32","setInt8","setInt16","setUint16","setInt32","setFloat64","setFloat32","indx","getAvailable","byteLength","Fetch_1","Base64","_keyStr","encode","u","_utf8_encode","isNaN","charAt","decode","indexOf","_utf8_decode","c2","c3","WebToolkit","getBrowserInfo","agent","navigator","userAgent","toLowerCase","REGSTR_EDGE","REGSTR_IE","OLD_IE","REGSTR_FF","REGSTR_CHROME","REGSTR_SAF","REGSTR_OPERA","code","split","browser","browserVersion","match","getWxappInfo","getReactNativeInfo","getUniAppInfo","loadJS","script","document","createElement","fn","type","exist","getElementsByTagName","children","dom","outerHTML","onreadystatechange","onload","src","appendChild","getIpInfoByFetch","request","method","headers","response","res","currentCity","eval","getIpInfoByInsertScript","getIpInfo","base64Encode","base64Decode","Function","globalThis","support","Blob","viewClasses","isArrayBufferView","isView","obj","normalizeName","test","normalizeValue","iteratorFor","items","shift","Headers","map","append","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","arrayBuffer","isConsumed","byteOffset","readAsText","chars","join","readArrayBufferAsText","formData","oldValue","has","keys","values","entries","methods","Request","input","options","upcased","credentials","signal","toUpperCase","referrer","cache","reParamSearch","form","trim","bytes","decodeURIComponent","parseUniappHeaders","rawHeaders","Response","bodyInit","status","ok","statusText","clone","redirectStatuses","redirect","RangeError","location","DOMException","aborted","toStr","rawBody","requestTask","href","fixUrl","complete","removeEventListener","abortXhr","errMsg","statusCode","abort","addEventListener","polyfill","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","uri","protocols","prop","naiveFallback","configurable","__global__","identifier","ApiResponse_1","HttpApi","params","reqUrl","paramStr","setQueryConfig","setQueryToBody","_str","substring","rnfetch1","response2ApiResponse","apiResponse","msg","ApiResponse","succeed","FriendShipCommand","GroupCommand","UserEventCommand","ConversationEventCommand","messageId","messageRandom","RangeInteger","messageTime","min","max","range","floor","toId","content","messageBody","buildCustomerMessagePack"],"mappings":"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","file":"lim-sdk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"imsdk\"] = factory();\n\telse\n\t\troot[\"imsdk\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nexports.__esModule = true;\r\nvar Logger = /** @class */ (function () {\r\n function Logger() {\r\n }\r\n Logger.info = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.infoTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.error = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.errorTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.trace = function (e) {\r\n if (Logger.debug) {\r\n if (e instanceof Error) {\r\n console.error(e.message + \" \\n \" + (e.stack !== undefined ? e.stack : ''));\r\n }\r\n else {\r\n console.error(e);\r\n }\r\n }\r\n };\r\n Logger.debug = true;\r\n return Logger;\r\n}());\r\nexports[\"default\"] = Logger;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Beans = /** @class */ (function () {\r\n function Beans() {\r\n }\r\n Beans.to = function (target) {\r\n return JSON.parse(JSON.stringify(target));\r\n };\r\n Beans.bean = function (json) {\r\n return JSON.parse(json);\r\n };\r\n Beans.copy = function (target) {\r\n return Beans.to(target);\r\n };\r\n Beans.replace = function (target, replaceJSON) {\r\n var r = Beans.to(target);\r\n for (var v in replaceJSON) {\r\n r[v] = replaceJSON[v];\r\n }\r\n return r;\r\n };\r\n Beans.toMapByKey = function (arrs, key) {\r\n var result = {};\r\n arrs.forEach(function (v) {\r\n if (v.hasOwnProperty(key)) {\r\n result[key] = v;\r\n }\r\n });\r\n return result;\r\n };\r\n Beans.json = function (target) {\r\n return JSON.stringify(target);\r\n };\r\n Beans.strEmpty = function (s) {\r\n return !!s;\r\n };\r\n Beans.strNotEmpty = function (s) {\r\n return !s;\r\n };\r\n Beans.isEmpty = function (str) {\r\n if (str === null ||\r\n str === '' ||\r\n str === undefined ||\r\n str.length === 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n Beans.uuid = function () {\r\n return (Math.random() * 36).toString(36).slice(2) + new Date().getTime().toString();\r\n };\r\n return Beans;\r\n}());\r\nexports[\"default\"] = Beans;\r\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nexports.imClient = exports.getLen = exports.limLogin = exports.ImClient = exports.sleep = exports.State = void 0;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ByteBuffer_1 = require(\"../codec/ByteBuffer\");\r\nvar LoginPack_1 = require(\"../pack/LoginPack\");\r\nvar WebToolkit_1 = require(\"../common/WebToolkit\");\r\nvar websocket_1 = require(\"websocket\");\r\nvar RequestBase_1 = require(\"../model/RequestBase\");\r\nvar RequestParams_1 = require(\"../model/RequestParams\");\r\nvar HttpApi_1 = require(\"./HttpApi\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Command_1 = require(\"../common/Command\");\r\nvar MessagePack_1 = require(\"../pack/MessagePack\");\r\nvar loginTimeout = 10 * 1000; // 10 seconds\r\nvar heartbeatInterval = 10 * 1000; // seconds\r\nvar firstMonitorSocket = false; // 第一次监听socket\r\nvar State;\r\n(function (State) {\r\n State[State[\"INIT\"] = 0] = \"INIT\";\r\n State[State[\"CONNECTING\"] = 1] = \"CONNECTING\";\r\n State[State[\"CONNECTED\"] = 2] = \"CONNECTED\";\r\n State[State[\"RECONNECTING\"] = 3] = \"RECONNECTING\";\r\n State[State[\"CLOSEING\"] = 4] = \"CLOSEING\";\r\n State[State[\"CLOSED\"] = 5] = \"CLOSED\";\r\n})(State = exports.State || (exports.State = {}));\r\nvar TimeUnit;\r\n(function (TimeUnit) {\r\n TimeUnit[TimeUnit[\"Second\"] = 1000] = \"Second\";\r\n TimeUnit[TimeUnit[\"Millisecond\"] = 1] = \"Millisecond\";\r\n})(TimeUnit || (TimeUnit = {}));\r\nexports.sleep = function (second, Unit) {\r\n if (Unit === void 0) { Unit = TimeUnit.Second; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n setTimeout(function () {\r\n resolve();\r\n }, second * Unit);\r\n })];\r\n });\r\n });\r\n};\r\nvar ImClient = /** @class */ (function () {\r\n function ImClient() {\r\n this.url = \"\";\r\n this.version = 1;\r\n this.clientType = 1;\r\n this.listeners = null;\r\n this.state = State.INIT;\r\n this.lastOfflineMessageSequence = 0;\r\n this.offlineMessageList = new Array();\r\n this.httpUrl = \"\"; //http://127.0.0.1:8000/v1\r\n }\r\n ImClient.prototype.getRequestBase = function () {\r\n return new RequestBase_1.RequestBase(this.appId, this.clientType, this.imei);\r\n };\r\n ImClient.prototype.isInit = function () {\r\n return this.state == State.CONNECTED;\r\n };\r\n ImClient.prototype.getRequestParams = function () {\r\n return new RequestParams_1.RequestParams(this.appId, this.userId, this.userSign);\r\n };\r\n ImClient.prototype.init = function (httpUrl, appId, userId, userSign, listeners, callback) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self, api, resp, ip, port, req, _a, success, err, conn;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n self = this;\r\n self.httpUrl = httpUrl;\r\n self.appId = appId;\r\n self.listeners = listeners;\r\n self.imei = WebToolkit_1[\"default\"].getDeviceInfo().system;\r\n self.imeiLength = exports.getLen(self.imei);\r\n self.userId = userId;\r\n this.userSign = userSign;\r\n this.imeiLength = self.imeiLength;\r\n if (!utils_1[\"default\"].isEmpty(this.url)) return [3 /*break*/, 2];\r\n Logger_1[\"default\"].info(\"获取im地址\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/user/login\", {}, { clientType: this.clientType, appId: this.appId, userId: this.userId })\r\n // console.log(resp)\r\n ];\r\n case 1:\r\n resp = _b.sent();\r\n // console.log(resp)\r\n if (resp.isFailed()) {\r\n Logger_1[\"default\"].info(\"登录失败:获取im地址失败\");\r\n return [2 /*return*/];\r\n }\r\n ip = resp.data.ip;\r\n port = resp.data.port;\r\n this.url = \"ws://\" + ip + \":\" + port + \"/ws\";\r\n _b.label = 2;\r\n case 2:\r\n req = new LoginPack_1.LoginPack(self.appId, self.userId, 1);\r\n return [4 /*yield*/, exports.limLogin(self.url, req, self)];\r\n case 3:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (!firstMonitorSocket) {\r\n firstMonitorSocket = true;\r\n }\r\n //登录成功以后操作\r\n conn.onerror = function (error) {\r\n Logger_1[\"default\"].info(\"websocket error: \", error);\r\n // 加入socket 连接事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketErrorEvent(error);\r\n }\r\n //异步方法,自动重连\r\n _this.errorHandler(error, req);\r\n };\r\n conn.onclose = function (e) {\r\n Logger_1[\"default\"].info(\"event[onclose] fired\");\r\n if (self.state == State.CLOSEING) {\r\n _this.onclose(\"logout\");\r\n return;\r\n }\r\n // socket断开事件 连接事件\r\n if (typeof exports.imClient.listeners.onSocketCloseEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n // 异步方法 自动重连\r\n _this.errorHandler(new Error(e.reason), req);\r\n };\r\n conn.onmessage = function (evt) {\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0]; //解析command\r\n var bodyLen = byteBuffer[1]; //解析bodylen\r\n var unpack = bytebuf.vstring(null, bodyLen).unpack(); //解析出字符串\r\n var msgBody = unpack[2];\r\n console.log(\"sdk收到服务端数据 command:\" + command);\r\n console.log(\"sdk收到服务端数据:\" + msgBody);\r\n if (command === Command_1.MessageCommand.MSG_P2P) {\r\n //单聊消息收发\r\n if (typeof exports.imClient.listeners.onP2PMessage === 'function') {\r\n exports.imClient.listeners.onP2PMessage(msgBody);\r\n }\r\n }\r\n else {\r\n if (typeof exports.imClient.listeners.onTestMessage === 'function') {\r\n exports.imClient.listeners.onTestMessage(msgBody);\r\n }\r\n }\r\n };\r\n this.conn = conn;\r\n this.state = State.CONNECTED;\r\n //拉取离线消息\r\n this.loadOfflineMessage();\r\n //心跳包\r\n this.heartbeatLoop(this.conn);\r\n if (typeof exports.imClient.listeners.onLogin === 'function') {\r\n exports.imClient.listeners.onLogin(this.userId);\r\n }\r\n callback(self);\r\n }\r\n else {\r\n Logger_1[\"default\"].error(err === null || err === void 0 ? void 0 : err.message);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ImClient.prototype.buildMessagePack = function (command, messagePack) {\r\n var jsonData = JSON.stringify(messagePack);\r\n var bodyLen = exports.getLen(jsonData);\r\n var pack = new ByteBuffer_1[\"default\"](null, 0);\r\n pack.int32(command).int32(this.version).int32(this.clientType)\r\n .int32(0x0)\r\n .int32(this.appId)\r\n .int32(this.imeiLength)\r\n .int32(bodyLen)\r\n .vstring(this.imei, this.imeiLength)\r\n .vstring(jsonData, bodyLen);\r\n return pack;\r\n };\r\n // 4. 自动重连\r\n ImClient.prototype.errorHandler = function (error, req) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var index, _a, success, err, conn, error_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n // 如果是主动断开连接,就没有必要自动重连\r\n // 比如收到被踢,或者主动调用logout()方法\r\n if (this.state == State.CLOSED || this.state == State.CLOSEING) {\r\n return [2 /*return*/];\r\n }\r\n this.state = State.RECONNECTING;\r\n if (typeof exports.imClient.listeners.onSocketReConnectEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectEvent();\r\n }\r\n index = 0;\r\n _b.label = 1;\r\n case 1:\r\n if (!(index < 10)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, exports.sleep(3)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n Logger_1[\"default\"].info(\"try to relogin\");\r\n return [4 /*yield*/, exports.limLogin(this.url, req, this)];\r\n case 4:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (typeof exports.imClient.listeners.onSocketReConnectSuccessEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectSuccessEvent();\r\n }\r\n return [2 /*return*/];\r\n }\r\n Logger_1[\"default\"].info(err);\r\n return [3 /*break*/, 6];\r\n case 5:\r\n error_1 = _b.sent();\r\n Logger_1[\"default\"].info(error_1);\r\n return [3 /*break*/, 6];\r\n case 6:\r\n index++;\r\n return [3 /*break*/, 1];\r\n case 7:\r\n this.onclose(\"reconnect timeout\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // 表示连接中止\r\n ImClient.prototype.onclose = function (reason) {\r\n if (this.state == State.CLOSED) {\r\n return;\r\n }\r\n this.state = State.CLOSED;\r\n Logger_1[\"default\"].info(\"connection closed due to \" + reason);\r\n this.conn = undefined;\r\n this.userId = \"\";\r\n // 加入socket 关闭事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n };\r\n ImClient.prototype.getSingleUserInfo = function (uid) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getSingleUserInfo\", _this.getRequestParams(), { userId: uid });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.syncGetUserInfo = function (userId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp;\r\n return __generator(this, function (_a) {\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n resp = api.call(\"/user/data/getUserInfo\", this.getRequestParams(), { userIds: userId });\r\n return [2 /*return*/, resp];\r\n });\r\n });\r\n };\r\n ImClient.prototype.getUserInfo = function (userId) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getUserInfo\", _this.getRequestParams(), { userIds: userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getAllFriend = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/friendship/getAllFriendShip\", _this.getRequestParams(), { fromId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserSequence = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/getUserSequence\", _this.getRequestParams(), { userId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserConversationList = function (lastSequence) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/conversation/syncConversationList\", _this.getRequestParams(), { userId: _this.userId, appId: _this.appId, maxLimit: 100, lastSequence: lastSequence, operater: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n // 2、心跳\r\n ImClient.prototype.heartbeatLoop = function (conn) {\r\n var _this = this;\r\n var start = Date.now();\r\n var loop = function () {\r\n if (_this.state != State.CONNECTED) {\r\n Logger_1[\"default\"].error(\"heartbeatLoop exited\");\r\n return;\r\n }\r\n if (Date.now() - start >= heartbeatInterval) {\r\n // log.info(`>>> send ping ;`)\r\n start = Date.now();\r\n var pingPack = exports.imClient.buildMessagePack(Command_1.SystemCommand.PING, {});\r\n conn.send(pingPack.pack(false));\r\n }\r\n setTimeout(loop, 500);\r\n };\r\n setTimeout(loop, 500);\r\n };\r\n //构建单聊消息对象\r\n ImClient.prototype.createP2PTextMessage = function (to, text) {\r\n var messagePack = new MessagePack_1.MessagePack(this.appId);\r\n messagePack.buildTextMessagePack(this.userId, to, text);\r\n return messagePack;\r\n };\r\n ImClient.prototype.sendP2PMessage = function (pack) {\r\n var p2pPack = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_P2P, pack);\r\n if (this.conn) {\r\n this.conn.send(p2pPack.pack(false));\r\n }\r\n };\r\n ImClient.prototype.getUserId = function () {\r\n return this.userId;\r\n };\r\n //拉取离线信息记录 \r\n ImClient.prototype.loadOfflineMessage = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp, offmessages;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Logger_1[\"default\"].info(\"loadOfflineMessage start\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/message/syncOfflineMessage\", this.getRequestParams(), { clientType: this.clientType, operater: this.userId, appId: this.appId, lastSequence: this.lastOfflineMessageSequence, maxLimit: 100 })];\r\n case 1:\r\n resp = _a.sent();\r\n if (resp.isSucceed()) {\r\n this.lastOfflineMessageSequence = resp.data.maxSequence;\r\n offmessages = resp.data.dataList;\r\n this.offlineMessageList.push(offmessages);\r\n if (offmessages.length > 0 && typeof exports.imClient.listeners.onOfflineMessage === 'function') {\r\n exports.imClient.listeners.onOfflineMessage(offmessages);\r\n }\r\n console.log(resp.data.completed);\r\n if (!resp.data.completed) {\r\n this.loadOfflineMessage();\r\n }\r\n }\r\n else {\r\n Logger_1[\"default\"].error(\"loadOfflineMessage - error\");\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return ImClient;\r\n}());\r\nexports.ImClient = ImClient;\r\nexports.limLogin = function (url, req, imClient) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n var conn = new websocket_1.w3cwebsocket(url);\r\n conn.binaryType = \"arraybuffer\";\r\n Logger_1[\"default\"].info(\"limLogin\");\r\n // 设置一个登陆超时器\r\n var tr = setTimeout(function () {\r\n clearTimeout(tr);\r\n resolve({ success: false, err: new Error(\"timeout\"), conn: conn });\r\n }, loginTimeout);\r\n conn.onopen = function () {\r\n if (conn.readyState == websocket_1.w3cwebsocket.OPEN) {\r\n // 加入socket 连接事件\r\n if (typeof imClient.listeners.onSocketConnectEvent === 'function') {\r\n imClient.listeners.onSocketConnectEvent(url, req);\r\n }\r\n Logger_1[\"default\"].info(\"\\u5F00\\u542F\\u8FDE\\u63A5\");\r\n //登录数据包\r\n var data = {\r\n \"userId\": req.userId\r\n };\r\n var loginPack = imClient.buildMessagePack(0x2328, data);\r\n conn.send(loginPack.pack(false));\r\n }\r\n };\r\n conn.onerror = function (error) {\r\n clearTimeout(tr);\r\n Logger_1[\"default\"].error(error);\r\n resolve({ success: false, err: error, conn: conn });\r\n };\r\n conn.onmessage = function (evt) {\r\n if (typeof evt.data === 'string') {\r\n Logger_1[\"default\"].info(\"Received: '\" + evt.data + \"'\");\r\n return;\r\n }\r\n clearTimeout(tr);\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0];\r\n var bodyLen = byteBuffer[1];\r\n if (command == 0x2329) {\r\n resolve({ success: true, conn: conn });\r\n }\r\n };\r\n })];\r\n });\r\n}); };\r\nexports.getLen = function (str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n //单字节加1\r\n if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {\r\n len++;\r\n }\r\n else {\r\n len += 3;\r\n }\r\n }\r\n return len;\r\n};\r\nexports.imClient = new ImClient();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\n/**\r\n * 返回平台所用的 fetch 工具\r\n * */\r\nvar Fetch = /** @class */ (function () {\r\n function Fetch() {\r\n }\r\n Fetch.getFetchToolkit = function () {\r\n var httpFetch;\r\n // @ts-ignore\r\n if (typeof global.fetch !== 'undefined' && typeof global.fetch === 'function') {\r\n // @ts-ignore\r\n httpFetch = global.fetch;\r\n }\r\n else if (typeof fetch === 'function') {\r\n httpFetch = fetch; // RN FETCH\r\n }\r\n else {\r\n var uniFetch = require(\"../uniapp/http/uni-fetch\");\r\n httpFetch = uniFetch.fetch;\r\n }\r\n return httpFetch;\r\n };\r\n return Fetch;\r\n}());\r\nexports[\"default\"] = Fetch;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.im = void 0;\r\nvar ImClient_1 = require(\"./lim/core/ImClient\");\r\nexports.im = ImClient_1.imClient;\r\n// if(typeof window !== 'undefined'){\r\n// console.log(\"window\");\r\n// }\r\n// if(typeof global !== 'undefined'){\r\n// console.log(\"global\");\r\n// }\r\n// @ts-ignore\r\nif (typeof uni !== 'undefined') {\r\n // console.log(\"uni\");\r\n // @ts-ignore\r\n uni['im'] = ImClient_1.imClient;\r\n // @ts-ignore\r\n // uni['im_webtoolkit'] = WebToolkit;\r\n}\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ByteBuffer = /** @class */ (function () {\r\n function ByteBuffer(arrayBuf, offset) {\r\n this.Type_Byte = 1;\r\n this.Type_Short = 2;\r\n this.Type_UShort = 3;\r\n this.Type_Int32 = 4;\r\n this.Type_UInt32 = 5;\r\n this.Type_String = 6; //变长字符串,前两个字节表示长度\r\n this.Type_VString = 7; //定长字符串\r\n this.Type_Int64 = 8;\r\n this.Type_Float = 9;\r\n this.Type_Double = 10;\r\n this.Type_ByteArray = 11;\r\n this._offset = 0;\r\n this._list = [];\r\n this._littleEndian = false;\r\n this._org_buf = arrayBuf ? (arrayBuf.constructor == DataView ? arrayBuf\r\n : (arrayBuf.constructor == Uint8Array ? new DataView(arrayBuf.buffer, offset) : new DataView(arrayBuf, offset))) : new DataView(new Uint8Array([]).buffer);\r\n this.arrayBuf = arrayBuf;\r\n this.offset = offset;\r\n // if (!ArrayBuffer.prototype.slice) {\r\n // ArrayBuffer.prototype.slice = function (start, end) {\r\n // var that = new Uint8Array(this);\r\n // if (end == undefined) end = that.length;\r\n // var result = new ArrayBuffer(end - start);\r\n // var resultArray = new Uint8Array(result);\r\n // for (var i = 0; i < resultArray.length; i++)\r\n // resultArray[i] = that[i + start];\r\n // return result;\r\n // }\r\n // }\r\n }\r\n //指定字节序 为BigEndian\r\n ByteBuffer.prototype.bigEndian = function () {\r\n this._littleEndian = false;\r\n return this;\r\n };\r\n ;\r\n //指定字节序 为LittleEndian\r\n ByteBuffer.prototype.littleEndianfunction = function () {\r\n this._littleEndian = true;\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Write = function (view, offset, str) {\r\n var c = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n view.setUint8(offset++, c);\r\n }\r\n else if (c < 0x800) {\r\n view.setUint8(offset++, 0xc0 | (c >> 6));\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n view.setUint8(offset++, 0xe0 | (c >> 12));\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else {\r\n i++;\r\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\r\n view.setUint8(offset++, 0xf0 | (c >> 18));\r\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n }\r\n };\r\n // byte (val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint8(this._offset, this._littleEndian));\r\n // this._offset += 1;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 1;\r\n // }\r\n // return this;\r\n // };\r\n // short(val:number, index:number) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getInt16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0, this.Type_Short);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n // ushort(val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // // , {t: this.Type_UShort, d: val, l: 2}\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n ByteBuffer.prototype.int32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getInt32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.uint32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getUint32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_UInt32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 新加的方法,获取bytebuffer的长度\r\n */\r\n ByteBuffer.prototype.blength = function () {\r\n return this._offset;\r\n };\r\n ;\r\n /**\r\n * 变长字符串 前4个字节表示字符串长度\r\n **/\r\n ByteBuffer.prototype.string = function (val, index) {\r\n if (arguments.length == 0) {\r\n var len = this._org_buf.getInt32(this._offset, this._littleEndian);\r\n this._offset += 4;\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, len));\r\n this._offset += len;\r\n }\r\n else {\r\n var len = 0;\r\n if (val) {\r\n len = this.utf8Length(val);\r\n }\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_String, d: val, l: len });\r\n this._offset += len + 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Length = function (str) {\r\n var c = 0, length = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n length += 1;\r\n }\r\n else if (c < 0x800) {\r\n length += 2;\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n length += 3;\r\n }\r\n else {\r\n i++;\r\n length += 4;\r\n }\r\n }\r\n return length;\r\n };\r\n ByteBuffer.prototype.utf8Read = function (view, offset, length) {\r\n var string = '', chr = 0;\r\n for (var i = offset, end = offset + length; i < end; i++) {\r\n var byte = view.getUint8(i);\r\n if ((byte & 0x80) === 0x00) {\r\n string += String.fromCharCode(byte);\r\n continue;\r\n }\r\n if ((byte & 0xe0) === 0xc0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 6) |\r\n (view.getUint8(++i) & 0x3f));\r\n continue;\r\n }\r\n if ((byte & 0xf0) === 0xe0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0));\r\n continue;\r\n }\r\n if ((byte & 0xf8) === 0xf0) {\r\n chr = ((byte & 0x07) << 18) |\r\n ((view.getUint8(++i) & 0x3f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0);\r\n if (chr >= 0x010000) { // surrogate pair\r\n chr -= 0x010000;\r\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\r\n }\r\n else {\r\n string += String.fromCharCode(chr);\r\n }\r\n continue;\r\n }\r\n throw new Error('Invalid byte ' + byte.toString(16));\r\n }\r\n return string;\r\n };\r\n /**\r\n * 定长字符串 val为null时,读取定长字符串(需指定长度len)\r\n **/\r\n ByteBuffer.prototype.vstring = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('vstring must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var vlen = 0; //实际长度\r\n for (var i = this._offset; i < this._offset + len; i++) {\r\n if (this._org_buf.getUint8(i) > 0)\r\n vlen++;\r\n }\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, vlen));\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_VString, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.int64 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int64, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.float = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Float, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.double = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Double, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 写入或读取一段字节数组\r\n **/\r\n ByteBuffer.prototype.byteArray = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('byteArray must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var arr = new Uint8Array(this._org_buf.buffer.slice(this._offset, this._offset + len));\r\n this._list.push(arr);\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_ByteArray, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 解包成数据数组\r\n **/\r\n ByteBuffer.prototype.unpack = function () {\r\n return this._list;\r\n };\r\n ;\r\n /**\r\n * 打包成二进制,在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.packWithHead = function () {\r\n return this.pack(true);\r\n };\r\n ;\r\n /**\r\n * 打包成二进制\r\n * @param ifHead 是否在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.pack = function (ifHead) {\r\n this._org_buf = new DataView(new ArrayBuffer((ifHead) ? this._offset + 4 : this._offset));\r\n var offset = 0;\r\n if (ifHead) {\r\n this._org_buf.setUint32(offset, this._offset, this._littleEndian);\r\n offset += 4;\r\n }\r\n for (var i = 0; i < this._list.length; i++) {\r\n switch (this._list[i].t) {\r\n case this.Type_Byte:\r\n this._org_buf.setInt8(offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Short:\r\n this._org_buf.setInt16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UShort:\r\n this._org_buf.setUint16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int32:\r\n this._org_buf.setInt32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UInt32:\r\n this._org_buf.setUint32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_String:\r\n //前4个字节表示字符串长度\r\n this._org_buf.setUint32(offset, this._list[i].l, this._littleEndian);\r\n offset += 4;\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_VString:\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n var vlen = this.utf8Length(this._list[i].d); //字符串实际长度\r\n //补齐\\0\r\n for (var j = offset + vlen; j < offset + this._list[i].l; j++) {\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int64:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Float:\r\n this._org_buf.setFloat32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Double:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_ByteArray:\r\n var indx = 0;\r\n for (var j = offset; j < offset + this._list[i].l; j++) {\r\n if (indx < this._list[i].d.length) {\r\n this._org_buf.setUint8(j, this._list[i].d[indx]);\r\n }\r\n else { //不够的话,后面补齐0x00\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n indx++;\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n }\r\n }\r\n return this._org_buf.buffer;\r\n };\r\n ;\r\n /**\r\n * 未读数据长度\r\n **/\r\n ByteBuffer.prototype.getAvailable = function () {\r\n if (!this._org_buf)\r\n return this._offset;\r\n return this._org_buf.buffer.byteLength - this._offset;\r\n };\r\n ;\r\n return ByteBuffer;\r\n}());\r\nexports[\"default\"] = ByteBuffer;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.LoginPack = void 0;\r\nvar LoginPack = /** @class */ (function () {\r\n function LoginPack(appId, userId, clientType) {\r\n this.userId = userId;\r\n this.clientType = clientType;\r\n this.appId = appId;\r\n }\r\n return LoginPack;\r\n}());\r\nexports.LoginPack = LoginPack;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar Base64 = {\r\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\r\n encode: function (e) {\r\n var t = \"\";\r\n var n, r, i, s, o, u, a;\r\n var f = 0;\r\n e = Base64._utf8_encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n }\r\n else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n var t = \"\";\r\n var n, r, i;\r\n var s, o, u, a;\r\n var f = 0;\r\n e = e.replace(/[^A-Za-z0-9+/=]/g, \"\");\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u != 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a != 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8_decode(t);\r\n return t;\r\n },\r\n _utf8_encode: function (e) {\r\n e = e.replace(/rn/g, \"n\");\r\n var t = \"\";\r\n for (var n = 0; n < e.length; n++) {\r\n var r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n }\r\n else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8_decode: function (e) {\r\n var t = \"\";\r\n var n = 0;\r\n var r = 0;\r\n var c1 = 0;\r\n var c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n }\r\n else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n }\r\n else {\r\n c2 = e.charCodeAt(n + 1);\r\n var c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\nvar WebToolkit = /** @class */ (function () {\r\n function WebToolkit() {\r\n }\r\n // 获取浏览器信息\r\n WebToolkit.getBrowserInfo = function () {\r\n var agent = navigator.userAgent.toLowerCase();\r\n var system = agent.split(\" \")[1].split(\" \")[0].split(\"(\")[1];\r\n var REGSTR_EDGE = /edge\\/[\\d.]+/gi;\r\n var REGSTR_IE = /trident\\/[\\d.]+/gi;\r\n var OLD_IE = /msie\\s[\\d.]+/gi;\r\n var REGSTR_FF = /firefox\\/[\\d.]+/gi;\r\n var REGSTR_CHROME = /chrome\\/[\\d.]+/gi;\r\n var REGSTR_SAF = /safari\\/[\\d.]+/gi;\r\n var REGSTR_OPERA = /opr\\/[\\d.]+/gi;\r\n var info = {\r\n code: 0,\r\n system: system,\r\n browser: \"\",\r\n browserVersion: \"\"\r\n };\r\n // IE\r\n if (agent.indexOf(\"trident\") > 0) {\r\n info.browser = agent.match(REGSTR_IE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_IE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // OLD_IE\r\n if (agent.indexOf(\"msie\") > 0) {\r\n info.browser = agent.match(OLD_IE)[0].split(\" \")[0];\r\n info.browserVersion = agent.match(OLD_IE)[0].split(\" \")[1];\r\n return info;\r\n }\r\n // Edge\r\n if (agent.indexOf(\"edge\") > 0) {\r\n info.browser = agent.match(REGSTR_EDGE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_EDGE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // firefox\r\n if (agent.indexOf(\"firefox\") > 0) {\r\n info.browser = agent.match(REGSTR_FF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_FF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Opera\r\n if (agent.indexOf(\"opr\") > 0) {\r\n info.browser = agent.match(REGSTR_OPERA)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_OPERA)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Safari\r\n if (agent.indexOf(\"safari\") > 0 && agent.indexOf(\"chrome\") < 0) {\r\n info.browser = agent.match(REGSTR_SAF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_SAF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Chrome\r\n if (agent.indexOf(\"chrome\") > 0) {\r\n info.browser = agent.match(REGSTR_CHROME)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_CHROME)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n else {\r\n info.code = -1;\r\n return info;\r\n }\r\n };\r\n // TODO: 获取小程序设备信息\r\n WebToolkit.getWxappInfo = function () {\r\n return {\r\n system: 'WXAPP',\r\n browser: 'WXAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取ReactNative设备信息\r\n WebToolkit.getReactNativeInfo = function () {\r\n return {\r\n system: 'RNNative',\r\n browser: 'RNNative',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取UniApp设备信息\r\n WebToolkit.getUniAppInfo = function () {\r\n return {\r\n system: 'UNIAPP',\r\n browser: 'UNIAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // 动态加入script 到head 标签处\r\n WebToolkit.loadJS = function (url, callback) {\r\n var script = document.createElement('script'), fn = callback || function () { };\r\n script.type = 'text/javascript';\r\n // document.getElementsByTagName('head')[0].children[16].outerHTML.indexOf('http://pv.sohu.com/cityjson?ie=utf-8')\r\n var exist = false;\r\n for (var v in document.getElementsByTagName('head')[0].children) {\r\n var dom = document.getElementsByTagName('head')[0].children[v];\r\n if (dom.outerHTML !== undefined && dom.outerHTML.indexOf(url) >= 0) {\r\n exist = true;\r\n }\r\n }\r\n if (exist) {\r\n fn();\r\n return;\r\n }\r\n //IE\r\n if (script.readyState) {\r\n script.onreadystatechange = function () {\r\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\r\n script.onreadystatechange = null;\r\n fn();\r\n }\r\n };\r\n }\r\n else {\r\n //其他浏览器\r\n script.onload = function () {\r\n fn();\r\n };\r\n }\r\n script.src = url;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n };\r\n // 获取当前ip信息(fetch方式)\r\n WebToolkit.getIpInfoByFetch = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n var fetch = Fetch_1[\"default\"].getFetchToolkit();\r\n var request = { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" } };\r\n return fetch(url, request).then(function (response) {\r\n return response.text();\r\n }).then(function (res) {\r\n if (typeof callback === 'function') {\r\n var currentCity = eval('_current_city=' + res.replace('var returnCitySN = ', ''));\r\n callback(currentCity);\r\n }\r\n })[\"catch\"](function (e) {\r\n Logger_1[\"default\"].trace(e);\r\n });\r\n };\r\n // 获取当前ip信息(动态插入script脚本方式)\r\n WebToolkit.getIpInfoByInsertScript = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n WebToolkit.loadJS(url, function () {\r\n callback(window['returnCitySN']);\r\n });\r\n };\r\n WebToolkit.getIpInfo = function (callback) {\r\n // 小程序的情况需要把pv.sohu.com域名加入白名单中\r\n WebToolkit.getIpInfoByFetch(callback);\r\n };\r\n // 获取客户端设备信息\r\n WebToolkit.getDeviceInfo = function () {\r\n var deviceInfo = WebToolkit.getUniAppInfo();\r\n return deviceInfo;\r\n };\r\n WebToolkit.base64Encode = function (str) {\r\n return Base64.encode(str);\r\n };\r\n WebToolkit.base64Decode = function (str) {\r\n return Base64.decode(str);\r\n };\r\n return WebToolkit;\r\n}());\r\nexports[\"default\"] = WebToolkit;\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var global =\r\n (typeof globalThis !== 'undefined' && globalThis) ||\r\n (typeof self !== 'undefined' && self) ||\r\n (typeof global !== 'undefined' && global)\r\n\r\nvar support = {\r\n searchParams: 'URLSearchParams' in global,\r\n iterable: 'Symbol' in global && 'iterator' in Symbol,\r\n blob:\r\n 'FileReader' in global &&\r\n 'Blob' in global &&\r\n (function() {\r\n try {\r\n new Blob()\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n })(),\r\n formData: 'FormData' in global,\r\n arrayBuffer: 'ArrayBuffer' in global\r\n}\r\n\r\nfunction isDataView(obj) {\r\n return obj && DataView.prototype.isPrototypeOf(obj)\r\n}\r\n\r\nif (support.arrayBuffer) {\r\n var viewClasses = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]'\r\n ]\r\n\r\n var isArrayBufferView =\r\n ArrayBuffer.isView ||\r\n function(obj) {\r\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\r\n }\r\n}\r\n\r\nfunction normalizeName(name) {\r\n if (typeof name !== 'string') {\r\n name = String(name)\r\n }\r\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\r\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\r\n }\r\n // return name.toLowerCase()\r\n return name;\r\n}\r\n\r\nfunction normalizeValue(value) {\r\n if (typeof value !== 'string') {\r\n value = String(value)\r\n }\r\n return value\r\n}\r\n\r\n// Build a destructive iterator for the value list\r\nfunction iteratorFor(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift()\r\n return {done: value === undefined, value: value}\r\n }\r\n }\r\n\r\n if (support.iterable) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator\r\n }\r\n }\r\n\r\n return iterator\r\n}\r\n\r\nexport function Headers(headers) {\r\n this.map = {}\r\n\r\n if (headers instanceof Headers) {\r\n headers.forEach(function(value, name) {\r\n this.append(name, value)\r\n }, this)\r\n } else if (Array.isArray(headers)) {\r\n headers.forEach(function(header) {\r\n this.append(header[0], header[1])\r\n }, this)\r\n } else if (headers) {\r\n Object.getOwnPropertyNames(headers).forEach(function(name) {\r\n this.append(name, headers[name])\r\n }, this)\r\n }\r\n}\r\n\r\nHeaders.prototype.append = function(name, value) {\r\n name = normalizeName(name)\r\n value = normalizeValue(value)\r\n var oldValue = this.map[name]\r\n this.map[name] = oldValue ? oldValue + ', ' + value : value\r\n}\r\n\r\nHeaders.prototype['delete'] = function(name) {\r\n delete this.map[normalizeName(name)]\r\n}\r\n\r\nHeaders.prototype.get = function(name) {\r\n name = normalizeName(name)\r\n return this.has(name) ? this.map[name] : null\r\n}\r\n\r\nHeaders.prototype.has = function(name) {\r\n return this.map.hasOwnProperty(normalizeName(name))\r\n}\r\n\r\nHeaders.prototype.set = function(name, value) {\r\n this.map[normalizeName(name)] = normalizeValue(value)\r\n}\r\n\r\nHeaders.prototype.forEach = function(callback, thisArg) {\r\n for (var name in this.map) {\r\n if (this.map.hasOwnProperty(name)) {\r\n callback.call(thisArg, this.map[name], name, this)\r\n }\r\n }\r\n}\r\n\r\nHeaders.prototype.keys = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push(name)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.values = function() {\r\n var items = []\r\n this.forEach(function(value) {\r\n items.push(value)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.entries = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push([name, value])\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nif (support.iterable) {\r\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\r\n}\r\n\r\nfunction consumed(body) {\r\n if (body.bodyUsed) {\r\n return Promise.reject(new TypeError('Already read'))\r\n }\r\n body.bodyUsed = true\r\n}\r\n\r\nfunction fileReaderReady(reader) {\r\n return new Promise(function(resolve, reject) {\r\n reader.onload = function() {\r\n resolve(reader.result)\r\n }\r\n reader.onerror = function() {\r\n reject(reader.error)\r\n }\r\n })\r\n}\r\n\r\nfunction readBlobAsArrayBuffer(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsArrayBuffer(blob)\r\n return promise\r\n}\r\n\r\nfunction readBlobAsText(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsText(blob)\r\n return promise\r\n}\r\n\r\nfunction readArrayBufferAsText(buf) {\r\n var view = new Uint8Array(buf)\r\n var chars = new Array(view.length)\r\n\r\n for (var i = 0; i < view.length; i++) {\r\n chars[i] = String.fromCharCode(view[i])\r\n }\r\n return chars.join('')\r\n}\r\n\r\nfunction bufferClone(buf) {\r\n if (buf.slice) {\r\n return buf.slice(0)\r\n } else {\r\n var view = new Uint8Array(buf.byteLength)\r\n view.set(new Uint8Array(buf))\r\n return view.buffer\r\n }\r\n}\r\n\r\nfunction Body() {\r\n this.bodyUsed = false\r\n\r\n this._initBody = function(body) {\r\n /*\r\n fetch-mock wraps the Response object in an ES6 Proxy to\r\n provide useful test harness features such as flush. However, on\r\n ES5 browsers without fetch or Proxy support pollyfills must be used;\r\n the proxy-pollyfill is unable to proxy an attribute unless it exists\r\n on the object before the Proxy is created. This change ensures\r\n Response.bodyUsed exists on the instance, while maintaining the\r\n semantic of setting Request.bodyUsed in the constructor before\r\n _initBody is called.\r\n */\r\n this.bodyUsed = this.bodyUsed\r\n this._bodyInit = body\r\n if (!body) {\r\n this._bodyText = ''\r\n } else if (typeof body === 'string') {\r\n this._bodyText = body\r\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\r\n this._bodyBlob = body\r\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\r\n this._bodyFormData = body\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this._bodyText = body.toString()\r\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\r\n this._bodyArrayBuffer = bufferClone(body.buffer)\r\n // IE 10-11 can't handle a DataView body.\r\n this._bodyInit = new Blob([this._bodyArrayBuffer])\r\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\r\n this._bodyArrayBuffer = bufferClone(body)\r\n } else {\r\n this._bodyText = body = Object.prototype.toString.call(body)\r\n }\r\n\r\n if (!this.headers.get('Content-Type')) {\r\n if (typeof body === 'string') {\r\n this.headers.set('Content-Type', 'text/plain;charset=UTF-8')\r\n } else if (this._bodyBlob && this._bodyBlob.type) {\r\n this.headers.set('Content-Type', this._bodyBlob.type)\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this.headers.set('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')\r\n }\r\n }\r\n }\r\n\r\n if (support.blob) {\r\n this.blob = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return Promise.resolve(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as blob')\r\n } else {\r\n return Promise.resolve(new Blob([this._bodyText]))\r\n }\r\n }\r\n\r\n this.arrayBuffer = function() {\r\n if (this._bodyArrayBuffer) {\r\n var isConsumed = consumed(this)\r\n if (isConsumed) {\r\n return isConsumed\r\n }\r\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\r\n return Promise.resolve(\r\n this._bodyArrayBuffer.buffer.slice(\r\n this._bodyArrayBuffer.byteOffset,\r\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\r\n )\r\n )\r\n } else {\r\n return Promise.resolve(this._bodyArrayBuffer)\r\n }\r\n } else {\r\n return this.blob().then(readBlobAsArrayBuffer)\r\n }\r\n }\r\n }\r\n\r\n this.text = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return readBlobAsText(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as text')\r\n } else {\r\n return Promise.resolve(this._bodyText)\r\n }\r\n }\r\n\r\n if (support.formData) {\r\n this.formData = function() {\r\n return this.text().then(decode)\r\n }\r\n }\r\n\r\n this.json = function() {\r\n return this.text().then(JSON.parse)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// HTTP methods whose capitalization should be normalized\r\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\r\n\r\nfunction normalizeMethod(method) {\r\n var upcased = method.toUpperCase()\r\n return methods.indexOf(upcased) > -1 ? upcased : method\r\n}\r\n\r\nexport function Request(input, options) {\r\n if (!(this instanceof Request)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n\r\n options = options || {}\r\n var body = options.body\r\n\r\n if (input instanceof Request) {\r\n if (input.bodyUsed) {\r\n throw new TypeError('Already read')\r\n }\r\n this.url = input.url\r\n this.credentials = input.credentials\r\n if (!options.headers) {\r\n this.headers = new Headers(input.headers)\r\n }\r\n this.method = input.method\r\n this.mode = input.mode\r\n this.signal = input.signal\r\n if (!body && input._bodyInit != null) {\r\n body = input._bodyInit\r\n input.bodyUsed = true\r\n }\r\n } else {\r\n this.url = String(input)\r\n }\r\n\r\n this.credentials = options.credentials || this.credentials || 'same-origin'\r\n if (options.headers || !this.headers) {\r\n this.headers = new Headers(options.headers)\r\n }\r\n this.method = normalizeMethod(options.method || this.method || 'GET')\r\n this.mode = options.mode || this.mode || null\r\n this.signal = options.signal || this.signal\r\n this.referrer = null\r\n\r\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\r\n throw new TypeError('Body not allowed for GET or HEAD requests')\r\n }\r\n this._initBody(body)\r\n\r\n if (this.method === 'GET' || this.method === 'HEAD') {\r\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\r\n // Search for a '_' parameter in the query string\r\n var reParamSearch = /([?&])_=[^&]*/\r\n if (reParamSearch.test(this.url)) {\r\n // If it already exists then set the value with the current time\r\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\r\n } else {\r\n // Otherwise add a new '_' parameter to the end with the current time\r\n var reQueryString = /\\?/\r\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\r\n }\r\n }\r\n }\r\n}\r\n\r\nRequest.prototype.clone = function() {\r\n return new Request(this, {body: this._bodyInit})\r\n}\r\n\r\nfunction decode(body) {\r\n var form = new FormData()\r\n body\r\n .trim()\r\n .split('&')\r\n .forEach(function(bytes) {\r\n if (bytes) {\r\n var split = bytes.split('=')\r\n var name = split.shift().replace(/\\+/g, ' ')\r\n var value = split.join('=').replace(/\\+/g, ' ')\r\n form.append(decodeURIComponent(name), decodeURIComponent(value))\r\n }\r\n })\r\n return form\r\n}\r\n\r\nfunction parseHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\r\n // https://tools.ietf.org/html/rfc7230#section-3.2\r\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\r\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\r\n // https://github.com/github/fetch/issues/748\r\n // https://github.com/zloirock/core-js/issues/751\r\n preProcessedHeaders\r\n .split('\\r')\r\n .map(function(header) {\r\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\r\n })\r\n .forEach(function(line) {\r\n var parts = line.split(':')\r\n var key = parts.shift().trim()\r\n if (key) {\r\n var value = parts.join(':').trim()\r\n headers.append(key, value)\r\n }\r\n })\r\n return headers\r\n}\r\n\r\nfunction parseUniappHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n for(var key in rawHeaders){\r\n headers.append(key, rawHeaders[key])\r\n }\r\n return headers\r\n}\r\n\r\n\r\nBody.call(Request.prototype)\r\n\r\nexport function Response(bodyInit, options) {\r\n if (!(this instanceof Response)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n if (!options) {\r\n options = {}\r\n }\r\n\r\n this.type = 'default'\r\n this.status = options.status === undefined ? 200 : options.status\r\n this.ok = this.status >= 200 && this.status < 300\r\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\r\n this.headers = new Headers(options.headers)\r\n this.url = options.url || ''\r\n this._initBody(bodyInit)\r\n}\r\n\r\nBody.call(Response.prototype)\r\n\r\nResponse.prototype.clone = function() {\r\n return new Response(this._bodyInit, {\r\n status: this.status,\r\n statusText: this.statusText,\r\n headers: new Headers(this.headers),\r\n url: this.url\r\n })\r\n}\r\n\r\nResponse.error = function() {\r\n var response = new Response(null, {status: 0, statusText: ''})\r\n response.type = 'error'\r\n return response\r\n}\r\n\r\nvar redirectStatuses = [301, 302, 303, 307, 308]\r\n\r\nResponse.redirect = function(url, status) {\r\n if (redirectStatuses.indexOf(status) === -1) {\r\n throw new RangeError('Invalid status code')\r\n }\r\n\r\n return new Response(null, {status: status, headers: {location: url}})\r\n}\r\n\r\nexport var DOMException = global.DOMException\r\ntry {\r\n new DOMException()\r\n} catch (err) {\r\n DOMException = function(message, name) {\r\n this.message = message\r\n this.name = name\r\n var error = Error(message)\r\n this.stack = error.stack\r\n }\r\n DOMException.prototype = Object.create(Error.prototype)\r\n DOMException.prototype.constructor = DOMException\r\n}\r\n\r\n// 从 whatwg-fetch 项目改写\r\nexport function fetch(input, init) {\r\n return new Promise(function(resolve, reject) {\r\n var request = new Request(input, init)\r\n\r\n if (request.signal && request.signal.aborted) {\r\n return reject(new DOMException('Aborted', 'AbortError'))\r\n }\r\n\r\n function fixUrl(url) {\r\n try {\r\n return url === '' && global.location.href ? global.location.href : url\r\n } catch (e) {\r\n return url\r\n }\r\n }\r\n function isJson(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return true;\r\n }\r\n if (typeof json == \"string\") {\r\n if (typeof JSON.parse(str) == \"object\") {\r\n return true;\r\n }\r\n }\r\n } catch(e) {\r\n }\r\n return false;\r\n }\r\n function toStr(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return JSON.stringify(json);\r\n }\r\n if (typeof json == \"string\") {\r\n return json;\r\n }\r\n } catch(e) {\r\n }\r\n return json.toString();\r\n }\r\n\r\n\r\n let rawBody = typeof request._bodyInit === 'undefined' ? null : request._bodyInit;\r\n if(request.headers.hasOwnProperty('Content-Type') && request.headers['Content-Type'].indexOf('application/json') >= 0){\r\n if(request.method.toUpperCase() === 'POST'){\r\n rawBody = JSON.parse(rawBody); // uniapp框架遇到 method = 'POST' 且 Content-Type = 'application/json' 会自动序列化\r\n }\r\n }\r\n const requestTask = uni.request({\r\n url: fixUrl(request.url),\r\n method: request.method,\r\n data: rawBody,\r\n header: request.headers.map,\r\n complete: (resp)=> {\r\n // Logger.info(resp);\r\n if (request.signal) {\r\n request.signal.removeEventListener('abort', abortXhr);\r\n }\r\n if(resp.errMsg.indexOf('fail') >= 0){\r\n setTimeout(function() {\r\n reject(new TypeError('Network request failed'))\r\n }, 0);\r\n return;\r\n }\r\n // if(resp.statusCode !== 200){\r\n // setTimeout(function() {\r\n // reject(new TypeError('Network request failed, statusCode:' + resp.statusCode + \" full text:\" + JSON.stringify(resp.data)))\r\n // }, 0)\r\n // return;\r\n // }\r\n var options = {\r\n status: resp.statusCode,\r\n statusText: resp.data ? toStr(resp.data) : '',\r\n headers: parseUniappHeaders(resp.header || {})\r\n };\r\n options.url = options.headers.get('X-Request-URL')\r\n var body = options.statusText;\r\n setTimeout(function() {\r\n resolve(new Response(body, options))\r\n }, 0)\r\n\r\n }\r\n });\r\n function abortXhr() {\r\n requestTask.abort()\r\n }\r\n if (request.signal) {\r\n request.signal.addEventListener('abort', abortXhr)\r\n }\r\n\r\n })\r\n}\r\n\r\nfetch.polyfill = true\r\n\r\nif (!global.fetch) {\r\n global.fetch = fetch\r\n global.Headers = Headers\r\n global.Request = Request\r\n global.Response = Response\r\n}\r\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestBase = void 0;\r\nvar RequestBase = /** @class */ (function () {\r\n function RequestBase(appId, clientType, imei) {\r\n this.appId = appId;\r\n this.clientType = clientType;\r\n this.imei = imei;\r\n }\r\n return RequestBase;\r\n}());\r\nexports.RequestBase = RequestBase;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestParams = void 0;\r\nvar RequestParams = /** @class */ (function () {\r\n function RequestParams(appId, identifier, userSign) {\r\n this.appId = appId;\r\n this.identifier = identifier;\r\n this.userSign = userSign;\r\n }\r\n return RequestParams;\r\n}());\r\nexports.RequestParams = RequestParams;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ImClient_1 = require(\"./ImClient\");\r\nvar ApiResponse_1 = require(\"../model/ApiResponse\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar HttpApi = /** @class */ (function () {\r\n function HttpApi(url) {\r\n this.url = \"\"; //http://127.0.0.1:8000/v1\r\n this.url = url;\r\n }\r\n HttpApi.prototype.call = function (url, params, body) {\r\n var userId = ImClient_1.imClient.userId;\r\n Logger_1[\"default\"].info(userId);\r\n var reqUrl = this.url + url;\r\n if (params != null) {\r\n var paramStr = this.setQueryConfig(params);\r\n console.log(paramStr);\r\n reqUrl += paramStr;\r\n }\r\n var requestMethod = \"POST\";\r\n // 讲appid等参数写入body\r\n body = this.setQueryToBody(params, body);\r\n var headers = {\r\n 'Content-Type': 'application/json',\r\n };\r\n var request = { method: requestMethod, headers: headers, mode: 'cors', body: utils_1[\"default\"].json(body) };\r\n return this.httpFetch(reqUrl, request);\r\n };\r\n HttpApi.prototype.setQueryToBody = function (params, body) {\r\n for (var o in params) {\r\n body[o] = params[o];\r\n }\r\n return body;\r\n };\r\n HttpApi.prototype.setQueryConfig = function (params) {\r\n var _str = \"?\";\r\n for (var o in params) {\r\n _str += o + \"=\" + params[o] + \"&\";\r\n }\r\n var _str = _str.substring(0, _str.length - 1); //末尾是&\r\n return _str;\r\n };\r\n HttpApi.prototype.httpFetch = function (url, request) {\r\n var _this = this;\r\n console.log(\"httpFetch\");\r\n var rnfetch1 = Fetch_1[\"default\"].getFetchToolkit();\r\n return rnfetch1(url, request).then(function (response) {\r\n console.log(response);\r\n return response.json();\r\n }).then(function (res) {\r\n Logger_1[\"default\"].info(\"==> [\" + request.method + \"] \" + url + \" back:\" + utils_1[\"default\"].json(res));\r\n var resp = _this.response2ApiResponse(res);\r\n if (resp.isFailed()) {\r\n return Promise.reject(resp);\r\n }\r\n // return Promise.resolve(this.response2ApiResponse(res));\r\n return Promise.resolve(resp);\r\n });\r\n };\r\n HttpApi.prototype.response2ApiResponse = function (response) {\r\n var apiResponse = new ApiResponse_1[\"default\"](true);\r\n apiResponse.data = response.data;\r\n apiResponse.msg = response.msg;\r\n apiResponse.code = response.code;\r\n return apiResponse;\r\n };\r\n return HttpApi;\r\n}());\r\nexports[\"default\"] = HttpApi;\r\n// export const httpApi = new HttpApi();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ApiResponse = /** @class */ (function () {\r\n function ApiResponse(succeed) {\r\n if (succeed === void 0) { succeed = false; }\r\n this.msg = '';\r\n this.data = null;\r\n if (succeed) {\r\n this.code = 200;\r\n }\r\n }\r\n ApiResponse.prototype.isSucceed = function () {\r\n return this.code === 200;\r\n };\r\n ApiResponse.prototype.isFailed = function () {\r\n return !this.isSucceed();\r\n };\r\n return ApiResponse;\r\n}());\r\nexports[\"default\"] = ApiResponse;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.ConversationEventCommand = exports.UserEventCommand = exports.SystemCommand = exports.GroupCommand = exports.FriendShipCommand = exports.MessageCommand = void 0;\r\nvar MessageCommand;\r\n(function (MessageCommand) {\r\n MessageCommand[MessageCommand[\"MSG_P2P\"] = 1103] = \"MSG_P2P\";\r\n MessageCommand[MessageCommand[\"MSG_P2P_SYNC\"] = 1108] = \"MSG_P2P_SYNC\";\r\n //发送消息已读 1106\r\n MessageCommand[MessageCommand[\"MSG_READED\"] = 1106] = \"MSG_READED\";\r\n //消息接收ack\r\n MessageCommand[MessageCommand[\"MSG_RECIVE_ACK\"] = 1107] = \"MSG_RECIVE_ACK\";\r\n //单聊消息ACK 1046\r\n MessageCommand[MessageCommand[\"MSG_ACK\"] = 1046] = \"MSG_ACK\";\r\n // 消息撤回 1050\r\n MessageCommand[MessageCommand[\"MSG_RECALL\"] = 1050] = \"MSG_RECALL\";\r\n // //消息撤回通知 1052\r\n MessageCommand[MessageCommand[\"MSG_RECALL_NOTIFY\"] = 1052] = \"MSG_RECALL_NOTIFY\";\r\n // 消息撤回回包 1051\r\n MessageCommand[MessageCommand[\"MSG_RECALL_ACK\"] = 1051] = \"MSG_RECALL_ACK\";\r\n // //消息已读通知 1053\r\n MessageCommand[MessageCommand[\"MSG_READED_NOTIFY\"] = 1053] = \"MSG_READED_NOTIFY\";\r\n})(MessageCommand || (MessageCommand = {}));\r\nexports.MessageCommand = MessageCommand;\r\nvar FriendShipCommand;\r\n(function (FriendShipCommand) {\r\n //添加好友 3000\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_ADD\"] = 3000] = \"FRIEND_ADD\";\r\n //更新好友 3001\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_UPDATE\"] = 3001] = \"FRIEND_UPDATE\";\r\n //删除好友 3002\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_DELETE\"] = 3002] = \"FRIEND_DELETE\";\r\n //好友申请 3003\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST\"] = 3003] = \"FRIEND_REQUEST\";\r\n //好友申请已读 3004\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_READ\"] = 3004] = \"FRIEND_REQUEST_READ\";\r\n //好友申请审批 3005\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_APPROVER\"] = 3005] = \"FRIEND_REQUEST_APPROVER\";\r\n //添加黑名单 3010\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_ADD\"] = 3010] = \"FRIEND_BLACK_ADD\";\r\n //移除黑名单 3011\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_DELETE\"] = 3011] = \"FRIEND_BLACK_DELETE\";\r\n //新建好友分组 3012\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_ADD\"] = 3012] = \"FRIEND_GROUP_ADD\";\r\n //删除好友分组 3013\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_DELETE\"] = 3013] = \"FRIEND_GROUP_DELETE\";\r\n //好友分组添加成员 3014\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_ADD\"] = 3014] = \"FRIEND_GROUP_MEMBER_ADD\";\r\n //好友分组移除成员 3015\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_DELETE\"] = 3015] = \"FRIEND_GROUP_MEMBER_DELETE\";\r\n})(FriendShipCommand || (FriendShipCommand = {}));\r\nexports.FriendShipCommand = FriendShipCommand;\r\nvar GroupCommand;\r\n(function (GroupCommand) {\r\n /**\r\n * 推送申请入群通知 2000\r\n */\r\n GroupCommand[GroupCommand[\"JOIN_GROUP\"] = 2000] = \"JOIN_GROUP\";\r\n /**\r\n * 推送添加群成员 2001,通知给所有管理员和本人\r\n */\r\n GroupCommand[GroupCommand[\"ADDED_MEMBER\"] = 2001] = \"ADDED_MEMBER\";\r\n /**\r\n * 推送创建群组通知 2002,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"CREATED_GROUP\"] = 2002] = \"CREATED_GROUP\";\r\n /**\r\n * 推送更新群组通知 2003,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_GROUP\"] = 2003] = \"UPDATED_GROUP\";\r\n /**\r\n * 推送退出群组通知 2004,通知给管理员和操作人\r\n */\r\n GroupCommand[GroupCommand[\"EXIT_GROUP\"] = 2004] = \"EXIT_GROUP\";\r\n /**\r\n * 推送修改群成员通知 2005,通知给管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_MEMBER\"] = 2005] = \"UPDATED_MEMBER\";\r\n /**\r\n * 推送删除群成员通知 2006,通知给所有群成员和被踢人\r\n */\r\n GroupCommand[GroupCommand[\"DELETED_MEMBER\"] = 2006] = \"DELETED_MEMBER\";\r\n /**\r\n * 推送解散群通知 2007,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"DESTROY_GROUP\"] = 2007] = \"DESTROY_GROUP\";\r\n /**\r\n * 推送转让群主 2008,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"TRANSFER_GROUP\"] = 2008] = \"TRANSFER_GROUP\";\r\n /**\r\n * 禁言群 2009,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"MUTE_GROUP\"] = 2009] = \"MUTE_GROUP\";\r\n /**\r\n * 禁言/解禁 群成员 2010,通知管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"SPEAK_GOUP_MEMBER\"] = 2010] = \"SPEAK_GOUP_MEMBER\";\r\n //群聊消息收发 2104\r\n GroupCommand[GroupCommand[\"MSG_GROUP\"] = 2104] = \"MSG_GROUP\";\r\n //群聊消息收发同步消息 2105\r\n GroupCommand[GroupCommand[\"MSG_GROUP_SYNC\"] = 2105] = \"MSG_GROUP_SYNC\";\r\n //群聊消息ACK 2047\r\n GroupCommand[GroupCommand[\"GROUP_MSG_ACK\"] = 2047] = \"GROUP_MSG_ACK\";\r\n})(GroupCommand || (GroupCommand = {}));\r\nexports.GroupCommand = GroupCommand;\r\nvar SystemCommand;\r\n(function (SystemCommand) {\r\n //心跳 9999\r\n SystemCommand[SystemCommand[\"PING\"] = 9999] = \"PING\";\r\n //登陸 9000\r\n SystemCommand[SystemCommand[\"LOGIN\"] = 9000] = \"LOGIN\";\r\n //登录ack 9001\r\n SystemCommand[SystemCommand[\"LOGINACK\"] = 9001] = \"LOGINACK\";\r\n //下线通知 用于多端互斥 9002\r\n SystemCommand[SystemCommand[\"MUTUALLOGIN\"] = 9002] = \"MUTUALLOGIN\";\r\n //登出 9003\r\n SystemCommand[SystemCommand[\"LOGOUT\"] = 9003] = \"LOGOUT\";\r\n})(SystemCommand || (SystemCommand = {}));\r\nexports.SystemCommand = SystemCommand;\r\nvar UserEventCommand;\r\n(function (UserEventCommand) {\r\n //4000\r\n UserEventCommand[UserEventCommand[\"USER_MODIFY\"] = 4000] = \"USER_MODIFY\";\r\n //4001\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE\"] = 4001] = \"USER_ONLINE_STATUS_CHANGE\";\r\n //4002 在线状态订阅\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_SUBSCRIBE\"] = 4002] = \"USER_ONLINE_STATUS_SUBSCRIBE\";\r\n //4003 拉取订阅的在线状态好友,只发送给请求端\r\n UserEventCommand[UserEventCommand[\"PULL_USER_ONLINE_STATUS\"] = 4003] = \"PULL_USER_ONLINE_STATUS\";\r\n //4004 用户在线状态通知报文\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE_NOTIFY\"] = 4004] = \"USER_ONLINE_STATUS_CHANGE_NOTIFY\";\r\n})(UserEventCommand || (UserEventCommand = {}));\r\nexports.UserEventCommand = UserEventCommand;\r\nvar ConversationEventCommand;\r\n(function (ConversationEventCommand) {\r\n //5000 会话删除\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_DELETE\"] = 5000] = \"CONVERSATION_DELETE\";\r\n //5001 会话修改\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_UPDATE\"] = 5001] = \"CONVERSATION_UPDATE\";\r\n})(ConversationEventCommand || (ConversationEventCommand = {}));\r\nexports.ConversationEventCommand = ConversationEventCommand;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.MessagePack = void 0;\r\nvar utils_1 = require(\"../common/utils\");\r\nvar MessagePack = /** @class */ (function () {\r\n function MessagePack(appId) {\r\n this.messageId = utils_1[\"default\"].uuid();\r\n this.appId = appId;\r\n this.messageRandom = this.RangeInteger(0, 10000);\r\n this.messageTime = Date.parse(new Date().toString());\r\n }\r\n MessagePack.prototype.RangeInteger = function (min, max) {\r\n var range = max - min;\r\n var value = Math.floor(Math.random() * range) + min;\r\n return value;\r\n };\r\n MessagePack.prototype.buildTextMessagePack = function (fromId, toId, text) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: 1, content: text };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n MessagePack.prototype.buildCustomerMessagePack = function (fromId, toId, type, obj) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: type, content: obj };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n return MessagePack;\r\n}());\r\nexports.MessagePack = MessagePack;\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://imsdk/webpack/universalModuleDefinition","webpack://imsdk/webpack/bootstrap","webpack://imsdk/./src/lim/log/Logger.ts","webpack://imsdk/./src/lim/common/utils.ts","webpack://imsdk/./src/lim/core/ImClient.ts","webpack://imsdk/./src/lim/common/Fetch.ts","webpack://imsdk/./src/lim.ts","webpack://imsdk/./src/lim/codec/ByteBuffer.ts","webpack://imsdk/./src/lim/pack/LoginPack.ts","webpack://imsdk/./src/lim/common/WebToolkit.ts","webpack://imsdk/(webpack)/buildin/global.js","webpack://imsdk/./src/lim/uniapp/http/uni-fetch.js","webpack://imsdk/./node_modules/websocket/lib/browser.js","webpack://imsdk/./node_modules/es5-ext/global.js","webpack://imsdk/./node_modules/websocket/lib/version.js","webpack://imsdk/./src/lim/model/RequestBase.ts","webpack://imsdk/./src/lim/model/RequestParams.ts","webpack://imsdk/./src/lim/core/HttpApi.ts","webpack://imsdk/./src/lim/model/ApiResponse.ts","webpack://imsdk/./src/lim/common/Command.ts","webpack://imsdk/./src/lim/pack/MessagePack.ts"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__spreadArrays","this","il","arguments","length","Array","k","a","j","jl","Logger","info","message","optionalParams","_i","debug","console","apply","Date","toISOString","infoTag","tag","error","errorTag","trace","e","Error","undefined","stack","Beans","to","target","JSON","parse","stringify","bean","json","copy","replace","replaceJSON","v","toMapByKey","arrs","result","forEach","strEmpty","strNotEmpty","isEmpty","str","uuid","Math","random","toString","slice","getTime","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","op","TypeError","pop","push","imClient","getLen","limLogin","ImClient","sleep","State","TimeUnit","Logger_1","ByteBuffer_1","LoginPack_1","WebToolkit_1","websocket_1","RequestBase_1","RequestParams_1","HttpApi_1","utils_1","Command_1","MessagePack_1","firstMonitorSocket","second","Unit","Second","_a","setTimeout","url","version","clientType","listeners","state","INIT","lastOfflineMessageSequence","offlineMessageList","httpUrl","getRequestBase","RequestBase","appId","imei","isInit","CONNECTED","getRequestParams","RequestParams","userId","userSign","init","callback","self","resp","ip","port","req","success","err","conn","_this","_b","getDeviceInfo","system","imeiLength","isFailed","data","LoginPack","onerror","onSocketErrorEvent","errorHandler","onclose","CLOSEING","onSocketCloseEvent","reason","onmessage","evt","bytebuf","byteBuffer","int32","unpack","command","bodyLen","msgBody","vstring","log","MessageCommand","MSG_P2P","onP2PMessage","onTestMessage","loadOfflineMessage","heartbeatLoop","onLogin","buildMessagePack","messagePack","jsonData","pack","index","error_1","CLOSED","RECONNECTING","onSocketReConnectEvent","onSocketReConnectSuccessEvent","getSingleUserInfo","uid","syncGetUserInfo","api","userIds","getUserInfo","getAllFriend","fromId","getUserSequence","getUserConversationList","lastSequence","maxLimit","operater","start","now","loop","pingPack","SystemCommand","PING","send","createP2PTextMessage","text","MessagePack","buildTextMessagePack","sendP2PMessage","p2pPack","sendP2PMessageReciveAck","rAck","toId","p2pPack_1107","MSG_RECIVE_ACK","conversationType","p2pPack_1106","MSG_READED","p2pPack_1054","MSG_READED_RECEIPT","sendP2PMessageReadedReceipt","getUserId","offmessages","isSucceed","maxSequence","dataList","onOfflineMessage","completed","w3cwebsocket","binaryType","tr","clearTimeout","onopen","readyState","OPEN","onSocketConnectEvent","loginPack","len","charCodeAt","Fetch","getFetchToolkit","httpFetch","global","fetch","im","ImClient_1","uni","ByteBuffer","arrayBuf","offset","Type_Byte","Type_Short","Type_UShort","Type_Int32","Type_UInt32","Type_String","Type_VString","Type_Int64","Type_Float","Type_Double","Type_ByteArray","_offset","_list","_littleEndian","_org_buf","constructor","DataView","Uint8Array","buffer","bigEndian","littleEndianfunction","utf8Write","view","setUint8","val","getInt32","splice","uint32","getUint32","blength","string","utf8Read","utf8Length","chr","end","byte","getUint8","String","fromCharCode","vlen","int64","getFloat64","float","getFloat32","double","byteArray","arr","packWithHead","ifHead","ArrayBuffer","setUint32","setInt8","setInt16","setUint16","setInt32","setFloat64","setFloat32","indx","getAvailable","byteLength","Fetch_1","Base64","_keyStr","encode","u","_utf8_encode","isNaN","charAt","decode","indexOf","_utf8_decode","c2","c3","WebToolkit","getBrowserInfo","agent","navigator","userAgent","toLowerCase","REGSTR_EDGE","REGSTR_IE","OLD_IE","REGSTR_FF","REGSTR_CHROME","REGSTR_SAF","REGSTR_OPERA","code","split","browser","browserVersion","match","getWxappInfo","getReactNativeInfo","getUniAppInfo","loadJS","script","document","createElement","fn","type","exist","getElementsByTagName","children","dom","outerHTML","onreadystatechange","onload","src","appendChild","getIpInfoByFetch","request","method","headers","response","res","currentCity","eval","getIpInfoByInsertScript","getIpInfo","base64Encode","base64Decode","Function","globalThis","support","Blob","viewClasses","isArrayBufferView","isView","obj","normalizeName","test","normalizeValue","iteratorFor","items","shift","Headers","map","append","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","arrayBuffer","isConsumed","byteOffset","readAsText","chars","join","readArrayBufferAsText","formData","oldValue","has","keys","values","entries","methods","Request","input","options","upcased","credentials","signal","toUpperCase","referrer","cache","reParamSearch","form","trim","bytes","decodeURIComponent","parseUniappHeaders","rawHeaders","Response","bodyInit","status","ok","statusText","clone","redirectStatuses","redirect","RangeError","location","DOMException","aborted","toStr","rawBody","requestTask","href","fixUrl","complete","removeEventListener","abortXhr","errMsg","statusCode","abort","addEventListener","polyfill","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","uri","protocols","prop","naiveFallback","configurable","__global__","identifier","ApiResponse_1","HttpApi","params","reqUrl","setQueryConfig","setQueryToBody","_str","substring","rnfetch1","response2ApiResponse","apiResponse","msg","ApiResponse","succeed","FriendShipCommand","GroupCommand","UserEventCommand","ConversationEventCommand","messageId","messageRandom","RangeInteger","messageTime","min","max","range","floor","content","messageBody","buildCustomerMessagePack"],"mappings":"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","file":"lim-sdk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"imsdk\"] = factory();\n\telse\n\t\troot[\"imsdk\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","\"use strict\";\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nexports.__esModule = true;\r\nvar Logger = /** @class */ (function () {\r\n function Logger() {\r\n }\r\n Logger.info = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.infoTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.info.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.error = function (message) {\r\n var optionalParams = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n optionalParams[_i - 1] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.errorTag = function (tag, message) {\r\n var optionalParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n optionalParams[_i - 2] = arguments[_i];\r\n }\r\n if (Logger.debug) {\r\n console.error.apply(console, __spreadArrays([new Date().toISOString() + \" \" + tag + \" : \" + message], optionalParams));\r\n }\r\n };\r\n Logger.trace = function (e) {\r\n if (Logger.debug) {\r\n if (e instanceof Error) {\r\n console.error(e.message + \" \\n \" + (e.stack !== undefined ? e.stack : ''));\r\n }\r\n else {\r\n console.error(e);\r\n }\r\n }\r\n };\r\n Logger.debug = false;\r\n return Logger;\r\n}());\r\nexports[\"default\"] = Logger;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Beans = /** @class */ (function () {\r\n function Beans() {\r\n }\r\n Beans.to = function (target) {\r\n return JSON.parse(JSON.stringify(target));\r\n };\r\n Beans.bean = function (json) {\r\n return JSON.parse(json);\r\n };\r\n Beans.copy = function (target) {\r\n return Beans.to(target);\r\n };\r\n Beans.replace = function (target, replaceJSON) {\r\n var r = Beans.to(target);\r\n for (var v in replaceJSON) {\r\n r[v] = replaceJSON[v];\r\n }\r\n return r;\r\n };\r\n Beans.toMapByKey = function (arrs, key) {\r\n var result = {};\r\n arrs.forEach(function (v) {\r\n if (v.hasOwnProperty(key)) {\r\n result[key] = v;\r\n }\r\n });\r\n return result;\r\n };\r\n Beans.json = function (target) {\r\n return JSON.stringify(target);\r\n };\r\n Beans.strEmpty = function (s) {\r\n return !!s;\r\n };\r\n Beans.strNotEmpty = function (s) {\r\n return !s;\r\n };\r\n Beans.isEmpty = function (str) {\r\n if (str === null ||\r\n str === '' ||\r\n str === undefined ||\r\n str.length === 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n Beans.uuid = function () {\r\n return (Math.random() * 36).toString(36).slice(2) + new Date().getTime().toString();\r\n };\r\n return Beans;\r\n}());\r\nexports[\"default\"] = Beans;\r\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nexports.__esModule = true;\r\nexports.imClient = exports.getLen = exports.limLogin = exports.ImClient = exports.sleep = exports.State = void 0;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ByteBuffer_1 = require(\"../codec/ByteBuffer\");\r\nvar LoginPack_1 = require(\"../pack/LoginPack\");\r\nvar WebToolkit_1 = require(\"../common/WebToolkit\");\r\nvar websocket_1 = require(\"websocket\");\r\nvar RequestBase_1 = require(\"../model/RequestBase\");\r\nvar RequestParams_1 = require(\"../model/RequestParams\");\r\nvar HttpApi_1 = require(\"./HttpApi\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Command_1 = require(\"../common/Command\");\r\nvar MessagePack_1 = require(\"../pack/MessagePack\");\r\nvar loginTimeout = 10 * 1000; // 10 seconds\r\nvar heartbeatInterval = 10 * 1000; // seconds\r\nvar firstMonitorSocket = false; // 第一次监听socket\r\nvar State;\r\n(function (State) {\r\n State[State[\"INIT\"] = 0] = \"INIT\";\r\n State[State[\"CONNECTING\"] = 1] = \"CONNECTING\";\r\n State[State[\"CONNECTED\"] = 2] = \"CONNECTED\";\r\n State[State[\"RECONNECTING\"] = 3] = \"RECONNECTING\";\r\n State[State[\"CLOSEING\"] = 4] = \"CLOSEING\";\r\n State[State[\"CLOSED\"] = 5] = \"CLOSED\";\r\n})(State = exports.State || (exports.State = {}));\r\nvar TimeUnit;\r\n(function (TimeUnit) {\r\n TimeUnit[TimeUnit[\"Second\"] = 1000] = \"Second\";\r\n TimeUnit[TimeUnit[\"Millisecond\"] = 1] = \"Millisecond\";\r\n})(TimeUnit || (TimeUnit = {}));\r\nexports.sleep = function (second, Unit) {\r\n if (Unit === void 0) { Unit = TimeUnit.Second; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n setTimeout(function () {\r\n resolve();\r\n }, second * Unit);\r\n })];\r\n });\r\n });\r\n};\r\nvar ImClient = /** @class */ (function () {\r\n function ImClient() {\r\n this.url = \"\";\r\n this.version = 1;\r\n this.clientType = 1;\r\n this.listeners = null;\r\n this.state = State.INIT;\r\n this.lastOfflineMessageSequence = 0;\r\n this.offlineMessageList = new Array();\r\n this.httpUrl = \"\"; //http://127.0.0.1:8000/v1\r\n }\r\n ImClient.prototype.getRequestBase = function () {\r\n return new RequestBase_1.RequestBase(this.appId, this.clientType, this.imei);\r\n };\r\n ImClient.prototype.isInit = function () {\r\n return this.state == State.CONNECTED;\r\n };\r\n ImClient.prototype.getRequestParams = function () {\r\n return new RequestParams_1.RequestParams(this.appId, this.userId, this.userSign);\r\n };\r\n ImClient.prototype.init = function (httpUrl, appId, userId, userSign, listeners, callback) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var self, api, resp, ip, port, req, _a, success, err, conn;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n self = this;\r\n self.httpUrl = httpUrl;\r\n self.appId = appId;\r\n self.listeners = listeners;\r\n self.imei = WebToolkit_1[\"default\"].getDeviceInfo().system;\r\n self.imeiLength = exports.getLen(self.imei);\r\n self.userId = userId;\r\n this.userSign = userSign;\r\n this.imeiLength = self.imeiLength;\r\n if (!utils_1[\"default\"].isEmpty(this.url)) return [3 /*break*/, 2];\r\n Logger_1[\"default\"].info(\"获取im地址\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/user/login\", {}, { clientType: this.clientType, appId: this.appId, userId: this.userId })\r\n // console.log(resp)\r\n ];\r\n case 1:\r\n resp = _b.sent();\r\n // console.log(resp)\r\n if (resp.isFailed()) {\r\n Logger_1[\"default\"].info(\"登录失败:获取im地址失败\");\r\n return [2 /*return*/];\r\n }\r\n ip = resp.data.ip;\r\n port = resp.data.port;\r\n this.url = \"ws://\" + ip + \":\" + port + \"/ws\";\r\n _b.label = 2;\r\n case 2:\r\n req = new LoginPack_1.LoginPack(self.appId, self.userId, 1);\r\n return [4 /*yield*/, exports.limLogin(self.url, req, self)];\r\n case 3:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (!firstMonitorSocket) {\r\n firstMonitorSocket = true;\r\n }\r\n //登录成功以后操作\r\n conn.onerror = function (error) {\r\n Logger_1[\"default\"].info(\"websocket error: \", error);\r\n // 加入socket 连接事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketErrorEvent(error);\r\n }\r\n //异步方法,自动重连\r\n _this.errorHandler(error, req);\r\n };\r\n conn.onclose = function (e) {\r\n Logger_1[\"default\"].info(\"event[onclose] fired\");\r\n if (self.state == State.CLOSEING) {\r\n _this.onclose(\"logout\");\r\n return;\r\n }\r\n // socket断开事件 连接事件\r\n if (typeof exports.imClient.listeners.onSocketCloseEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n // 异步方法 自动重连\r\n _this.errorHandler(new Error(e.reason), req);\r\n };\r\n conn.onmessage = function (evt) {\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0]; //解析command\r\n var bodyLen = byteBuffer[1]; //解析bodylen\r\n var unpack = bytebuf.vstring(null, bodyLen).unpack(); //解析出字符串\r\n var msgBody = unpack[2];\r\n console.log(\"sdk收到服务端数据 command:\" + command);\r\n console.log(\"sdk收到服务端数据:\" + msgBody);\r\n if (command === Command_1.MessageCommand.MSG_P2P) {\r\n //单聊消息收发\r\n if (typeof exports.imClient.listeners.onP2PMessage === 'function') {\r\n exports.imClient.listeners.onP2PMessage(msgBody);\r\n }\r\n }\r\n else {\r\n if (typeof exports.imClient.listeners.onTestMessage === 'function') {\r\n exports.imClient.listeners.onTestMessage(msgBody);\r\n }\r\n }\r\n };\r\n this.conn = conn;\r\n this.state = State.CONNECTED;\r\n //拉取离线消息\r\n this.loadOfflineMessage();\r\n //心跳包\r\n this.heartbeatLoop(this.conn);\r\n if (typeof exports.imClient.listeners.onLogin === 'function') {\r\n exports.imClient.listeners.onLogin(this.userId);\r\n }\r\n callback(self);\r\n }\r\n else {\r\n Logger_1[\"default\"].error(err === null || err === void 0 ? void 0 : err.message);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n ImClient.prototype.buildMessagePack = function (command, messagePack) {\r\n var jsonData = JSON.stringify(messagePack);\r\n // console.log(\"=============buildMessagePack=========\")\r\n // log.info(jsonData);\r\n var bodyLen = exports.getLen(jsonData);\r\n var pack = new ByteBuffer_1[\"default\"](null, 0);\r\n pack.int32(command).int32(this.version).int32(this.clientType)\r\n .int32(0x0)\r\n .int32(this.appId)\r\n .int32(this.imeiLength)\r\n .int32(bodyLen)\r\n .vstring(this.imei, this.imeiLength)\r\n .vstring(jsonData, bodyLen);\r\n return pack;\r\n };\r\n // 4. 自动重连\r\n ImClient.prototype.errorHandler = function (error, req) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var index, _a, success, err, conn, error_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n // 如果是主动断开连接,就没有必要自动重连\r\n // 比如收到被踢,或者主动调用logout()方法\r\n if (this.state == State.CLOSED || this.state == State.CLOSEING) {\r\n return [2 /*return*/];\r\n }\r\n this.state = State.RECONNECTING;\r\n if (typeof exports.imClient.listeners.onSocketReConnectEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectEvent();\r\n }\r\n index = 0;\r\n _b.label = 1;\r\n case 1:\r\n if (!(index < 10)) return [3 /*break*/, 7];\r\n return [4 /*yield*/, exports.sleep(3)];\r\n case 2:\r\n _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n Logger_1[\"default\"].info(\"try to relogin\");\r\n return [4 /*yield*/, exports.limLogin(this.url, req, this)];\r\n case 4:\r\n _a = _b.sent(), success = _a.success, err = _a.err, conn = _a.conn;\r\n if (success) {\r\n if (typeof exports.imClient.listeners.onSocketReConnectSuccessEvent === 'function') {\r\n exports.imClient.listeners.onSocketReConnectSuccessEvent();\r\n }\r\n return [2 /*return*/];\r\n }\r\n Logger_1[\"default\"].info(err);\r\n return [3 /*break*/, 6];\r\n case 5:\r\n error_1 = _b.sent();\r\n Logger_1[\"default\"].info(error_1);\r\n return [3 /*break*/, 6];\r\n case 6:\r\n index++;\r\n return [3 /*break*/, 1];\r\n case 7:\r\n this.onclose(\"reconnect timeout\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // 表示连接中止\r\n ImClient.prototype.onclose = function (reason) {\r\n if (this.state == State.CLOSED) {\r\n return;\r\n }\r\n this.state = State.CLOSED;\r\n Logger_1[\"default\"].info(\"connection closed due to \" + reason);\r\n this.conn = undefined;\r\n this.userId = \"\";\r\n // 加入socket 关闭事件\r\n if (typeof exports.imClient.listeners.onSocketErrorEvent === 'function') {\r\n exports.imClient.listeners.onSocketCloseEvent();\r\n }\r\n };\r\n ImClient.prototype.getSingleUserInfo = function (uid) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getSingleUserInfo\", _this.getRequestParams(), { userId: uid });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.syncGetUserInfo = function (userId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp;\r\n return __generator(this, function (_a) {\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n resp = api.call(\"/user/data/getUserInfo\", this.getRequestParams(), { userIds: userId });\r\n return [2 /*return*/, resp];\r\n });\r\n });\r\n };\r\n ImClient.prototype.getUserInfo = function (userId) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/data/getUserInfo\", _this.getRequestParams(), { userIds: userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getAllFriend = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/friendship/getAllFriendShip\", _this.getRequestParams(), { fromId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserSequence = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/user/getUserSequence\", _this.getRequestParams(), { userId: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n ImClient.prototype.getUserConversationList = function (lastSequence) {\r\n var _this = this;\r\n return new Promise(function (resolve, _) {\r\n var api = new HttpApi_1[\"default\"](_this.httpUrl);\r\n var resp = api.call(\"/conversation/syncConversationList\", _this.getRequestParams(), { userId: _this.userId, appId: _this.appId, maxLimit: 100, lastSequence: lastSequence, operater: _this.userId });\r\n resolve(resp);\r\n });\r\n };\r\n // 2、心跳\r\n ImClient.prototype.heartbeatLoop = function (conn) {\r\n var _this = this;\r\n var start = Date.now();\r\n var loop = function () {\r\n if (_this.state != State.CONNECTED) {\r\n Logger_1[\"default\"].error(\"heartbeatLoop exited\");\r\n return;\r\n }\r\n if (Date.now() - start >= heartbeatInterval) {\r\n // log.info(`>>> send ping ;`)\r\n start = Date.now();\r\n var pingPack = exports.imClient.buildMessagePack(Command_1.SystemCommand.PING, {});\r\n conn.send(pingPack.pack(false));\r\n }\r\n setTimeout(loop, 500);\r\n };\r\n setTimeout(loop, 500);\r\n };\r\n //构建单聊消息对象\r\n ImClient.prototype.createP2PTextMessage = function (to, text) {\r\n var messagePack = new MessagePack_1.MessagePack(this.appId);\r\n messagePack.buildTextMessagePack(this.userId, to, text);\r\n return messagePack;\r\n };\r\n ImClient.prototype.sendP2PMessage = function (pack) {\r\n var p2pPack = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_P2P, pack);\r\n if (this.conn) {\r\n this.conn.send(p2pPack.pack(false));\r\n }\r\n };\r\n // 消息接收ack\r\n ImClient.prototype.sendP2PMessageReciveAck = function (rAck) {\r\n console.log(\"=============== sendP2PMessageReciveAck\");\r\n console.log(rAck);\r\n rAck.toId = rAck.fromId;\r\n rAck.fromId = this.userId;\r\n console.log(rAck);\r\n var p2pPack_1107 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_RECIVE_ACK, rAck);\r\n rAck.conversationType = 0;\r\n var p2pPack_1106 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED, rAck);\r\n var p2pPack_1054 = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED_RECEIPT, rAck);\r\n if (this.conn) {\r\n // console.log(\"=============== sendP2PMessageReciveAck 正式开始消息接收ack\")\r\n this.conn.send(p2pPack_1107.pack(false));\r\n this.conn.send(p2pPack_1106.pack(false));\r\n this.conn.send(p2pPack_1054.pack(false));\r\n }\r\n };\r\n // 消息已读回执,给原消息发送方 1054\r\n ImClient.prototype.sendP2PMessageReadedReceipt = function (rAck) {\r\n console.log(\"=============== sendP2PMessageReadedRECEIPT\");\r\n console.log(rAck);\r\n rAck.toId = rAck.fromId;\r\n rAck.fromId = this.userId;\r\n console.log(rAck);\r\n var p2pPack = exports.imClient.buildMessagePack(Command_1.MessageCommand.MSG_READED_RECEIPT, rAck);\r\n if (this.conn) {\r\n console.log(\"=============== sendP2PMessageReadedRECEIPT 正式开始发送已读回执\");\r\n this.conn.send(p2pPack.pack(false));\r\n }\r\n };\r\n ImClient.prototype.getUserId = function () {\r\n return this.userId;\r\n };\r\n //拉取离线信息记录 \r\n ImClient.prototype.loadOfflineMessage = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var api, resp, offmessages;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Logger_1[\"default\"].info(\"loadOfflineMessage start\");\r\n api = new HttpApi_1[\"default\"](this.httpUrl);\r\n return [4 /*yield*/, api.call(\"/message/syncOfflineMessage\", this.getRequestParams(), { clientType: this.clientType, operater: this.userId, appId: this.appId, lastSequence: this.lastOfflineMessageSequence, maxLimit: 100 })];\r\n case 1:\r\n resp = _a.sent();\r\n if (resp.isSucceed()) {\r\n this.lastOfflineMessageSequence = resp.data.maxSequence;\r\n offmessages = resp.data.dataList;\r\n this.offlineMessageList.push(offmessages);\r\n if (offmessages.length > 0 && typeof exports.imClient.listeners.onOfflineMessage === 'function') {\r\n exports.imClient.listeners.onOfflineMessage(offmessages);\r\n }\r\n console.log(resp.data.completed);\r\n if (!resp.data.completed) {\r\n this.loadOfflineMessage();\r\n }\r\n }\r\n else {\r\n Logger_1[\"default\"].error(\"loadOfflineMessage - error\");\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return ImClient;\r\n}());\r\nexports.ImClient = ImClient;\r\nexports.limLogin = function (url, req, imClient) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, _) {\r\n var conn = new websocket_1.w3cwebsocket(url);\r\n conn.binaryType = \"arraybuffer\";\r\n Logger_1[\"default\"].info(\"limLogin\");\r\n // 设置一个登陆超时器\r\n var tr = setTimeout(function () {\r\n clearTimeout(tr);\r\n resolve({ success: false, err: new Error(\"timeout\"), conn: conn });\r\n }, loginTimeout);\r\n conn.onopen = function () {\r\n if (conn.readyState == websocket_1.w3cwebsocket.OPEN) {\r\n // 加入socket 连接事件\r\n if (typeof imClient.listeners.onSocketConnectEvent === 'function') {\r\n imClient.listeners.onSocketConnectEvent(url, req);\r\n }\r\n Logger_1[\"default\"].info(\"\\u5F00\\u542F\\u8FDE\\u63A5\");\r\n //登录数据包\r\n var data = {\r\n \"userId\": req.userId\r\n };\r\n var loginPack = imClient.buildMessagePack(0x2328, data);\r\n conn.send(loginPack.pack(false));\r\n }\r\n };\r\n conn.onerror = function (error) {\r\n clearTimeout(tr);\r\n Logger_1[\"default\"].error(error);\r\n resolve({ success: false, err: error, conn: conn });\r\n };\r\n conn.onmessage = function (evt) {\r\n if (typeof evt.data === 'string') {\r\n Logger_1[\"default\"].info(\"Received: '\" + evt.data + \"'\");\r\n return;\r\n }\r\n clearTimeout(tr);\r\n var bytebuf = new ByteBuffer_1[\"default\"](evt.data);\r\n var byteBuffer = bytebuf.int32().int32().unpack();\r\n var command = byteBuffer[0];\r\n var bodyLen = byteBuffer[1];\r\n if (command == 0x2329) {\r\n resolve({ success: true, conn: conn });\r\n }\r\n };\r\n })];\r\n });\r\n}); };\r\nexports.getLen = function (str) {\r\n var len = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n //单字节加1\r\n if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {\r\n len++;\r\n }\r\n else {\r\n len += 3;\r\n }\r\n }\r\n return len;\r\n};\r\nexports.imClient = new ImClient();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\n/**\r\n * 返回平台所用的 fetch 工具\r\n * */\r\nvar Fetch = /** @class */ (function () {\r\n function Fetch() {\r\n }\r\n Fetch.getFetchToolkit = function () {\r\n var httpFetch;\r\n // @ts-ignore\r\n if (typeof global.fetch !== 'undefined' && typeof global.fetch === 'function') {\r\n // @ts-ignore\r\n httpFetch = global.fetch;\r\n }\r\n else if (typeof fetch === 'function') {\r\n httpFetch = fetch; // RN FETCH\r\n }\r\n else {\r\n var uniFetch = require(\"../uniapp/http/uni-fetch\");\r\n httpFetch = uniFetch.fetch;\r\n }\r\n return httpFetch;\r\n };\r\n return Fetch;\r\n}());\r\nexports[\"default\"] = Fetch;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.im = void 0;\r\nvar ImClient_1 = require(\"./lim/core/ImClient\");\r\nexports.im = ImClient_1.imClient;\r\n// if(typeof window !== 'undefined'){\r\n// console.log(\"window\");\r\n// }\r\n// if(typeof global !== 'undefined'){\r\n// console.log(\"global\");\r\n// }\r\n// @ts-ignore\r\nif (typeof uni !== 'undefined') {\r\n // console.log(\"uni\");\r\n // @ts-ignore\r\n uni['im'] = ImClient_1.imClient;\r\n // @ts-ignore\r\n // uni['im_webtoolkit'] = WebToolkit;\r\n}\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ByteBuffer = /** @class */ (function () {\r\n function ByteBuffer(arrayBuf, offset) {\r\n this.Type_Byte = 1;\r\n this.Type_Short = 2;\r\n this.Type_UShort = 3;\r\n this.Type_Int32 = 4;\r\n this.Type_UInt32 = 5;\r\n this.Type_String = 6; //变长字符串,前两个字节表示长度\r\n this.Type_VString = 7; //定长字符串\r\n this.Type_Int64 = 8;\r\n this.Type_Float = 9;\r\n this.Type_Double = 10;\r\n this.Type_ByteArray = 11;\r\n this._offset = 0;\r\n this._list = [];\r\n this._littleEndian = false;\r\n this._org_buf = arrayBuf ? (arrayBuf.constructor == DataView ? arrayBuf\r\n : (arrayBuf.constructor == Uint8Array ? new DataView(arrayBuf.buffer, offset) : new DataView(arrayBuf, offset))) : new DataView(new Uint8Array([]).buffer);\r\n this.arrayBuf = arrayBuf;\r\n this.offset = offset;\r\n // if (!ArrayBuffer.prototype.slice) {\r\n // ArrayBuffer.prototype.slice = function (start, end) {\r\n // var that = new Uint8Array(this);\r\n // if (end == undefined) end = that.length;\r\n // var result = new ArrayBuffer(end - start);\r\n // var resultArray = new Uint8Array(result);\r\n // for (var i = 0; i < resultArray.length; i++)\r\n // resultArray[i] = that[i + start];\r\n // return result;\r\n // }\r\n // }\r\n }\r\n //指定字节序 为BigEndian\r\n ByteBuffer.prototype.bigEndian = function () {\r\n this._littleEndian = false;\r\n return this;\r\n };\r\n ;\r\n //指定字节序 为LittleEndian\r\n ByteBuffer.prototype.littleEndianfunction = function () {\r\n this._littleEndian = true;\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Write = function (view, offset, str) {\r\n var c = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n view.setUint8(offset++, c);\r\n }\r\n else if (c < 0x800) {\r\n view.setUint8(offset++, 0xc0 | (c >> 6));\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n view.setUint8(offset++, 0xe0 | (c >> 12));\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n else {\r\n i++;\r\n c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff));\r\n view.setUint8(offset++, 0xf0 | (c >> 18));\r\n view.setUint8(offset++, 0x80 | (c >> 12) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c >> 6) & 0x3f);\r\n view.setUint8(offset++, 0x80 | (c & 0x3f));\r\n }\r\n }\r\n };\r\n // byte (val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint8(this._offset, this._littleEndian));\r\n // this._offset += 1;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 1;\r\n // }\r\n // return this;\r\n // };\r\n // short(val:number, index:number) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getInt16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // this._list.splice(index != undefined ? index : this._list.length, 0, this.Type_Short);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n // ushort(val, index) {\r\n // if (arguments.length == 0) {\r\n // this._list.push(this._org_buf.getUint16(this._offset, this._littleEndian));\r\n // this._offset += 2;\r\n // } else {\r\n // // , {t: this.Type_UShort, d: val, l: 2}\r\n // this._list.splice(index != undefined ? index : this._list.length, 0);\r\n // this._offset += 2;\r\n // }\r\n // return this;\r\n // };\r\n ByteBuffer.prototype.int32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getInt32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.uint32 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getUint32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_UInt32, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 新加的方法,获取bytebuffer的长度\r\n */\r\n ByteBuffer.prototype.blength = function () {\r\n return this._offset;\r\n };\r\n ;\r\n /**\r\n * 变长字符串 前4个字节表示字符串长度\r\n **/\r\n ByteBuffer.prototype.string = function (val, index) {\r\n if (arguments.length == 0) {\r\n var len = this._org_buf.getInt32(this._offset, this._littleEndian);\r\n this._offset += 4;\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, len));\r\n this._offset += len;\r\n }\r\n else {\r\n var len = 0;\r\n if (val) {\r\n len = this.utf8Length(val);\r\n }\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_String, d: val, l: len });\r\n this._offset += len + 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.utf8Length = function (str) {\r\n var c = 0, length = 0;\r\n for (var i = 0, l = str.length; i < l; i++) {\r\n c = str.charCodeAt(i);\r\n if (c < 0x80) {\r\n length += 1;\r\n }\r\n else if (c < 0x800) {\r\n length += 2;\r\n }\r\n else if (c < 0xd800 || c >= 0xe000) {\r\n length += 3;\r\n }\r\n else {\r\n i++;\r\n length += 4;\r\n }\r\n }\r\n return length;\r\n };\r\n ByteBuffer.prototype.utf8Read = function (view, offset, length) {\r\n var string = '', chr = 0;\r\n for (var i = offset, end = offset + length; i < end; i++) {\r\n var byte = view.getUint8(i);\r\n if ((byte & 0x80) === 0x00) {\r\n string += String.fromCharCode(byte);\r\n continue;\r\n }\r\n if ((byte & 0xe0) === 0xc0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 6) |\r\n (view.getUint8(++i) & 0x3f));\r\n continue;\r\n }\r\n if ((byte & 0xf0) === 0xe0) {\r\n string += String.fromCharCode(((byte & 0x0f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0));\r\n continue;\r\n }\r\n if ((byte & 0xf8) === 0xf0) {\r\n chr = ((byte & 0x07) << 18) |\r\n ((view.getUint8(++i) & 0x3f) << 12) |\r\n ((view.getUint8(++i) & 0x3f) << 6) |\r\n ((view.getUint8(++i) & 0x3f) << 0);\r\n if (chr >= 0x010000) { // surrogate pair\r\n chr -= 0x010000;\r\n string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\r\n }\r\n else {\r\n string += String.fromCharCode(chr);\r\n }\r\n continue;\r\n }\r\n throw new Error('Invalid byte ' + byte.toString(16));\r\n }\r\n return string;\r\n };\r\n /**\r\n * 定长字符串 val为null时,读取定长字符串(需指定长度len)\r\n **/\r\n ByteBuffer.prototype.vstring = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('vstring must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var vlen = 0; //实际长度\r\n for (var i = this._offset; i < this._offset + len; i++) {\r\n if (this._org_buf.getUint8(i) > 0)\r\n vlen++;\r\n }\r\n this._list.push(this.utf8Read(this._org_buf, this._offset, vlen));\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_VString, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.int64 = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Int64, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.float = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat32(this._offset, this._littleEndian));\r\n this._offset += 4;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Float, d: val, l: 4 });\r\n this._offset += 4;\r\n }\r\n return this;\r\n };\r\n ;\r\n ByteBuffer.prototype.double = function (val, index) {\r\n if (arguments.length == 0) {\r\n this._list.push(this._org_buf.getFloat64(this._offset, this._littleEndian));\r\n this._offset += 8;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_Double, d: val, l: 8 });\r\n this._offset += 8;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 写入或读取一段字节数组\r\n **/\r\n ByteBuffer.prototype.byteArray = function (val, len, index) {\r\n if (!len) {\r\n throw new Error('byteArray must got len argument');\r\n return this;\r\n }\r\n if (val == undefined || val == null) {\r\n var arr = new Uint8Array(this._org_buf.buffer.slice(this._offset, this._offset + len));\r\n this._list.push(arr);\r\n this._offset += len;\r\n }\r\n else {\r\n this._list.splice(index != undefined ? index : this._list.length, 0, { t: this.Type_ByteArray, d: val, l: len });\r\n this._offset += len;\r\n }\r\n return this;\r\n };\r\n ;\r\n /**\r\n * 解包成数据数组\r\n **/\r\n ByteBuffer.prototype.unpack = function () {\r\n return this._list;\r\n };\r\n ;\r\n /**\r\n * 打包成二进制,在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.packWithHead = function () {\r\n return this.pack(true);\r\n };\r\n ;\r\n /**\r\n * 打包成二进制\r\n * @param ifHead 是否在前面加上4个字节表示包长\r\n **/\r\n ByteBuffer.prototype.pack = function (ifHead) {\r\n this._org_buf = new DataView(new ArrayBuffer((ifHead) ? this._offset + 4 : this._offset));\r\n var offset = 0;\r\n if (ifHead) {\r\n this._org_buf.setUint32(offset, this._offset, this._littleEndian);\r\n offset += 4;\r\n }\r\n for (var i = 0; i < this._list.length; i++) {\r\n switch (this._list[i].t) {\r\n case this.Type_Byte:\r\n this._org_buf.setInt8(offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Short:\r\n this._org_buf.setInt16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UShort:\r\n this._org_buf.setUint16(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int32:\r\n this._org_buf.setInt32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_UInt32:\r\n this._org_buf.setUint32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_String:\r\n //前4个字节表示字符串长度\r\n this._org_buf.setUint32(offset, this._list[i].l, this._littleEndian);\r\n offset += 4;\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_VString:\r\n this.utf8Write(this._org_buf, offset, this._list[i].d);\r\n var vlen = this.utf8Length(this._list[i].d); //字符串实际长度\r\n //补齐\\0\r\n for (var j = offset + vlen; j < offset + this._list[i].l; j++) {\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Int64:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Float:\r\n this._org_buf.setFloat32(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_Double:\r\n this._org_buf.setFloat64(offset, this._list[i].d, this._littleEndian);\r\n offset += this._list[i].l;\r\n break;\r\n case this.Type_ByteArray:\r\n var indx = 0;\r\n for (var j = offset; j < offset + this._list[i].l; j++) {\r\n if (indx < this._list[i].d.length) {\r\n this._org_buf.setUint8(j, this._list[i].d[indx]);\r\n }\r\n else { //不够的话,后面补齐0x00\r\n this._org_buf.setUint8(j, 0);\r\n }\r\n indx++;\r\n }\r\n offset += this._list[i].l;\r\n break;\r\n }\r\n }\r\n return this._org_buf.buffer;\r\n };\r\n ;\r\n /**\r\n * 未读数据长度\r\n **/\r\n ByteBuffer.prototype.getAvailable = function () {\r\n if (!this._org_buf)\r\n return this._offset;\r\n return this._org_buf.buffer.byteLength - this._offset;\r\n };\r\n ;\r\n return ByteBuffer;\r\n}());\r\nexports[\"default\"] = ByteBuffer;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.LoginPack = void 0;\r\nvar LoginPack = /** @class */ (function () {\r\n function LoginPack(appId, userId, clientType) {\r\n this.userId = userId;\r\n this.clientType = clientType;\r\n this.appId = appId;\r\n }\r\n return LoginPack;\r\n}());\r\nexports.LoginPack = LoginPack;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar Base64 = {\r\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\r\n encode: function (e) {\r\n var t = \"\";\r\n var n, r, i, s, o, u, a;\r\n var f = 0;\r\n e = Base64._utf8_encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n }\r\n else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n var t = \"\";\r\n var n, r, i;\r\n var s, o, u, a;\r\n var f = 0;\r\n e = e.replace(/[^A-Za-z0-9+/=]/g, \"\");\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u != 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a != 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8_decode(t);\r\n return t;\r\n },\r\n _utf8_encode: function (e) {\r\n e = e.replace(/rn/g, \"n\");\r\n var t = \"\";\r\n for (var n = 0; n < e.length; n++) {\r\n var r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n }\r\n else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8_decode: function (e) {\r\n var t = \"\";\r\n var n = 0;\r\n var r = 0;\r\n var c1 = 0;\r\n var c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n }\r\n else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n }\r\n else {\r\n c2 = e.charCodeAt(n + 1);\r\n var c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\nvar WebToolkit = /** @class */ (function () {\r\n function WebToolkit() {\r\n }\r\n // 获取浏览器信息\r\n WebToolkit.getBrowserInfo = function () {\r\n var agent = navigator.userAgent.toLowerCase();\r\n var system = agent.split(\" \")[1].split(\" \")[0].split(\"(\")[1];\r\n var REGSTR_EDGE = /edge\\/[\\d.]+/gi;\r\n var REGSTR_IE = /trident\\/[\\d.]+/gi;\r\n var OLD_IE = /msie\\s[\\d.]+/gi;\r\n var REGSTR_FF = /firefox\\/[\\d.]+/gi;\r\n var REGSTR_CHROME = /chrome\\/[\\d.]+/gi;\r\n var REGSTR_SAF = /safari\\/[\\d.]+/gi;\r\n var REGSTR_OPERA = /opr\\/[\\d.]+/gi;\r\n var info = {\r\n code: 0,\r\n system: system,\r\n browser: \"\",\r\n browserVersion: \"\"\r\n };\r\n // IE\r\n if (agent.indexOf(\"trident\") > 0) {\r\n info.browser = agent.match(REGSTR_IE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_IE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // OLD_IE\r\n if (agent.indexOf(\"msie\") > 0) {\r\n info.browser = agent.match(OLD_IE)[0].split(\" \")[0];\r\n info.browserVersion = agent.match(OLD_IE)[0].split(\" \")[1];\r\n return info;\r\n }\r\n // Edge\r\n if (agent.indexOf(\"edge\") > 0) {\r\n info.browser = agent.match(REGSTR_EDGE)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_EDGE)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // firefox\r\n if (agent.indexOf(\"firefox\") > 0) {\r\n info.browser = agent.match(REGSTR_FF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_FF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Opera\r\n if (agent.indexOf(\"opr\") > 0) {\r\n info.browser = agent.match(REGSTR_OPERA)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_OPERA)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Safari\r\n if (agent.indexOf(\"safari\") > 0 && agent.indexOf(\"chrome\") < 0) {\r\n info.browser = agent.match(REGSTR_SAF)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_SAF)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n // Chrome\r\n if (agent.indexOf(\"chrome\") > 0) {\r\n info.browser = agent.match(REGSTR_CHROME)[0].split(\"/\")[0];\r\n info.browserVersion = agent.match(REGSTR_CHROME)[0].split(\"/\")[1];\r\n return info;\r\n }\r\n else {\r\n info.code = -1;\r\n return info;\r\n }\r\n };\r\n // TODO: 获取小程序设备信息\r\n WebToolkit.getWxappInfo = function () {\r\n return {\r\n system: 'WXAPP',\r\n browser: 'WXAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取ReactNative设备信息\r\n WebToolkit.getReactNativeInfo = function () {\r\n return {\r\n system: 'RNNative',\r\n browser: 'RNNative',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // TODO: 获取UniApp设备信息\r\n WebToolkit.getUniAppInfo = function () {\r\n return {\r\n system: 'UNIAPP',\r\n browser: 'UNIAPP',\r\n browserVersion: '1.0'\r\n };\r\n };\r\n // 动态加入script 到head 标签处\r\n WebToolkit.loadJS = function (url, callback) {\r\n var script = document.createElement('script'), fn = callback || function () { };\r\n script.type = 'text/javascript';\r\n // document.getElementsByTagName('head')[0].children[16].outerHTML.indexOf('http://pv.sohu.com/cityjson?ie=utf-8')\r\n var exist = false;\r\n for (var v in document.getElementsByTagName('head')[0].children) {\r\n var dom = document.getElementsByTagName('head')[0].children[v];\r\n if (dom.outerHTML !== undefined && dom.outerHTML.indexOf(url) >= 0) {\r\n exist = true;\r\n }\r\n }\r\n if (exist) {\r\n fn();\r\n return;\r\n }\r\n //IE\r\n if (script.readyState) {\r\n script.onreadystatechange = function () {\r\n if (script.readyState == 'loaded' || script.readyState == 'complete') {\r\n script.onreadystatechange = null;\r\n fn();\r\n }\r\n };\r\n }\r\n else {\r\n //其他浏览器\r\n script.onload = function () {\r\n fn();\r\n };\r\n }\r\n script.src = url;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n };\r\n // 获取当前ip信息(fetch方式)\r\n WebToolkit.getIpInfoByFetch = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n var fetch = Fetch_1[\"default\"].getFetchToolkit();\r\n var request = { method: \"GET\", mode: \"cors\", headers: { \"Content-Type\": \"application/json\" } };\r\n return fetch(url, request).then(function (response) {\r\n return response.text();\r\n }).then(function (res) {\r\n if (typeof callback === 'function') {\r\n var currentCity = eval('_current_city=' + res.replace('var returnCitySN = ', ''));\r\n callback(currentCity);\r\n }\r\n })[\"catch\"](function (e) {\r\n Logger_1[\"default\"].trace(e);\r\n });\r\n };\r\n // 获取当前ip信息(动态插入script脚本方式)\r\n WebToolkit.getIpInfoByInsertScript = function (callback) {\r\n var url = 'http://pv.sohu.com/cityjson?ie=utf-8';\r\n WebToolkit.loadJS(url, function () {\r\n callback(window['returnCitySN']);\r\n });\r\n };\r\n WebToolkit.getIpInfo = function (callback) {\r\n // 小程序的情况需要把pv.sohu.com域名加入白名单中\r\n WebToolkit.getIpInfoByFetch(callback);\r\n };\r\n // 获取客户端设备信息\r\n WebToolkit.getDeviceInfo = function () {\r\n var deviceInfo = WebToolkit.getUniAppInfo();\r\n return deviceInfo;\r\n };\r\n WebToolkit.base64Encode = function (str) {\r\n return Base64.encode(str);\r\n };\r\n WebToolkit.base64Decode = function (str) {\r\n return Base64.decode(str);\r\n };\r\n return WebToolkit;\r\n}());\r\nexports[\"default\"] = WebToolkit;\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var global =\r\n (typeof globalThis !== 'undefined' && globalThis) ||\r\n (typeof self !== 'undefined' && self) ||\r\n (typeof global !== 'undefined' && global)\r\n\r\nvar support = {\r\n searchParams: 'URLSearchParams' in global,\r\n iterable: 'Symbol' in global && 'iterator' in Symbol,\r\n blob:\r\n 'FileReader' in global &&\r\n 'Blob' in global &&\r\n (function() {\r\n try {\r\n new Blob()\r\n return true\r\n } catch (e) {\r\n return false\r\n }\r\n })(),\r\n formData: 'FormData' in global,\r\n arrayBuffer: 'ArrayBuffer' in global\r\n}\r\n\r\nfunction isDataView(obj) {\r\n return obj && DataView.prototype.isPrototypeOf(obj)\r\n}\r\n\r\nif (support.arrayBuffer) {\r\n var viewClasses = [\r\n '[object Int8Array]',\r\n '[object Uint8Array]',\r\n '[object Uint8ClampedArray]',\r\n '[object Int16Array]',\r\n '[object Uint16Array]',\r\n '[object Int32Array]',\r\n '[object Uint32Array]',\r\n '[object Float32Array]',\r\n '[object Float64Array]'\r\n ]\r\n\r\n var isArrayBufferView =\r\n ArrayBuffer.isView ||\r\n function(obj) {\r\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\r\n }\r\n}\r\n\r\nfunction normalizeName(name) {\r\n if (typeof name !== 'string') {\r\n name = String(name)\r\n }\r\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\r\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\r\n }\r\n // return name.toLowerCase()\r\n return name;\r\n}\r\n\r\nfunction normalizeValue(value) {\r\n if (typeof value !== 'string') {\r\n value = String(value)\r\n }\r\n return value\r\n}\r\n\r\n// Build a destructive iterator for the value list\r\nfunction iteratorFor(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift()\r\n return {done: value === undefined, value: value}\r\n }\r\n }\r\n\r\n if (support.iterable) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator\r\n }\r\n }\r\n\r\n return iterator\r\n}\r\n\r\nexport function Headers(headers) {\r\n this.map = {}\r\n\r\n if (headers instanceof Headers) {\r\n headers.forEach(function(value, name) {\r\n this.append(name, value)\r\n }, this)\r\n } else if (Array.isArray(headers)) {\r\n headers.forEach(function(header) {\r\n this.append(header[0], header[1])\r\n }, this)\r\n } else if (headers) {\r\n Object.getOwnPropertyNames(headers).forEach(function(name) {\r\n this.append(name, headers[name])\r\n }, this)\r\n }\r\n}\r\n\r\nHeaders.prototype.append = function(name, value) {\r\n name = normalizeName(name)\r\n value = normalizeValue(value)\r\n var oldValue = this.map[name]\r\n this.map[name] = oldValue ? oldValue + ', ' + value : value\r\n}\r\n\r\nHeaders.prototype['delete'] = function(name) {\r\n delete this.map[normalizeName(name)]\r\n}\r\n\r\nHeaders.prototype.get = function(name) {\r\n name = normalizeName(name)\r\n return this.has(name) ? this.map[name] : null\r\n}\r\n\r\nHeaders.prototype.has = function(name) {\r\n return this.map.hasOwnProperty(normalizeName(name))\r\n}\r\n\r\nHeaders.prototype.set = function(name, value) {\r\n this.map[normalizeName(name)] = normalizeValue(value)\r\n}\r\n\r\nHeaders.prototype.forEach = function(callback, thisArg) {\r\n for (var name in this.map) {\r\n if (this.map.hasOwnProperty(name)) {\r\n callback.call(thisArg, this.map[name], name, this)\r\n }\r\n }\r\n}\r\n\r\nHeaders.prototype.keys = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push(name)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.values = function() {\r\n var items = []\r\n this.forEach(function(value) {\r\n items.push(value)\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nHeaders.prototype.entries = function() {\r\n var items = []\r\n this.forEach(function(value, name) {\r\n items.push([name, value])\r\n })\r\n return iteratorFor(items)\r\n}\r\n\r\nif (support.iterable) {\r\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\r\n}\r\n\r\nfunction consumed(body) {\r\n if (body.bodyUsed) {\r\n return Promise.reject(new TypeError('Already read'))\r\n }\r\n body.bodyUsed = true\r\n}\r\n\r\nfunction fileReaderReady(reader) {\r\n return new Promise(function(resolve, reject) {\r\n reader.onload = function() {\r\n resolve(reader.result)\r\n }\r\n reader.onerror = function() {\r\n reject(reader.error)\r\n }\r\n })\r\n}\r\n\r\nfunction readBlobAsArrayBuffer(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsArrayBuffer(blob)\r\n return promise\r\n}\r\n\r\nfunction readBlobAsText(blob) {\r\n var reader = new FileReader()\r\n var promise = fileReaderReady(reader)\r\n reader.readAsText(blob)\r\n return promise\r\n}\r\n\r\nfunction readArrayBufferAsText(buf) {\r\n var view = new Uint8Array(buf)\r\n var chars = new Array(view.length)\r\n\r\n for (var i = 0; i < view.length; i++) {\r\n chars[i] = String.fromCharCode(view[i])\r\n }\r\n return chars.join('')\r\n}\r\n\r\nfunction bufferClone(buf) {\r\n if (buf.slice) {\r\n return buf.slice(0)\r\n } else {\r\n var view = new Uint8Array(buf.byteLength)\r\n view.set(new Uint8Array(buf))\r\n return view.buffer\r\n }\r\n}\r\n\r\nfunction Body() {\r\n this.bodyUsed = false\r\n\r\n this._initBody = function(body) {\r\n /*\r\n fetch-mock wraps the Response object in an ES6 Proxy to\r\n provide useful test harness features such as flush. However, on\r\n ES5 browsers without fetch or Proxy support pollyfills must be used;\r\n the proxy-pollyfill is unable to proxy an attribute unless it exists\r\n on the object before the Proxy is created. This change ensures\r\n Response.bodyUsed exists on the instance, while maintaining the\r\n semantic of setting Request.bodyUsed in the constructor before\r\n _initBody is called.\r\n */\r\n this.bodyUsed = this.bodyUsed\r\n this._bodyInit = body\r\n if (!body) {\r\n this._bodyText = ''\r\n } else if (typeof body === 'string') {\r\n this._bodyText = body\r\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\r\n this._bodyBlob = body\r\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\r\n this._bodyFormData = body\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this._bodyText = body.toString()\r\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\r\n this._bodyArrayBuffer = bufferClone(body.buffer)\r\n // IE 10-11 can't handle a DataView body.\r\n this._bodyInit = new Blob([this._bodyArrayBuffer])\r\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\r\n this._bodyArrayBuffer = bufferClone(body)\r\n } else {\r\n this._bodyText = body = Object.prototype.toString.call(body)\r\n }\r\n\r\n if (!this.headers.get('Content-Type')) {\r\n if (typeof body === 'string') {\r\n this.headers.set('Content-Type', 'text/plain;charset=UTF-8')\r\n } else if (this._bodyBlob && this._bodyBlob.type) {\r\n this.headers.set('Content-Type', this._bodyBlob.type)\r\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\r\n this.headers.set('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')\r\n }\r\n }\r\n }\r\n\r\n if (support.blob) {\r\n this.blob = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return Promise.resolve(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as blob')\r\n } else {\r\n return Promise.resolve(new Blob([this._bodyText]))\r\n }\r\n }\r\n\r\n this.arrayBuffer = function() {\r\n if (this._bodyArrayBuffer) {\r\n var isConsumed = consumed(this)\r\n if (isConsumed) {\r\n return isConsumed\r\n }\r\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\r\n return Promise.resolve(\r\n this._bodyArrayBuffer.buffer.slice(\r\n this._bodyArrayBuffer.byteOffset,\r\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\r\n )\r\n )\r\n } else {\r\n return Promise.resolve(this._bodyArrayBuffer)\r\n }\r\n } else {\r\n return this.blob().then(readBlobAsArrayBuffer)\r\n }\r\n }\r\n }\r\n\r\n this.text = function() {\r\n var rejected = consumed(this)\r\n if (rejected) {\r\n return rejected\r\n }\r\n\r\n if (this._bodyBlob) {\r\n return readBlobAsText(this._bodyBlob)\r\n } else if (this._bodyArrayBuffer) {\r\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\r\n } else if (this._bodyFormData) {\r\n throw new Error('could not read FormData body as text')\r\n } else {\r\n return Promise.resolve(this._bodyText)\r\n }\r\n }\r\n\r\n if (support.formData) {\r\n this.formData = function() {\r\n return this.text().then(decode)\r\n }\r\n }\r\n\r\n this.json = function() {\r\n return this.text().then(JSON.parse)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// HTTP methods whose capitalization should be normalized\r\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\r\n\r\nfunction normalizeMethod(method) {\r\n var upcased = method.toUpperCase()\r\n return methods.indexOf(upcased) > -1 ? upcased : method\r\n}\r\n\r\nexport function Request(input, options) {\r\n if (!(this instanceof Request)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n\r\n options = options || {}\r\n var body = options.body\r\n\r\n if (input instanceof Request) {\r\n if (input.bodyUsed) {\r\n throw new TypeError('Already read')\r\n }\r\n this.url = input.url\r\n this.credentials = input.credentials\r\n if (!options.headers) {\r\n this.headers = new Headers(input.headers)\r\n }\r\n this.method = input.method\r\n this.mode = input.mode\r\n this.signal = input.signal\r\n if (!body && input._bodyInit != null) {\r\n body = input._bodyInit\r\n input.bodyUsed = true\r\n }\r\n } else {\r\n this.url = String(input)\r\n }\r\n\r\n this.credentials = options.credentials || this.credentials || 'same-origin'\r\n if (options.headers || !this.headers) {\r\n this.headers = new Headers(options.headers)\r\n }\r\n this.method = normalizeMethod(options.method || this.method || 'GET')\r\n this.mode = options.mode || this.mode || null\r\n this.signal = options.signal || this.signal\r\n this.referrer = null\r\n\r\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\r\n throw new TypeError('Body not allowed for GET or HEAD requests')\r\n }\r\n this._initBody(body)\r\n\r\n if (this.method === 'GET' || this.method === 'HEAD') {\r\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\r\n // Search for a '_' parameter in the query string\r\n var reParamSearch = /([?&])_=[^&]*/\r\n if (reParamSearch.test(this.url)) {\r\n // If it already exists then set the value with the current time\r\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\r\n } else {\r\n // Otherwise add a new '_' parameter to the end with the current time\r\n var reQueryString = /\\?/\r\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\r\n }\r\n }\r\n }\r\n}\r\n\r\nRequest.prototype.clone = function() {\r\n return new Request(this, {body: this._bodyInit})\r\n}\r\n\r\nfunction decode(body) {\r\n var form = new FormData()\r\n body\r\n .trim()\r\n .split('&')\r\n .forEach(function(bytes) {\r\n if (bytes) {\r\n var split = bytes.split('=')\r\n var name = split.shift().replace(/\\+/g, ' ')\r\n var value = split.join('=').replace(/\\+/g, ' ')\r\n form.append(decodeURIComponent(name), decodeURIComponent(value))\r\n }\r\n })\r\n return form\r\n}\r\n\r\nfunction parseHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\r\n // https://tools.ietf.org/html/rfc7230#section-3.2\r\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\r\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\r\n // https://github.com/github/fetch/issues/748\r\n // https://github.com/zloirock/core-js/issues/751\r\n preProcessedHeaders\r\n .split('\\r')\r\n .map(function(header) {\r\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\r\n })\r\n .forEach(function(line) {\r\n var parts = line.split(':')\r\n var key = parts.shift().trim()\r\n if (key) {\r\n var value = parts.join(':').trim()\r\n headers.append(key, value)\r\n }\r\n })\r\n return headers\r\n}\r\n\r\nfunction parseUniappHeaders(rawHeaders) {\r\n var headers = new Headers()\r\n for(var key in rawHeaders){\r\n headers.append(key, rawHeaders[key])\r\n }\r\n return headers\r\n}\r\n\r\n\r\nBody.call(Request.prototype)\r\n\r\nexport function Response(bodyInit, options) {\r\n if (!(this instanceof Response)) {\r\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\r\n }\r\n if (!options) {\r\n options = {}\r\n }\r\n\r\n this.type = 'default'\r\n this.status = options.status === undefined ? 200 : options.status\r\n this.ok = this.status >= 200 && this.status < 300\r\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\r\n this.headers = new Headers(options.headers)\r\n this.url = options.url || ''\r\n this._initBody(bodyInit)\r\n}\r\n\r\nBody.call(Response.prototype)\r\n\r\nResponse.prototype.clone = function() {\r\n return new Response(this._bodyInit, {\r\n status: this.status,\r\n statusText: this.statusText,\r\n headers: new Headers(this.headers),\r\n url: this.url\r\n })\r\n}\r\n\r\nResponse.error = function() {\r\n var response = new Response(null, {status: 0, statusText: ''})\r\n response.type = 'error'\r\n return response\r\n}\r\n\r\nvar redirectStatuses = [301, 302, 303, 307, 308]\r\n\r\nResponse.redirect = function(url, status) {\r\n if (redirectStatuses.indexOf(status) === -1) {\r\n throw new RangeError('Invalid status code')\r\n }\r\n\r\n return new Response(null, {status: status, headers: {location: url}})\r\n}\r\n\r\nexport var DOMException = global.DOMException\r\ntry {\r\n new DOMException()\r\n} catch (err) {\r\n DOMException = function(message, name) {\r\n this.message = message\r\n this.name = name\r\n var error = Error(message)\r\n this.stack = error.stack\r\n }\r\n DOMException.prototype = Object.create(Error.prototype)\r\n DOMException.prototype.constructor = DOMException\r\n}\r\n\r\n// 从 whatwg-fetch 项目改写\r\nexport function fetch(input, init) {\r\n return new Promise(function(resolve, reject) {\r\n var request = new Request(input, init)\r\n\r\n if (request.signal && request.signal.aborted) {\r\n return reject(new DOMException('Aborted', 'AbortError'))\r\n }\r\n\r\n function fixUrl(url) {\r\n try {\r\n return url === '' && global.location.href ? global.location.href : url\r\n } catch (e) {\r\n return url\r\n }\r\n }\r\n function isJson(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return true;\r\n }\r\n if (typeof json == \"string\") {\r\n if (typeof JSON.parse(str) == \"object\") {\r\n return true;\r\n }\r\n }\r\n } catch(e) {\r\n }\r\n return false;\r\n }\r\n function toStr(json) {\r\n try {\r\n if (typeof json == \"object\") {\r\n return JSON.stringify(json);\r\n }\r\n if (typeof json == \"string\") {\r\n return json;\r\n }\r\n } catch(e) {\r\n }\r\n return json.toString();\r\n }\r\n\r\n\r\n let rawBody = typeof request._bodyInit === 'undefined' ? null : request._bodyInit;\r\n if(request.headers.hasOwnProperty('Content-Type') && request.headers['Content-Type'].indexOf('application/json') >= 0){\r\n if(request.method.toUpperCase() === 'POST'){\r\n rawBody = JSON.parse(rawBody); // uniapp框架遇到 method = 'POST' 且 Content-Type = 'application/json' 会自动序列化\r\n }\r\n }\r\n const requestTask = uni.request({\r\n url: fixUrl(request.url),\r\n method: request.method,\r\n data: rawBody,\r\n header: request.headers.map,\r\n complete: (resp)=> {\r\n // Logger.info(resp);\r\n if (request.signal) {\r\n request.signal.removeEventListener('abort', abortXhr);\r\n }\r\n if(resp.errMsg.indexOf('fail') >= 0){\r\n setTimeout(function() {\r\n reject(new TypeError('Network request failed'))\r\n }, 0);\r\n return;\r\n }\r\n // if(resp.statusCode !== 200){\r\n // setTimeout(function() {\r\n // reject(new TypeError('Network request failed, statusCode:' + resp.statusCode + \" full text:\" + JSON.stringify(resp.data)))\r\n // }, 0)\r\n // return;\r\n // }\r\n var options = {\r\n status: resp.statusCode,\r\n statusText: resp.data ? toStr(resp.data) : '',\r\n headers: parseUniappHeaders(resp.header || {})\r\n };\r\n options.url = options.headers.get('X-Request-URL')\r\n var body = options.statusText;\r\n setTimeout(function() {\r\n resolve(new Response(body, options))\r\n }, 0)\r\n\r\n }\r\n });\r\n function abortXhr() {\r\n requestTask.abort()\r\n }\r\n if (request.signal) {\r\n request.signal.addEventListener('abort', abortXhr)\r\n }\r\n\r\n })\r\n}\r\n\r\nfetch.polyfill = true\r\n\r\nif (!global.fetch) {\r\n global.fetch = fetch\r\n global.Headers = Headers\r\n global.Request = Request\r\n global.Response = Response\r\n}\r\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestBase = void 0;\r\nvar RequestBase = /** @class */ (function () {\r\n function RequestBase(appId, clientType, imei) {\r\n this.appId = appId;\r\n this.clientType = clientType;\r\n this.imei = imei;\r\n }\r\n return RequestBase;\r\n}());\r\nexports.RequestBase = RequestBase;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.RequestParams = void 0;\r\nvar RequestParams = /** @class */ (function () {\r\n function RequestParams(appId, identifier, userSign) {\r\n this.appId = appId;\r\n this.identifier = identifier;\r\n this.userSign = userSign;\r\n }\r\n return RequestParams;\r\n}());\r\nexports.RequestParams = RequestParams;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar Logger_1 = require(\"../log/Logger\");\r\nvar ImClient_1 = require(\"./ImClient\");\r\nvar ApiResponse_1 = require(\"../model/ApiResponse\");\r\nvar utils_1 = require(\"../common/utils\");\r\nvar Fetch_1 = require(\"../common/Fetch\");\r\nvar HttpApi = /** @class */ (function () {\r\n function HttpApi(url) {\r\n this.url = \"\"; //http://127.0.0.1:8000/v1\r\n this.url = url;\r\n }\r\n HttpApi.prototype.call = function (url, params, body) {\r\n var userId = ImClient_1.imClient.userId;\r\n Logger_1[\"default\"].info(userId);\r\n var reqUrl = this.url + url;\r\n if (params != null) {\r\n var paramStr = this.setQueryConfig(params);\r\n // console.log(paramStr);\r\n reqUrl += paramStr;\r\n }\r\n var requestMethod = \"POST\";\r\n // 讲appid等参数写入body\r\n body = this.setQueryToBody(params, body);\r\n var headers = {\r\n 'Content-Type': 'application/json',\r\n };\r\n var request = { method: requestMethod, headers: headers, mode: 'cors', body: utils_1[\"default\"].json(body) };\r\n return this.httpFetch(reqUrl, request);\r\n };\r\n HttpApi.prototype.setQueryToBody = function (params, body) {\r\n for (var o in params) {\r\n body[o] = params[o];\r\n }\r\n return body;\r\n };\r\n HttpApi.prototype.setQueryConfig = function (params) {\r\n var _str = \"?\";\r\n for (var o in params) {\r\n _str += o + \"=\" + params[o] + \"&\";\r\n }\r\n var _str = _str.substring(0, _str.length - 1); //末尾是&\r\n return _str;\r\n };\r\n HttpApi.prototype.httpFetch = function (url, request) {\r\n var _this = this;\r\n console.log(\"httpFetch\");\r\n var rnfetch1 = Fetch_1[\"default\"].getFetchToolkit();\r\n return rnfetch1(url, request).then(function (response) {\r\n // console.log(response)\r\n return response.json();\r\n }).then(function (res) {\r\n Logger_1[\"default\"].info(\"==> [\" + request.method + \"] \" + url + \" back:\" + utils_1[\"default\"].json(res));\r\n var resp = _this.response2ApiResponse(res);\r\n if (resp.isFailed()) {\r\n return Promise.reject(resp);\r\n }\r\n // return Promise.resolve(this.response2ApiResponse(res));\r\n return Promise.resolve(resp);\r\n });\r\n };\r\n HttpApi.prototype.response2ApiResponse = function (response) {\r\n var apiResponse = new ApiResponse_1[\"default\"](true);\r\n apiResponse.data = response.data;\r\n apiResponse.msg = response.msg;\r\n apiResponse.code = response.code;\r\n return apiResponse;\r\n };\r\n return HttpApi;\r\n}());\r\nexports[\"default\"] = HttpApi;\r\n// export const httpApi = new HttpApi();\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nvar ApiResponse = /** @class */ (function () {\r\n function ApiResponse(succeed) {\r\n if (succeed === void 0) { succeed = false; }\r\n this.msg = '';\r\n this.data = null;\r\n if (succeed) {\r\n this.code = 200;\r\n }\r\n }\r\n ApiResponse.prototype.isSucceed = function () {\r\n return this.code === 200;\r\n };\r\n ApiResponse.prototype.isFailed = function () {\r\n return !this.isSucceed();\r\n };\r\n return ApiResponse;\r\n}());\r\nexports[\"default\"] = ApiResponse;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.ConversationEventCommand = exports.UserEventCommand = exports.SystemCommand = exports.GroupCommand = exports.FriendShipCommand = exports.MessageCommand = void 0;\r\nvar MessageCommand;\r\n(function (MessageCommand) {\r\n MessageCommand[MessageCommand[\"MSG_P2P\"] = 1103] = \"MSG_P2P\";\r\n MessageCommand[MessageCommand[\"MSG_P2P_SYNC\"] = 1108] = \"MSG_P2P_SYNC\";\r\n //发送消息已读 1106\r\n MessageCommand[MessageCommand[\"MSG_READED\"] = 1106] = \"MSG_READED\";\r\n //消息接收ack\r\n MessageCommand[MessageCommand[\"MSG_RECIVE_ACK\"] = 1107] = \"MSG_RECIVE_ACK\";\r\n //单聊消息ACK 1046\r\n MessageCommand[MessageCommand[\"MSG_ACK\"] = 1046] = \"MSG_ACK\";\r\n // 消息撤回 1050\r\n MessageCommand[MessageCommand[\"MSG_RECALL\"] = 1050] = \"MSG_RECALL\";\r\n // //消息撤回通知 1052\r\n MessageCommand[MessageCommand[\"MSG_RECALL_NOTIFY\"] = 1052] = \"MSG_RECALL_NOTIFY\";\r\n // 消息撤回回包 1051\r\n MessageCommand[MessageCommand[\"MSG_RECALL_ACK\"] = 1051] = \"MSG_RECALL_ACK\";\r\n // //消息已读通知 1053\r\n MessageCommand[MessageCommand[\"MSG_READED_NOTIFY\"] = 1053] = \"MSG_READED_NOTIFY\";\r\n // 消息已读回执,给原消息发送方 1054\r\n MessageCommand[MessageCommand[\"MSG_READED_RECEIPT\"] = 1054] = \"MSG_READED_RECEIPT\";\r\n})(MessageCommand || (MessageCommand = {}));\r\nexports.MessageCommand = MessageCommand;\r\nvar FriendShipCommand;\r\n(function (FriendShipCommand) {\r\n //添加好友 3000\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_ADD\"] = 3000] = \"FRIEND_ADD\";\r\n //更新好友 3001\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_UPDATE\"] = 3001] = \"FRIEND_UPDATE\";\r\n //删除好友 3002\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_DELETE\"] = 3002] = \"FRIEND_DELETE\";\r\n //好友申请 3003\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST\"] = 3003] = \"FRIEND_REQUEST\";\r\n //好友申请已读 3004\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_READ\"] = 3004] = \"FRIEND_REQUEST_READ\";\r\n //好友申请审批 3005\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_REQUEST_APPROVER\"] = 3005] = \"FRIEND_REQUEST_APPROVER\";\r\n //添加黑名单 3010\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_ADD\"] = 3010] = \"FRIEND_BLACK_ADD\";\r\n //移除黑名单 3011\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_BLACK_DELETE\"] = 3011] = \"FRIEND_BLACK_DELETE\";\r\n //新建好友分组 3012\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_ADD\"] = 3012] = \"FRIEND_GROUP_ADD\";\r\n //删除好友分组 3013\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_DELETE\"] = 3013] = \"FRIEND_GROUP_DELETE\";\r\n //好友分组添加成员 3014\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_ADD\"] = 3014] = \"FRIEND_GROUP_MEMBER_ADD\";\r\n //好友分组移除成员 3015\r\n FriendShipCommand[FriendShipCommand[\"FRIEND_GROUP_MEMBER_DELETE\"] = 3015] = \"FRIEND_GROUP_MEMBER_DELETE\";\r\n})(FriendShipCommand || (FriendShipCommand = {}));\r\nexports.FriendShipCommand = FriendShipCommand;\r\nvar GroupCommand;\r\n(function (GroupCommand) {\r\n /**\r\n * 推送申请入群通知 2000\r\n */\r\n GroupCommand[GroupCommand[\"JOIN_GROUP\"] = 2000] = \"JOIN_GROUP\";\r\n /**\r\n * 推送添加群成员 2001,通知给所有管理员和本人\r\n */\r\n GroupCommand[GroupCommand[\"ADDED_MEMBER\"] = 2001] = \"ADDED_MEMBER\";\r\n /**\r\n * 推送创建群组通知 2002,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"CREATED_GROUP\"] = 2002] = \"CREATED_GROUP\";\r\n /**\r\n * 推送更新群组通知 2003,通知给所有人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_GROUP\"] = 2003] = \"UPDATED_GROUP\";\r\n /**\r\n * 推送退出群组通知 2004,通知给管理员和操作人\r\n */\r\n GroupCommand[GroupCommand[\"EXIT_GROUP\"] = 2004] = \"EXIT_GROUP\";\r\n /**\r\n * 推送修改群成员通知 2005,通知给管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"UPDATED_MEMBER\"] = 2005] = \"UPDATED_MEMBER\";\r\n /**\r\n * 推送删除群成员通知 2006,通知给所有群成员和被踢人\r\n */\r\n GroupCommand[GroupCommand[\"DELETED_MEMBER\"] = 2006] = \"DELETED_MEMBER\";\r\n /**\r\n * 推送解散群通知 2007,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"DESTROY_GROUP\"] = 2007] = \"DESTROY_GROUP\";\r\n /**\r\n * 推送转让群主 2008,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"TRANSFER_GROUP\"] = 2008] = \"TRANSFER_GROUP\";\r\n /**\r\n * 禁言群 2009,通知所有人\r\n */\r\n GroupCommand[GroupCommand[\"MUTE_GROUP\"] = 2009] = \"MUTE_GROUP\";\r\n /**\r\n * 禁言/解禁 群成员 2010,通知管理员和被操作人\r\n */\r\n GroupCommand[GroupCommand[\"SPEAK_GOUP_MEMBER\"] = 2010] = \"SPEAK_GOUP_MEMBER\";\r\n //群聊消息收发 2104\r\n GroupCommand[GroupCommand[\"MSG_GROUP\"] = 2104] = \"MSG_GROUP\";\r\n //群聊消息收发同步消息 2105\r\n GroupCommand[GroupCommand[\"MSG_GROUP_SYNC\"] = 2105] = \"MSG_GROUP_SYNC\";\r\n //群聊消息ACK 2047\r\n GroupCommand[GroupCommand[\"GROUP_MSG_ACK\"] = 2047] = \"GROUP_MSG_ACK\";\r\n})(GroupCommand || (GroupCommand = {}));\r\nexports.GroupCommand = GroupCommand;\r\nvar SystemCommand;\r\n(function (SystemCommand) {\r\n //心跳 9999\r\n SystemCommand[SystemCommand[\"PING\"] = 9999] = \"PING\";\r\n //登陸 9000\r\n SystemCommand[SystemCommand[\"LOGIN\"] = 9000] = \"LOGIN\";\r\n //登录ack 9001\r\n SystemCommand[SystemCommand[\"LOGINACK\"] = 9001] = \"LOGINACK\";\r\n //下线通知 用于多端互斥 9002\r\n SystemCommand[SystemCommand[\"MUTUALLOGIN\"] = 9002] = \"MUTUALLOGIN\";\r\n //登出 9003\r\n SystemCommand[SystemCommand[\"LOGOUT\"] = 9003] = \"LOGOUT\";\r\n})(SystemCommand || (SystemCommand = {}));\r\nexports.SystemCommand = SystemCommand;\r\nvar UserEventCommand;\r\n(function (UserEventCommand) {\r\n //4000\r\n UserEventCommand[UserEventCommand[\"USER_MODIFY\"] = 4000] = \"USER_MODIFY\";\r\n //4001\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE\"] = 4001] = \"USER_ONLINE_STATUS_CHANGE\";\r\n //4002 在线状态订阅\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_SUBSCRIBE\"] = 4002] = \"USER_ONLINE_STATUS_SUBSCRIBE\";\r\n //4003 拉取订阅的在线状态好友,只发送给请求端\r\n UserEventCommand[UserEventCommand[\"PULL_USER_ONLINE_STATUS\"] = 4003] = \"PULL_USER_ONLINE_STATUS\";\r\n //4004 用户在线状态通知报文\r\n UserEventCommand[UserEventCommand[\"USER_ONLINE_STATUS_CHANGE_NOTIFY\"] = 4004] = \"USER_ONLINE_STATUS_CHANGE_NOTIFY\";\r\n})(UserEventCommand || (UserEventCommand = {}));\r\nexports.UserEventCommand = UserEventCommand;\r\nvar ConversationEventCommand;\r\n(function (ConversationEventCommand) {\r\n //5000 会话删除\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_DELETE\"] = 5000] = \"CONVERSATION_DELETE\";\r\n //5001 会话修改\r\n ConversationEventCommand[ConversationEventCommand[\"CONVERSATION_UPDATE\"] = 5001] = \"CONVERSATION_UPDATE\";\r\n})(ConversationEventCommand || (ConversationEventCommand = {}));\r\nexports.ConversationEventCommand = ConversationEventCommand;\r\n","\"use strict\";\r\nexports.__esModule = true;\r\nexports.MessagePack = void 0;\r\nvar utils_1 = require(\"../common/utils\");\r\nvar MessagePack = /** @class */ (function () {\r\n function MessagePack(appId) {\r\n this.messageId = utils_1[\"default\"].uuid();\r\n this.appId = appId;\r\n this.messageRandom = this.RangeInteger(0, 10000);\r\n this.messageTime = Date.parse(new Date().toString());\r\n }\r\n MessagePack.prototype.RangeInteger = function (min, max) {\r\n var range = max - min;\r\n var value = Math.floor(Math.random() * range) + min;\r\n return value;\r\n };\r\n MessagePack.prototype.buildTextMessagePack = function (fromId, toId, text) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: 1, content: text };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n MessagePack.prototype.buildCustomerMessagePack = function (fromId, toId, type, obj) {\r\n this.fromId = fromId;\r\n this.toId = toId;\r\n var body = { type: type, content: obj };\r\n this.messageBody = utils_1[\"default\"].json(body);\r\n };\r\n return MessagePack;\r\n}());\r\nexports.MessagePack = MessagePack;\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/im-uniapp/common/publicFc.js b/im-uniapp/common/publicFc.js index d48382f..cf6fb0b 100644 --- a/im-uniapp/common/publicFc.js +++ b/im-uniapp/common/publicFc.js @@ -2,6 +2,9 @@ import http from '@/common/request' import browser from '@/common/browser' import store from '../store' import pinyin from '@/common/pinyin.js'; + +import * as dayjs from 'dayjs' + export default { // 获取字典 getdict(dict) { @@ -464,6 +467,12 @@ export default { store.dispatch('getChatList'); var chatWindowData = store.state.chatDatalist[userId].list var chatListInfo = store.state.chatlist[userId] + + var data2 = this.getKeyObjectStorage(store.state.userInfo.userId + '_' + + 'chatlistData') + // var _num=data2[userId].num|| + console.log("===========data2:",JSON.stringify(data2[userId])) + // 找到数组中对象属性值一样的对象并返回 function arrfindobject({ arr, @@ -508,11 +517,11 @@ export default { nickName: fromInfo.nickName, portrait: fromInfo.portrait, content: msgTypeLabel, - time: time, + time: dayjs(time).format("YYYY/MM/DD HH:mm:ss"), num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1), windowType: windowType, - disturb: disturb, //是否静默消息 - top: top, //是否置顶 + disturb: "N", //是否静默消息 + top: "N", //是否置顶 userType: fromInfo.userType } } @@ -526,7 +535,7 @@ export default { time: time, num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1), windowType: windowType, - disturb: disturb, //是否静默消息 + disturb: "N", //是否静默消息 top: top, //是否置顶 userType: 'GROUP' } @@ -990,6 +999,31 @@ export default { }); // #endif }, + formatMessage(msg){ + msg.pushType="MSG" + const _data=JSON.parse(msg.messageBody) + msg.msgContent={ + msgType:"TEXT", + content:_data.content, + disturb:false, + top:false, + } + + msg.windowType="SINGLE" + msg.createTime=msg.messageTime; + msg.userId=msg.fromId; + msg.fromInfo={ + userId:msg.fromId, + userType:1, + nickName:msg.fromId, + portrait:"https://shudong2022.oss-cn-hangzhou.aliyuncs.com/common/user/logo.png" + }; + msg.groupInfo={}; + msg.msgId=msg.messageKey; + + return msg + + }, debounce(func, wait = 1000, immediate = true) { /** * @desc 函数防抖 diff --git a/im-uniapp/common/socketTask.js b/im-uniapp/common/socketTask.js index 8cf5e5e..55adf9b 100644 --- a/im-uniapp/common/socketTask.js +++ b/im-uniapp/common/socketTask.js @@ -4,9 +4,10 @@ let retimer = null import store from '../store' import * as sdk from "@/common/imSdk/lim-sdk.js"; - import lim from "@/common/imSdk/sdk-bridge.js"; +import publicFc from '@/common/publicFc'; + export default { socketTask: null, // 连接WebSocket @@ -28,42 +29,40 @@ export default { onSocketReConnectSuccessEvent: () => { console.log("重连成功"); }, - onOfflineMessage:(e)=>{ + onOfflineMessage: (e) => { console.log("====================拉取到离线消息") console.log(e) + setTimeout(function() { + if (e.length > 0) { + e.map((msg) => { + console.log(msg) + setTimeout(()=>{ + const _data = publicFc.formatMessage(msg) + uni.$emit('onP2PMessage', _data); + store.dispatch('onP2PMessage', _data) + },500) + }) + } + }, 2000); + }, onTestMessage: (e) => { - console.log("onTestMessage :" + e); - store.dispatch('onP2PMessage',e) + console.log("onTestMessage :"); + store.dispatch('onP2PMessage', e) }, onP2PMessage: (e) => { - console.log("onP2PMessage :" + e); + console.log("onP2PMessag e :::"); + console.log(JSON.parse(e)) e = JSON.parse(e) - e.data.pushType="MSG" - const _data=JSON.parse(e.data.messageBody) - e.data.msgContent={ - msgType:"TEXT", - content:_data.content, - disturb:false, - top:false, - } - - e.data.windowType="SINGLE" - e.data.createTime=e.data.messageTime; - e.data.userId=e.data.fromId; - e.data.fromInfo={ - userId:e.data.fromId - }; - e.data.groupInfo={}; - e.data.msgId=e.data.messageId; - - uni.$emit('onP2PMessage', e.data); - store.dispatch('onP2PMessage',e.data) + + const _data = publicFc.formatMessage(e.data) + + uni.$emit('onP2PMessage', _data); + store.dispatch('onP2PMessage', _data) + }, onLogin: (uid) => { console.log("用户" + uid + "登陆sdk成功"); - - } }; @@ -79,7 +78,7 @@ export default { console.log(lim) - // 防止多次建立ws链接,貌似还没有生效,需要检查 + // 防止多次建立ws链接,貌似还没有生效,需要检查 if (this.socketTask != null) { return false } @@ -92,12 +91,12 @@ export default { console.log(this.socketTask) console.log('sdk 成功连接的回调, 可以使用 sdk 请求数据了.'); - sdk.getAllFriend().then(res => { - console.warn(res) - }) - sdk.getUserSequence().then(res => { - console.warn(res) - }) + // sdk.getAllFriend().then(res => { + // console.warn(res) + // }) + // sdk.getUserSequence().then(res => { + // console.warn(res) + // }) sdk.getUserConversationList(0).then(res => { console.warn(res) diff --git a/im-uniapp/package.json b/im-uniapp/package.json index 7ad1772..f02bf0a 100644 --- a/im-uniapp/package.json +++ b/im-uniapp/package.json @@ -12,6 +12,7 @@ "author": "zmm2113@qq.com", "license": "ISC", "dependencies": { + "dayjs": "^1.11.10", "localforage": "^1.10.0" } } diff --git a/im-uniapp/store/index.js b/im-uniapp/store/index.js index f75dacc..336f65e 100644 --- a/im-uniapp/store/index.js +++ b/im-uniapp/store/index.js @@ -1,283 +1,343 @@ import http from '@/common/request'; import publicFc from '@/common/publicFc'; + +import * as sdk from "@/common/imSdk/lim-sdk.js"; +import lim from "@/common/imSdk/sdk-bridge.js"; + +const _im = lim.lim.im + +function sortBy(field) { + //根据传过来的字段进行排序 + return (x, y) => { + return x[field] - y[field] + } +} + + // #ifndef VUE3 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ -// #endif + // #endif - -import * as sdk from "@/common/imSdk/lim-sdk.js"; -import lim from "@/common/imSdk/sdk-bridge.js"; - -const _im=lim.lim.im - -// #ifdef VUE3 -import { createStore } from 'vuex' - const store = createStore({ -// #endif - state: { - watermark:'HS-IM', - userInfo:'', - chatlist:[], - chatDatalist:[], - chatListNum:0, - chatDataState:1, - chatDataUserId:'', - topicReply:{}, - topicRed:{}, - friendApply:{} - }, - mutations: { - update_UserInfo(state, data) {//个人信息 - state.userInfo = JSON.parse(data) - }, - update_ChatList(state, data) { - state.chatlist = data - }, - update_chatDatalist(state, data) { - state.chatDatalist = data - }, - update_topicReply(state, data) { - state.topicReply = data - uni.setStorageSync('topicReply', JSON.stringify(data)); - }, - update_topicRed(state, data) { - state.topicRed = data - uni.setStorageSync('topicRed', JSON.stringify(data)); - }, - update_friendApply(state, data) { - state.friendApply = data - uni.setStorageSync('friendApply', JSON.stringify(data)); - } - }, - actions: { - onP2PMessage(context,data){ - console.log("========================store 收到信息") - console.log("========================store 收到信息") - console.log("========================store 收到信息") - console.error(data) - publicFc.getPush(data) - - }, - sendMsg(context,data){ - console.log("========================") - console.log("========================") - console.log("========================") - console.error(data) - _im.sendP2PMessage(_im.createP2PTextMessage(data.userId,data.data.content)) - }, - updateChatDataState(context,data){ - context.state.chatDataState++ - context.state.chatDataUserId=data - }, - tabBarpull(context){ - context.dispatch('get_UserInfo').then(res=>{ - context.dispatch('getChatList') - // 朋友圈新消息 - var topicReply=publicFc.getKeyObjectStorage('topicReply') - context.state.topicReply=topicReply - // 新朋友圈 - var topicRed=publicFc.getKeyObjectStorage('topicRed') - context.state.topicRed=topicRed - // 新朋友 - var friendApply=publicFc.getKeyObjectStorage('friendApply') - context.state.friendApply=friendApply - var chatListNum=context.state.chatListNum ? context.state.chatListNum : 0 - var topicReplyCount=topicReply.count ? topicReply.count : 0 - var friendApplyCount=friendApply.count ? friendApply.count : 0 - var sumCount=chatListNum+topicReplyCount+friendApplyCount - // #ifdef APP-PLUS - plus.runtime.setBadgeNumber(sumCount); + // #ifdef VUE3 + import { + createStore + } from 'vuex' + const store = createStore({ // #endif - }) - }, - get_UserInfo (context) { - // TODO 改用SDK的更新用户数据 - return new Promise((resolve, reject) => { - const userId = uni.getStorageSync("userId") - - lim.lim.im.getSingleUserInfo(userId).then((res)=>{ - if(res.code==200){ - context.commit('update_UserInfo',JSON.stringify(res.data)) - resolve(res.data) - }else{ - reject(res.data) - } - }) - }) - }, - getchatDatalist(context) {//获取聊天数据列表 - var data=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') - context.commit('update_chatDatalist',data) - }, - updateChatById(context,data) {//更新聊天数据 - var getKey=data.userId - var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') - retdata[getKey]['list']=data.data - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(retdata)); - }, - updateChatObjById(context,data) {//更新聊天数据对象 - var getKey=data.userId - var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') - retdata[getKey]=data.data - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(retdata)); - }, - getChatList(context) {//获取聊天记录列表 - var data=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') - var sum=0 - for(var key in data){ - sum+=data[key].num - } - context.state.chatListNum=sum - context.commit('update_ChatList',data) - }, - updateChatListInfoById(context,data) {//修改聊天记录 - console.log("修改聊天记录 2") - var getKey=data.userId - var retdata=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') - retdata[getKey]=data.data - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatlistData', JSON.stringify(retdata)); - }, - createChatObj(context,data){ - console.log("修改聊天记录 3") - console.log("context.state.userInfo.userId:",context.state.userInfo.userId) - console.log("data.userId:",data.userId) - var userId=data.userId - var windowType=data.windowType + state: { + watermark: 'HS-IM', + userInfo: '', + chatlist: [], + chatDatalist: [], + chatListNum: 0, + chatDataState: 1, + chatDataUserId: '', + topicReply: {}, + topicRed: {}, + friendApply: {} + }, + mutations: { + update_UserInfo(state, data) { //个人信息 + state.userInfo = JSON.parse(data) + }, + update_ChatList(state, data) { + state.chatlist = data + }, + update_chatDatalist(state, data) { + state.chatDatalist = data + }, + update_topicReply(state, data) { + state.topicReply = data + uni.setStorageSync('topicReply', JSON.stringify(data)); + }, + update_topicRed(state, data) { + state.topicRed = data + uni.setStorageSync('topicRed', JSON.stringify(data)); + }, + update_friendApply(state, data) { + state.friendApply = data + uni.setStorageSync('friendApply', JSON.stringify(data)); + } + }, + actions: { + onP2PMessage(context, data) { + console.log("========================store 收到信息") + console.log(data) + publicFc.getPush(data) - //初始化聊天记录 - var data2=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatlistData') - if(!data2[userId]){ - data2[userId]=new Object() - } - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatlistData', JSON.stringify(data2)); - // 初始化聊天数据 - var data1=publicFc.getKeyObjectStorage(context.state.userInfo.userId+'_'+'chatData') - return new Promise((resolve, reject)=>{ - if(!data1[userId]){ - console.log('初始化聊天') - switch (windowType){ - case 'SINGLE': - - // lim.lim.im.getSingleUserInfo(userId).then(res=>{ - // console.warn(res) - // }) - - _im.getSingleUserInfo(userId).then((res)=>{ - console.log(res.data) - console.log(res.data) - console.log(res.data) - console.log(res.data) + }, + sendMsg(context, data) { + console.log("========================") + // console.log("========================") + // console.log("========================") + // console.error(data) + _im.sendP2PMessage(_im.createP2PTextMessage(data.userId, data.data.content)) + }, + sendP2PMessageReciveAck(context, data) { + _im.sendP2PMessageReciveAck(data) + }, + sendMsgReadedReceipt(context, data) { + _im.sendP2PMessageReadedReceipt(data) + }, + updateChatDataState(context, data) { + context.state.chatDataState++ + context.state.chatDataUserId = data + }, + tabBarpull(context) { + context.dispatch('get_UserInfo').then(res => { + context.dispatch('getChatList') + // 朋友圈新消息 + var topicReply = publicFc.getKeyObjectStorage('topicReply') + context.state.topicReply = topicReply + // 新朋友圈 + var topicRed = publicFc.getKeyObjectStorage('topicRed') + context.state.topicRed = topicRed + // 新朋友 + var friendApply = publicFc.getKeyObjectStorage('friendApply') + context.state.friendApply = friendApply + var chatListNum = context.state.chatListNum ? context.state.chatListNum : 0 + var topicReplyCount = topicReply.count ? topicReply.count : 0 + var friendApplyCount = friendApply.count ? friendApply.count : 0 + var sumCount = chatListNum + topicReplyCount + friendApplyCount + // #ifdef APP-PLUS + plus.runtime.setBadgeNumber(sumCount); + // #endif + }) + }, + get_UserInfo(context) { + // TODO 改用SDK的更新用户数据 + return new Promise((resolve, reject) => { + const userId = uni.getStorageSync("userId") + + lim.lim.im.getSingleUserInfo(userId).then((res) => { if (res.code == 200) { - var detail=res.data - data1[userId]={ - fromInfo:{ - nickName: detail.nickName, - portrait: detail.photo, - userId: detail.userId, - userType:detail.userType - }, - groupInfo:{}, - list:[] - } - - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(data1)); - // 创建记录 - var msgList = { - userId: detail.userId, - personId: context.state.userInfo.userId, - nickName: detail.nickName, - portrait: detail.photo, - content: '', - time: publicFc.getNewDate('format',true), - num: 0, - windowType: 'SINGLE', - disturb:'N',//是否静默消息 - top:'N',//是否置顶 - userType:'SINGLE' - } - context.dispatch('updateChatListInfoById', { - userId: detail.userId, - data: msgList - }); - resolve({ - msg:'创建成功', - data:data1[userId] - }) - }else{ - reject({ - msg:'创建失败' - }); + context.commit('update_UserInfo', JSON.stringify(res.data)) + resolve(res.data) + } else { + reject(res.data) } - } - ); - break; - case 'GROUP': - http.request({ - url: '/group/getInfo/'+userId, - complete:(res)=>{ - if (res.data.code == 200) { - var detail=res.data.data - var portraits=[] - for (var i = 0; i < detail.user.length; i++) { - portraits.push(detail.user[i].portrait) - } - data1[userId]={ - fromInfo:{}, - groupInfo:{ - nickName: detail.group.name, - portrait: JSON.stringify(portraits), - userId: detail.group.groupId, - }, - list:[] - } - uni.setStorageSync(context.state.userInfo.userId+'_'+'chatData', JSON.stringify(data1)); - // 创建记录 - var msgList = { - userId: detail.group.groupId, - personId: context.state.userInfo.userId, - nickName: detail.group.name, - portrait: JSON.stringify(portraits), - content: '', - time: publicFc.getNewDate('format',true), - num: 0, - windowType: 'GROUP', - disturb:'N',//是否静默消息 - top:'N',//是否置顶 - userType:'GROUP' - } - context.dispatch('updateChatListInfoById', { - userId: detail.group.groupId, - data: msgList - }); - resolve({ - msg:'创建成功', - data:data1[userId] - }) - }else{ - reject({ - msg:'创建失败' - }); + }) + }) + }, + getchatDatalist(context) { //获取聊天数据列表 + var data = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatData') + context.commit('update_chatDatalist', data) + }, + updateChatById(context, data) { //更新聊天数据 + var getKey = data.userId + var retdata = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatData') + + //TODO 排序方法可以优化 + data.data = data.data.sort(sortBy('time')) + + retdata[getKey]['list'] = data.data + uni.setStorageSync(context.state.userInfo.userId + '_' + 'chatData', JSON.stringify( + retdata)); + }, + updateChatObjById(context, data) { //更新聊天数据对象 + var getKey = data.userId + var retdata = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatData') + + //TODO 排序方法可以优化 + data.data = data.data.sort(sortBy('time')) + retdata[getKey] = data.data + uni.setStorageSync(context.state.userInfo.userId + '_' + 'chatData', JSON.stringify( + retdata)); + }, + getChatList(context) { //获取聊天记录列表 + var data = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatlistData') + var sum = 0 + for (var key in data) { + sum += data[key].num + } + context.state.chatListNum = sum + context.commit('update_ChatList', data) + }, + updateChatListInfoById(context, data) { //修改聊天记录 + console.log("*********************** 修改聊天记录 2 ********************") + console.log("*********************** 修改聊天记录 2 ********************") + console.log("*********************** 修改聊天记录 2 ********************") + console.log(data) + var getKey = data.userId + var retdata = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatlistData') + console.log(retdata[getKey]) + retdata[getKey] = data.data + uni.setStorageSync(context.state.userInfo.userId + '_' + 'chatlistData', JSON.stringify( + retdata)); + }, + createChatObj(context, data) { + console.log("初始化聊天记录") + // console.log("context.state.userInfo.userId:", context.state.userInfo.userId) + // console.log("data.userId:", data.userId) + var userId = data.userId + var windowType = data.windowType + + //初始化聊天记录 + var data2 = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatlistData') + + // console.log("===========data2:",JSON.stringify(data2[userId])) + + var _num=0 + console.error(data2[userId]) + if (!data2[userId]) { + data2[userId] = new Object() + }else{ + console.warn(data2[userId].num) + // _num=data2[userId].num+1 + } + uni.setStorageSync(context.state.userInfo.userId + '_' + 'chatlistData', JSON.stringify( + data2)); + // 初始化聊天数据 + var data1 = publicFc.getKeyObjectStorage(context.state.userInfo.userId + '_' + + 'chatData') + return new Promise((resolve, reject) => { + if (!data1[userId]) { + console.log('初始化聊天') + switch (windowType) { + case 'SINGLE': + + // lim.lim.im.getSingleUserInfo(userId).then(res=>{ + // console.warn(res) + // }) + + _im.getSingleUserInfo(userId).then((res) => { + // console.log(res.data) + + if (res.code == 200) { + var detail = res.data + data1[userId] = { + fromInfo: { + nickName: detail.nickName, + portrait: detail.photo, + userId: detail.userId, + userType: detail.userType + }, + groupInfo: {}, + list: [] + } + + uni.setStorageSync(context.state.userInfo + .userId + '_' + 'chatData', JSON + .stringify(data1)); + // 创建记录 + console.log("============= 创建记录 ") + + + + var msgList = { + userId: detail.userId, + personId: context.state.userInfo.userId, + nickName: detail.nickName, + portrait: detail.photo, + content: '', + time: publicFc.getNewDate('format', + true), + num: 0, + windowType: 'SINGLE', + disturb: 'N', //是否静默消息 + top: 'N', //是否置顶 + userType: 'SINGLE' + } + context.dispatch('updateChatListInfoById', { + userId: detail.userId, + data: msgList + }); + resolve({ + msg: '创建成功', + data: data1[userId] + }) + } else { + reject({ + msg: '创建失败' + }); + } + }); + break; + case 'GROUP': + http.request({ + url: '/group/getInfo/' + userId, + complete: (res) => { + if (res.data.code == 200) { + var detail = res.data.data + var portraits = [] + for (var i = 0; i < detail.user + .length; i++) { + portraits.push(detail.user[i] + .portrait) + } + data1[userId] = { + fromInfo: {}, + groupInfo: { + nickName: detail.group.name, + portrait: JSON.stringify( + portraits), + userId: detail.group + .groupId, + }, + list: [] + } + uni.setStorageSync(context.state + .userInfo.userId + '_' + + 'chatData', JSON.stringify( + data1)); + // 创建记录 + var msgList = { + userId: detail.group.groupId, + personId: context.state.userInfo + .userId, + nickName: detail.group.name, + portrait: JSON.stringify( + portraits), + content: '', + time: publicFc.getNewDate( + 'format', true), + num: 0, + windowType: 'GROUP', + disturb: 'N', //是否静默消息 + top: 'N', //是否置顶 + userType: 'GROUP' + } + context.dispatch( + 'updateChatListInfoById', { + userId: detail.group + .groupId, + data: msgList + }); + resolve({ + msg: '创建成功', + data: data1[userId] + }) + } else { + reject({ + msg: '创建失败' + }); + } + } + }); + break; + default: + break; } + } else { + resolve({ + msg: '已存在', + data: data1[userId] + }) } }); - break; - default: - break; + }, + createChat(context, data) { + } - }else{ - resolve({ - msg:'已存在', - data:data1[userId] - }) } - }); - }, - createChat(context,data){ - - } - } -}) -export default store \ No newline at end of file + }) + export default store \ No newline at end of file diff --git a/im-uniapp/wx/chatWindow/index.vue b/im-uniapp/wx/chatWindow/index.vue index 8312085..cc2f57a 100644 --- a/im-uniapp/wx/chatWindow/index.vue +++ b/im-uniapp/wx/chatWindow/index.vue @@ -174,7 +174,7 @@ onLoad(e) { // // 监听接收聊天信息 - // uni.$on('onP2PMessage', this.onMessage) + uni.$on('onP2PMessage', this.onMessage) this.talkTo = e; console.log(this.talkTo) @@ -232,8 +232,6 @@ ); - - }, onPageScroll() { this.clickToSubmitSure(); @@ -267,7 +265,19 @@ }, methods: { onMessage(message) { - + //判断当前是单聊还是群聊 + if (this.talkTo.windowType != 'SINGLE') { + return; + } + //如果是单聊,则判断当前消息发送人是不是当前窗口的聊天对象 + if(this.talkTo.userId!=message.fromId){ + return; + } + console.log("message 聊天页收到回调") + console.log(message) + //如果当前消息发送人和当前窗口的聊天对象一致,则发送已读回执 + console.log("########### 此时需要发送已读回执 ###########") + this.$store.dispatch('sendP2PMessageReciveAck',message) }, addMsg(e) { this.msg += e; diff --git a/im-uniapp/wx/tabbar1/index.vue b/im-uniapp/wx/tabbar1/index.vue index e06551c..ff44317 100644 --- a/im-uniapp/wx/tabbar1/index.vue +++ b/im-uniapp/wx/tabbar1/index.vue @@ -158,12 +158,7 @@ this.$store.dispatch('tabBarpull'); }, mounted() { - - this.$socketTask.connectSocket() - - - }, methods: { longpressItem(e, i, v) { diff --git a/lim-ts-sdk-master/lim-ts-sdk/src/lim/common/Command.ts b/lim-ts-sdk-master/lim-ts-sdk/src/lim/common/Command.ts index 43c821c..bdfa169 100644 --- a/lim-ts-sdk-master/lim-ts-sdk/src/lim/common/Command.ts +++ b/lim-ts-sdk-master/lim-ts-sdk/src/lim/common/Command.ts @@ -24,7 +24,10 @@ enum MessageCommand { // //消息已读通知 1053 MSG_READED_NOTIFY = 0x41D, - + + // 消息已读回执,给原消息发送方 1054 + MSG_READED_RECEIPT=0x41E, + } enum FriendShipCommand{ diff --git a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/HttpApi.ts b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/HttpApi.ts index a27cb3d..afbf9b5 100644 --- a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/HttpApi.ts +++ b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/HttpApi.ts @@ -20,7 +20,7 @@ export default class HttpApi { let reqUrl = this.url + url; if(params != null){ let paramStr = this.setQueryConfig(params) - console.log(paramStr); + // console.log(paramStr); reqUrl += paramStr; } @@ -89,7 +89,7 @@ export default class HttpApi { }).then(res =>{ log.info(`==> [${request.method}] ${url} back:` + Beans.json(res)); const resp = this.response2ApiResponse(res); - console.log(res) + // console.log(res) if(resp.isFailed()){ return Promise.reject(resp); } @@ -115,7 +115,7 @@ export default class HttpApi { /*IFTRUE_UNIAPP*/ let rnfetch1 = Fetch.getFetchToolkit(); return rnfetch1(url as string, request).then(response =>{ - console.log(response) + // console.log(response) return response.json(); }).then(res =>{ log.info(`==> [${request.method}] ${url} back:` + Beans.json(res)); diff --git a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts index 1c17582..96a5680 100644 --- a/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts +++ b/lim-ts-sdk-master/lim-ts-sdk/src/lim/core/ImClient.ts @@ -54,7 +54,7 @@ export interface IListener { onSocketCloseEvent(): void;//连接关闭事件 onP2PMessage(e: any): void;//收到单聊消息事件 onTestMessage(e: any): void;//收到消息事件 测试用 - // onOfflineMessage(data):void; // 拉取到离线消息事件 + onOfflineMessage(data):void; // 拉取到离线消息事件 } export class ImClient { @@ -188,6 +188,10 @@ export class ImClient { public buildMessagePack(command: number, messagePack: any) { var jsonData = JSON.stringify(messagePack); + + // console.log("=============buildMessagePack=========") + // log.info(jsonData); + let bodyLen = getLen(jsonData); let pack = new ByteBuffer(null, 0); @@ -331,6 +335,48 @@ export class ImClient { this.conn.send(p2pPack.pack(false)); } } + + + // 消息接收ack + public sendP2PMessageReciveAck (rAck: any) { + console.log("=============== sendP2PMessageReciveAck") + console.log(rAck) + rAck.toId = rAck.fromId; + rAck.fromId = this.userId; + + console.log(rAck) + + let p2pPack_1107 = imClient.buildMessagePack(MessageCommand.MSG_RECIVE_ACK, rAck); + rAck.conversationType=0 + let p2pPack_1106 = imClient.buildMessagePack(MessageCommand.MSG_READED, rAck); + let p2pPack_1054 = imClient.buildMessagePack(MessageCommand.MSG_READED_RECEIPT, rAck); + + + if (this.conn) { + // console.log("=============== sendP2PMessageReciveAck 正式开始消息接收ack") + + this.conn.send(p2pPack_1107.pack(false)); + this.conn.send(p2pPack_1106.pack(false)); + this.conn.send(p2pPack_1054.pack(false)); + } + } + + // 消息已读回执,给原消息发送方 1054 + public sendP2PMessageReadedReceipt (rAck: any) { + console.log("=============== sendP2PMessageReadedRECEIPT") + console.log(rAck) + rAck.toId = rAck.fromId; + rAck.fromId = this.userId; + + console.log(rAck) + + let p2pPack = imClient.buildMessagePack(MessageCommand.MSG_READED_RECEIPT, rAck); + if (this.conn) { + console.log("=============== sendP2PMessageReadedRECEIPT 正式开始发送已读回执") + this.conn.send(p2pPack.pack(false)); + } + } + public getUserId() { return this.userId; diff --git a/lim-ts-sdk-master/lim-ts-sdk/src/lim/log/Logger.ts b/lim-ts-sdk-master/lim-ts-sdk/src/lim/log/Logger.ts index e7024ac..f79d510 100644 --- a/lim-ts-sdk-master/lim-ts-sdk/src/lim/log/Logger.ts +++ b/lim-ts-sdk-master/lim-ts-sdk/src/lim/log/Logger.ts @@ -1,5 +1,5 @@ export default class Logger { - static debug = true; + static debug = false; static info(message?: any, ...optionalParams: any[]): void { if(Logger.debug){