New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@chatie/angular

Package Overview
Dependencies
Maintainers
2
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@chatie/angular - npm Package Compare versions

Comparing version 0.7.2 to 0.7.3

4

bundles/chatie-angular.umd.js

@@ -311,3 +311,3 @@ (function (global, factory) {

*/
var VERSION = '0.7.2';
var VERSION = '0.7.3';

@@ -880,3 +880,3 @@ var ReadyState;

args: ['message'],
script: 'return this.syncMessage(message)',
source: 'return this.syncMessage(message)',
},

@@ -883,0 +883,0 @@ };

@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("brolog"),require("state-switch")):"function"==typeof define&&define.amd?define("@chatie/angular",["exports","@angular/core","rxjs","rxjs/operators","brolog","state-switch"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).chatie=e.chatie||{},e.chatie.angular={}),e.ng.core,e.rxjs,e.rxjs.operators,e.brolog,e.stateSwitch)}(this,(function(e,t,o,n,s,i){"use strict";

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function r(e,t,o,n){return new(o||(o=Promise))((function(s,i){function r(e){try{c(n.next(e))}catch(e){i(e)}}function a(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,a)}c((n=n.apply(e,t||[])).next())}))}function a(e,t){var o,n,s,i,r={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,n&&(s=2&i[0]?n.return:i[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,i[1])).done)return s;switch(n=0,s&&(i=[2&i[0],s.value]),i[0]){case 0:case 1:s=i;break;case 4:return r.label++,{value:i[1],done:!1};case 5:r.label++,n=i[1],i=[0];continue;case 7:i=r.ops.pop(),r.trys.pop();continue;default:if(!(s=r.trys,(s=s.length>0&&s[s.length-1])||6!==i[0]&&2!==i[0])){r=0;continue}if(3===i[0]&&(!s||i[1]>s[0]&&i[1]<s[3])){r.label=i[1];break}if(6===i[0]&&r.label<s[1]){r.label=s[1],s=i;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(i);break}s[2]&&r.ops.pop(),r.trys.pop();continue}i=t.call(e,r)}catch(e){i=[6,e],n=0}finally{o=s=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}Object.create;Object.create;var c,h="0.7.2";!function(e){e[e.CLOSED=WebSocket.CLOSED]="CLOSED",e[e.CLOSING=WebSocket.CLOSING]="CLOSING",e[e.CONNECTING=WebSocket.CONNECTING]="CONNECTING",e[e.OPEN=WebSocket.OPEN]="OPEN"}(c||(c={}));var u=function(){function e(){this.autoReconnect=!0,this.log=s.Brolog.instance(),this.CONNECT_TIMEOUT=1e4,this.ENDPOINT="wss://api.chatie.io/v0/websocket/token/",this.PROTOCOL="web|0.0.1",this.sendBuffer=[],this.log.verbose("IoService","constructor()")}return Object.defineProperty(e.prototype,"readyState",{get:function(){return this._readyState.asObservable()},enumerable:!1,configurable:!0}),e.prototype.init=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(n){switch(n.label){case 0:if(this.log.verbose("IoService","init()"),this.state)throw new Error("re-init");this.snapshot={readyState:c.CLOSED,event:null},this._readyState=new o.BehaviorSubject(c.CLOSED),this.state=new i.StateSwitch("IoService",this.log),this.state.setLog(this.log),n.label=1;case 1:return n.trys.push([1,4,,5]),[4,this.initStateDealer()];case 2:return n.sent(),[4,this.initRxSocket()];case 3:return n.sent(),[3,5];case 4:throw e=n.sent(),this.log.silly("IoService","init() exception: %s",e.message),e;case 5:return this.readyState.subscribe((function(e){t.log.silly("IoService","init() readyState.subscribe(%s)",c[e]),t.snapshot.readyState=e})),this.event.subscribe((function(e){t.log.silly("IoService","init() event.subscribe({name:%s})",e.name),t.snapshot.event=e})),[2]}}))}))},e.prototype.token=function(e){if(this.log.silly("IoService","token(%s)",e),!e)return this._token;this._token=e},e.prototype.start=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:if(this.log.verbose("IoService","start() with token:%s",this._token),!this._token)throw new Error("start() without token");if(this.state.on())throw new Error("state is already ON");if(this.state.pending())throw new Error("state is pending");this.state.on("pending"),this.autoReconnect=!0,t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.connectRxSocket()];case 2:return t.sent(),this.state.on(!0),[3,4];case 3:return e=t.sent(),this.log.warn("IoService","start() failed:%s",e.message),this.state.off(!0),[3,4];case 4:return[2]}}))}))},e.prototype.stop=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:if(this.log.verbose("IoService","stop()"),this.state.off()){if(this.log.warn("IoService","stop() state is already off"),this.state.pending())throw new Error("state pending() is true");return[2]}if(this.state.off("pending"),this.autoReconnect=!1,!this._websocket)throw new Error("no websocket");return[4,this.socketClose(1e3,"IoService.stop()")];case 1:return e.sent(),this.state.off(!0),[2]}}))}))},e.prototype.restart=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:this.log.verbose("IoService","restart()"),t.label=1;case 1:return t.trys.push([1,4,,5]),[4,this.stop()];case 2:return t.sent(),[4,this.start()];case 3:return t.sent(),[3,5];case 4:throw e=t.sent(),this.log.error("IoService","restart() error:%s",e.message),e;case 5:return[2]}}))}))},e.prototype.initStateDealer=function(){var e=this;this.log.verbose("IoService","initStateDealer()");this.readyState.pipe(n.filter((function(e){return e===c.OPEN}))).subscribe((function(t){return e.stateOnOpen()}))},e.prototype.initRxSocket=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(s){if(this.log.verbose("IoService","initRxSocket()"),this.event)throw new Error("re-init is not permitted");return this.moObserver={next:this.socketSend.bind(this),error:this.socketClose.bind(this),complete:this.socketClose.bind(this)},e=new o.Observable((function(e){return t.log.verbose("IoService","initRxSocket() Observable.create()"),t.mtObserver=e,t.socketClose.bind(t)})),this.event=o.Subject.create(this.moObserver,e.pipe(n.share())),[2]}))}))},e.prototype.connectRxSocket=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(o){if(this.log.verbose("IoService","connectRxSocket()"),this._websocket)throw new Error("already has a websocket");if(this.state.off())throw new Error("switch state is off");if(!this.state.pending())throw new Error("switch state is already ON");return this._websocket=new WebSocket(this.endPoint(),this.PROTOCOL),this.socketUpdateState(),e=new Promise((function(e,o){t.log.verbose("IoService","connectRxSocket() Promise()");var n=setTimeout((function(){t._websocket=null;var e=new Error("rxSocket connect timeout after "+Math.round(t.CONNECT_TIMEOUT/1e3));o(e)}),t.CONNECT_TIMEOUT);t._websocket.onopen=function(o){t.log.verbose("IoService","connectRxSocket() Promise() WebSocket.onOpen() resolve()"),t.socketUpdateState(),clearTimeout(n),e()}})),this._websocket.onmessage=this.socketOnMessage.bind(this),this._websocket.onerror=this.socketOnError.bind(this),this._websocket.onclose=this.socketOnClose.bind(this),[2,e]}))}))},e.prototype.endPoint=function(){var e=this.ENDPOINT+this._token;return this.log.verbose("IoService","endPoint() => %s",e),e},e.prototype.stateOnOpen=function(){this.log.verbose("IoService","stateOnOpen()"),this.socketSendBuffer(),this.rpcUpdate("from stateOnOpen()")},e.prototype.rpcDing=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(o){return this.log.verbose("IoService","ding(%s)",e),t={name:"ding",payload:e},this.event.next(t),[2]}))}))},e.prototype.rpcUpdate=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){return this.event.next({name:"update",payload:e}),[2]}))}))},e.prototype.socketClose=function(e,t){return r(this,void 0,void 0,(function(){var o=this;return a(this,(function(s){switch(s.label){case 0:if(this.log.verbose("IoService","socketClose()"),!this._websocket)throw new Error("no websocket");return this._websocket.close(e,t),this.socketUpdateState(),[4,new Promise((function(e){o.readyState.pipe(n.filter((function(e){return e===c.CLOSED}))).subscribe(e)}))];case 1:return s.sent(),[2]}}))}))},e.prototype.socketSend=function(e){this.log.silly("IoService","socketSend({name:%s, payload:%s})",e.name,e.payload),this._websocket||this.log.silly("IoService","socketSend() no _websocket");var t=JSON.stringify(e);this.sendBuffer.push(t),this.socketSendBuffer()},e.prototype.socketSendBuffer=function(){if(this.log.silly("IoService","socketSendBuffer() length:%s",this.sendBuffer.length),!this._websocket)throw new Error("socketSendBuffer(): no _websocket");if(this._websocket.readyState===WebSocket.OPEN)for(;this.sendBuffer.length;){var e=this.sendBuffer.shift();this.log.silly("IoService","socketSendBuffer() sending(%s)",e),this._websocket.send(e)}else this.log.warn("IoService","socketSendBuffer() readyState is not OPEN, send job delayed.")},e.prototype.socketUpdateState=function(){this.log.verbose("IoService","socketUpdateState() is %s",c[this._websocket.readyState]),this._websocket?this._readyState.next(this._websocket.readyState):this.log.error("IoService","socketUpdateState() no _websocket")},e.prototype.socketOnMessage=function(e){this.log.verbose("IoService","onMessage({data: %s})",e.data);var t=e.data,o={name:"raw",payload:t};try{var n=JSON.parse(t);o.name=n.name,o.payload=n.payload}catch(e){this.log.warn("IoService","onMessage parse message fail. save as RAW")}this.mtObserver.next(o)},e.prototype.socketOnError=function(e){this.log.silly("IoService","socketOnError(%s)",e)},e.prototype.socketOnClose=function(e){var t=this;this.log.verbose("IoService","socketOnClose({code:%s, reason:%s, returnValue:%s})",e.code,e.reason,e.returnValue),this.socketUpdateState(),this.autoReconnect?(this.state.on("pending"),setTimeout((function(){return r(t,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,this.connectRxSocket()];case 1:return t.sent(),this.state.on(!0),[3,3];case 2:return e=t.sent(),this.log.warn("IoService","socketOnClose() autoReconnect() exception: %s",e),this.state.off(!0),[3,3];case 3:return[2]}}))}))}),1e3)):this.state.off(!0),this._websocket=null,e.wasClean||this.log.warn("IoService","socketOnClose() event.wasClean FALSE")},e}(),l=function(){function e(e,o){this.log=e,this.ngZone=o,this.message=new t.EventEmitter,this.scan=new t.EventEmitter,this.login=new t.EventEmitter,this.logout=new t.EventEmitter,this.error=new t.EventEmitter,this.heartbeat=new t.EventEmitter,this.timerSub=null,this.counter=0,this.timestamp=new Date,this.log.verbose("WechatyComponent","constructor() v%s",h)}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token},set:function(e){this.log.verbose("WechatyComponent","set token(%s)",e);var t=(e||"").trim();if(this._token!==t){if(this._token=t,!this.ioService)return this.log.silly("WechatyComponent","set token() skip token init value"),void this.log.silly("WechatyComponent","set token() because ioService will do it inside ngOnInit()");this.log.silly("WechatyComponent","set token(%s) reloading ioService now...",t),this.ioService.token(this.token),this.ioService.restart()}else this.log.silly("WechatyComponent","set token(%s) not new",t)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return this.log.verbose("WechatyComponent","ngOnInit() with token: "+this.token),this.ioService=new u,[4,this.ioService.init()];case 1:return e.sent(),this.ioService.event.subscribe(this.onIo.bind(this)),this.log.silly("WechatyComponent","ngOnInit() ioService.event.subscribe()-ed"),this.token?(this.ioService.token(this.token),[4,this.ioService.start()]):[3,3];case 2:e.sent(),e.label=3;case 3:return[2]}}))}))},e.prototype.ngOnDestroy=function(){this.log.verbose("WechatyComponent","ngOnDestroy()"),this.endTimer(),this.ioService&&this.ioService.stop()},e.prototype.onIo=function(e){switch(this.log.silly("WechatyComponent","onIo#%d(%s)",this.counter++,e.name),this.timestamp=new Date,e.name){case"scan":this.scan.emit(e.payload);break;case"login":this.login.emit(e.payload);break;case"logout":this.logout.emit(e.payload);break;case"message":this.message.emit(e.payload);break;case"error":this.error.emit(e.payload);break;case"ding":case"dong":case"raw":this.heartbeat.emit(e.name+"["+e.payload+"]");break;case"heartbeat":this.heartbeat.emit(e.payload);break;case"sys":this.log.silly("WechatyComponent","onIo(%s): %s",e.name,e.payload);break;default:this.log.warn("WechatyComponent","onIo() unknown event name: %s[%s]",e.name,e.payload)}},e.prototype.reset=function(e){this.log.verbose("WechatyComponent","reset(%s)",e);var t={name:"reset",payload:e};if(!this.ioService)throw new Error("no ioService");this.ioService.event.next(t)},e.prototype.shutdown=function(e){this.log.verbose("WechatyComponent","shutdown(%s)",e);var t={name:"shutdown",payload:e};if(!this.ioService)throw new Error("no ioService");this.ioService.event.next(t)},e.prototype.startSyncMessage=function(){this.log.verbose("WechatyComponent","startSyncMessage()");if(!this.ioService)throw new Error("no ioService");this.ioService.event.next({name:"botie",payload:{args:["message"],script:"return this.syncMessage(message)"}})},e.prototype.startTimer=function(){var e=this;this.log.verbose("WechatyComponent","startTimer()"),this.ender=new o.Subject,this.ngZone.runOutsideAngular((function(){e.timer=o.interval(3e3).pipe(n.tap((function(t){e.log.verbose("do"," %d",t)})),n.takeUntil(e.ender),n.share())})),this.timerSub=this.timer.subscribe((function(t){if(e.counter=t,!e.ioService)throw new Error("no ioService");e.ioService.rpcDing(e.counter)}))},e.prototype.endTimer=function(){this.log.verbose("WechatyComponent","endTimer()"),this.timerSub&&(this.timerSub.unsubscribe(),this.timerSub=null),this.ender&&this.ender.next(null)},e.prototype.logoff=function(e){this.log.silly("WechatyComponent","logoff(%s)",e);var t={name:"logout",payload:e};this.ioService.event.next(t)},Object.defineProperty(e.prototype,"readyState",{get:function(){return this.ioService.readyState},enumerable:!1,configurable:!0}),e}();l.decorators=[{type:t.Component,args:[{selector:"wechaty",template:"<ng-content></ng-content>"}]}],l.ctorParameters=function(){return[{type:s.Brolog},{type:t.NgZone}]},l.propDecorators={message:[{type:t.Output}],scan:[{type:t.Output}],login:[{type:t.Output}],logout:[{type:t.Output}],error:[{type:t.Output}],heartbeat:[{type:t.Output}],token:[{type:t.Input}]};var p=function(){};p.decorators=[{type:t.NgModule,args:[{id:"wechaty",declarations:[l],exports:[l]}]}],e.VERSION=h,e.WechatyComponent=l,e.WechatyModule=p,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */function r(e,t,o,n){return new(o||(o=Promise))((function(s,i){function r(e){try{c(n.next(e))}catch(e){i(e)}}function a(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(r,a)}c((n=n.apply(e,t||[])).next())}))}function a(e,t){var o,n,s,i,r={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,n&&(s=2&i[0]?n.return:i[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,i[1])).done)return s;switch(n=0,s&&(i=[2&i[0],s.value]),i[0]){case 0:case 1:s=i;break;case 4:return r.label++,{value:i[1],done:!1};case 5:r.label++,n=i[1],i=[0];continue;case 7:i=r.ops.pop(),r.trys.pop();continue;default:if(!(s=r.trys,(s=s.length>0&&s[s.length-1])||6!==i[0]&&2!==i[0])){r=0;continue}if(3===i[0]&&(!s||i[1]>s[0]&&i[1]<s[3])){r.label=i[1];break}if(6===i[0]&&r.label<s[1]){r.label=s[1],s=i;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(i);break}s[2]&&r.ops.pop(),r.trys.pop();continue}i=t.call(e,r)}catch(e){i=[6,e],n=0}finally{o=s=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}Object.create;Object.create;var c,h="0.7.3";!function(e){e[e.CLOSED=WebSocket.CLOSED]="CLOSED",e[e.CLOSING=WebSocket.CLOSING]="CLOSING",e[e.CONNECTING=WebSocket.CONNECTING]="CONNECTING",e[e.OPEN=WebSocket.OPEN]="OPEN"}(c||(c={}));var u=function(){function e(){this.autoReconnect=!0,this.log=s.Brolog.instance(),this.CONNECT_TIMEOUT=1e4,this.ENDPOINT="wss://api.chatie.io/v0/websocket/token/",this.PROTOCOL="web|0.0.1",this.sendBuffer=[],this.log.verbose("IoService","constructor()")}return Object.defineProperty(e.prototype,"readyState",{get:function(){return this._readyState.asObservable()},enumerable:!1,configurable:!0}),e.prototype.init=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(n){switch(n.label){case 0:if(this.log.verbose("IoService","init()"),this.state)throw new Error("re-init");this.snapshot={readyState:c.CLOSED,event:null},this._readyState=new o.BehaviorSubject(c.CLOSED),this.state=new i.StateSwitch("IoService",this.log),this.state.setLog(this.log),n.label=1;case 1:return n.trys.push([1,4,,5]),[4,this.initStateDealer()];case 2:return n.sent(),[4,this.initRxSocket()];case 3:return n.sent(),[3,5];case 4:throw e=n.sent(),this.log.silly("IoService","init() exception: %s",e.message),e;case 5:return this.readyState.subscribe((function(e){t.log.silly("IoService","init() readyState.subscribe(%s)",c[e]),t.snapshot.readyState=e})),this.event.subscribe((function(e){t.log.silly("IoService","init() event.subscribe({name:%s})",e.name),t.snapshot.event=e})),[2]}}))}))},e.prototype.token=function(e){if(this.log.silly("IoService","token(%s)",e),!e)return this._token;this._token=e},e.prototype.start=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:if(this.log.verbose("IoService","start() with token:%s",this._token),!this._token)throw new Error("start() without token");if(this.state.on())throw new Error("state is already ON");if(this.state.pending())throw new Error("state is pending");this.state.on("pending"),this.autoReconnect=!0,t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.connectRxSocket()];case 2:return t.sent(),this.state.on(!0),[3,4];case 3:return e=t.sent(),this.log.warn("IoService","start() failed:%s",e.message),this.state.off(!0),[3,4];case 4:return[2]}}))}))},e.prototype.stop=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:if(this.log.verbose("IoService","stop()"),this.state.off()){if(this.log.warn("IoService","stop() state is already off"),this.state.pending())throw new Error("state pending() is true");return[2]}if(this.state.off("pending"),this.autoReconnect=!1,!this._websocket)throw new Error("no websocket");return[4,this.socketClose(1e3,"IoService.stop()")];case 1:return e.sent(),this.state.off(!0),[2]}}))}))},e.prototype.restart=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:this.log.verbose("IoService","restart()"),t.label=1;case 1:return t.trys.push([1,4,,5]),[4,this.stop()];case 2:return t.sent(),[4,this.start()];case 3:return t.sent(),[3,5];case 4:throw e=t.sent(),this.log.error("IoService","restart() error:%s",e.message),e;case 5:return[2]}}))}))},e.prototype.initStateDealer=function(){var e=this;this.log.verbose("IoService","initStateDealer()");this.readyState.pipe(n.filter((function(e){return e===c.OPEN}))).subscribe((function(t){return e.stateOnOpen()}))},e.prototype.initRxSocket=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(s){if(this.log.verbose("IoService","initRxSocket()"),this.event)throw new Error("re-init is not permitted");return this.moObserver={next:this.socketSend.bind(this),error:this.socketClose.bind(this),complete:this.socketClose.bind(this)},e=new o.Observable((function(e){return t.log.verbose("IoService","initRxSocket() Observable.create()"),t.mtObserver=e,t.socketClose.bind(t)})),this.event=o.Subject.create(this.moObserver,e.pipe(n.share())),[2]}))}))},e.prototype.connectRxSocket=function(){return r(this,void 0,void 0,(function(){var e,t=this;return a(this,(function(o){if(this.log.verbose("IoService","connectRxSocket()"),this._websocket)throw new Error("already has a websocket");if(this.state.off())throw new Error("switch state is off");if(!this.state.pending())throw new Error("switch state is already ON");return this._websocket=new WebSocket(this.endPoint(),this.PROTOCOL),this.socketUpdateState(),e=new Promise((function(e,o){t.log.verbose("IoService","connectRxSocket() Promise()");var n=setTimeout((function(){t._websocket=null;var e=new Error("rxSocket connect timeout after "+Math.round(t.CONNECT_TIMEOUT/1e3));o(e)}),t.CONNECT_TIMEOUT);t._websocket.onopen=function(o){t.log.verbose("IoService","connectRxSocket() Promise() WebSocket.onOpen() resolve()"),t.socketUpdateState(),clearTimeout(n),e()}})),this._websocket.onmessage=this.socketOnMessage.bind(this),this._websocket.onerror=this.socketOnError.bind(this),this._websocket.onclose=this.socketOnClose.bind(this),[2,e]}))}))},e.prototype.endPoint=function(){var e=this.ENDPOINT+this._token;return this.log.verbose("IoService","endPoint() => %s",e),e},e.prototype.stateOnOpen=function(){this.log.verbose("IoService","stateOnOpen()"),this.socketSendBuffer(),this.rpcUpdate("from stateOnOpen()")},e.prototype.rpcDing=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(o){return this.log.verbose("IoService","ding(%s)",e),t={name:"ding",payload:e},this.event.next(t),[2]}))}))},e.prototype.rpcUpdate=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){return this.event.next({name:"update",payload:e}),[2]}))}))},e.prototype.socketClose=function(e,t){return r(this,void 0,void 0,(function(){var o=this;return a(this,(function(s){switch(s.label){case 0:if(this.log.verbose("IoService","socketClose()"),!this._websocket)throw new Error("no websocket");return this._websocket.close(e,t),this.socketUpdateState(),[4,new Promise((function(e){o.readyState.pipe(n.filter((function(e){return e===c.CLOSED}))).subscribe(e)}))];case 1:return s.sent(),[2]}}))}))},e.prototype.socketSend=function(e){this.log.silly("IoService","socketSend({name:%s, payload:%s})",e.name,e.payload),this._websocket||this.log.silly("IoService","socketSend() no _websocket");var t=JSON.stringify(e);this.sendBuffer.push(t),this.socketSendBuffer()},e.prototype.socketSendBuffer=function(){if(this.log.silly("IoService","socketSendBuffer() length:%s",this.sendBuffer.length),!this._websocket)throw new Error("socketSendBuffer(): no _websocket");if(this._websocket.readyState===WebSocket.OPEN)for(;this.sendBuffer.length;){var e=this.sendBuffer.shift();this.log.silly("IoService","socketSendBuffer() sending(%s)",e),this._websocket.send(e)}else this.log.warn("IoService","socketSendBuffer() readyState is not OPEN, send job delayed.")},e.prototype.socketUpdateState=function(){this.log.verbose("IoService","socketUpdateState() is %s",c[this._websocket.readyState]),this._websocket?this._readyState.next(this._websocket.readyState):this.log.error("IoService","socketUpdateState() no _websocket")},e.prototype.socketOnMessage=function(e){this.log.verbose("IoService","onMessage({data: %s})",e.data);var t=e.data,o={name:"raw",payload:t};try{var n=JSON.parse(t);o.name=n.name,o.payload=n.payload}catch(e){this.log.warn("IoService","onMessage parse message fail. save as RAW")}this.mtObserver.next(o)},e.prototype.socketOnError=function(e){this.log.silly("IoService","socketOnError(%s)",e)},e.prototype.socketOnClose=function(e){var t=this;this.log.verbose("IoService","socketOnClose({code:%s, reason:%s, returnValue:%s})",e.code,e.reason,e.returnValue),this.socketUpdateState(),this.autoReconnect?(this.state.on("pending"),setTimeout((function(){return r(t,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,this.connectRxSocket()];case 1:return t.sent(),this.state.on(!0),[3,3];case 2:return e=t.sent(),this.log.warn("IoService","socketOnClose() autoReconnect() exception: %s",e),this.state.off(!0),[3,3];case 3:return[2]}}))}))}),1e3)):this.state.off(!0),this._websocket=null,e.wasClean||this.log.warn("IoService","socketOnClose() event.wasClean FALSE")},e}(),l=function(){function e(e,o){this.log=e,this.ngZone=o,this.message=new t.EventEmitter,this.scan=new t.EventEmitter,this.login=new t.EventEmitter,this.logout=new t.EventEmitter,this.error=new t.EventEmitter,this.heartbeat=new t.EventEmitter,this.timerSub=null,this.counter=0,this.timestamp=new Date,this.log.verbose("WechatyComponent","constructor() v%s",h)}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token},set:function(e){this.log.verbose("WechatyComponent","set token(%s)",e);var t=(e||"").trim();if(this._token!==t){if(this._token=t,!this.ioService)return this.log.silly("WechatyComponent","set token() skip token init value"),void this.log.silly("WechatyComponent","set token() because ioService will do it inside ngOnInit()");this.log.silly("WechatyComponent","set token(%s) reloading ioService now...",t),this.ioService.token(this.token),this.ioService.restart()}else this.log.silly("WechatyComponent","set token(%s) not new",t)},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return this.log.verbose("WechatyComponent","ngOnInit() with token: "+this.token),this.ioService=new u,[4,this.ioService.init()];case 1:return e.sent(),this.ioService.event.subscribe(this.onIo.bind(this)),this.log.silly("WechatyComponent","ngOnInit() ioService.event.subscribe()-ed"),this.token?(this.ioService.token(this.token),[4,this.ioService.start()]):[3,3];case 2:e.sent(),e.label=3;case 3:return[2]}}))}))},e.prototype.ngOnDestroy=function(){this.log.verbose("WechatyComponent","ngOnDestroy()"),this.endTimer(),this.ioService&&this.ioService.stop()},e.prototype.onIo=function(e){switch(this.log.silly("WechatyComponent","onIo#%d(%s)",this.counter++,e.name),this.timestamp=new Date,e.name){case"scan":this.scan.emit(e.payload);break;case"login":this.login.emit(e.payload);break;case"logout":this.logout.emit(e.payload);break;case"message":this.message.emit(e.payload);break;case"error":this.error.emit(e.payload);break;case"ding":case"dong":case"raw":this.heartbeat.emit(e.name+"["+e.payload+"]");break;case"heartbeat":this.heartbeat.emit(e.payload);break;case"sys":this.log.silly("WechatyComponent","onIo(%s): %s",e.name,e.payload);break;default:this.log.warn("WechatyComponent","onIo() unknown event name: %s[%s]",e.name,e.payload)}},e.prototype.reset=function(e){this.log.verbose("WechatyComponent","reset(%s)",e);var t={name:"reset",payload:e};if(!this.ioService)throw new Error("no ioService");this.ioService.event.next(t)},e.prototype.shutdown=function(e){this.log.verbose("WechatyComponent","shutdown(%s)",e);var t={name:"shutdown",payload:e};if(!this.ioService)throw new Error("no ioService");this.ioService.event.next(t)},e.prototype.startSyncMessage=function(){this.log.verbose("WechatyComponent","startSyncMessage()");if(!this.ioService)throw new Error("no ioService");this.ioService.event.next({name:"botie",payload:{args:["message"],source:"return this.syncMessage(message)"}})},e.prototype.startTimer=function(){var e=this;this.log.verbose("WechatyComponent","startTimer()"),this.ender=new o.Subject,this.ngZone.runOutsideAngular((function(){e.timer=o.interval(3e3).pipe(n.tap((function(t){e.log.verbose("do"," %d",t)})),n.takeUntil(e.ender),n.share())})),this.timerSub=this.timer.subscribe((function(t){if(e.counter=t,!e.ioService)throw new Error("no ioService");e.ioService.rpcDing(e.counter)}))},e.prototype.endTimer=function(){this.log.verbose("WechatyComponent","endTimer()"),this.timerSub&&(this.timerSub.unsubscribe(),this.timerSub=null),this.ender&&this.ender.next(null)},e.prototype.logoff=function(e){this.log.silly("WechatyComponent","logoff(%s)",e);var t={name:"logout",payload:e};this.ioService.event.next(t)},Object.defineProperty(e.prototype,"readyState",{get:function(){return this.ioService.readyState},enumerable:!1,configurable:!0}),e}();l.decorators=[{type:t.Component,args:[{selector:"wechaty",template:"<ng-content></ng-content>"}]}],l.ctorParameters=function(){return[{type:s.Brolog},{type:t.NgZone}]},l.propDecorators={message:[{type:t.Output}],scan:[{type:t.Output}],login:[{type:t.Output}],logout:[{type:t.Output}],error:[{type:t.Output}],heartbeat:[{type:t.Output}],token:[{type:t.Input}]};var p=function(){};p.decorators=[{type:t.NgModule,args:[{id:"wechaty",declarations:[l],exports:[l]}]}],e.VERSION=h,e.WechatyComponent=l,e.WechatyModule=p,e.ɵa=l,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=chatie-angular.umd.min.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"ɵa":{"__symbolic":"reference","name":"WechatyComponent"},"ScanInfo":{"__symbolic":"interface"},"UserInfo":{"__symbolic":"interface"},"WechatyComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"wechaty","template":"<ng-content></ng-content>"}]}],"members":{"message":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":66,"character":3}}]}],"scan":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"login":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"logout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":70,"character":3}}]}],"heartbeat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":71,"character":3}}]}],"token":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"brolog","name":"Brolog","line":108,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":109,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onIo":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"shutdown":[{"__symbolic":"method"}],"startSyncMessage":[{"__symbolic":"method"}],"startTimer":[{"__symbolic":"method"}],"endTimer":[{"__symbolic":"method"}],"logoff":[{"__symbolic":"method"}]}},"WechatyModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"id":"wechaty","declarations":[{"__symbolic":"reference","name":"ɵa"}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"VERSION":"0.7.2"},"origins":{"ɵa":"./src/wechaty/wechaty.component","ScanInfo":"./src/wechaty/wechaty.component","UserInfo":"./src/wechaty/wechaty.component","WechatyComponent":"./src/wechaty/wechaty.component","WechatyModule":"./src/wechaty/wechaty.module","VERSION":"./src/version"},"importAs":"@chatie/angular"}
{"__symbolic":"module","version":4,"metadata":{"ɵa":{"__symbolic":"reference","name":"WechatyComponent"},"ScanInfo":{"__symbolic":"interface"},"UserInfo":{"__symbolic":"interface"},"WechatyComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":47,"character":1},"arguments":[{"selector":"wechaty","template":"<ng-content></ng-content>"}]}],"members":{"message":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":66,"character":3}}]}],"scan":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"login":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"logout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"error":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":70,"character":3}}]}],"heartbeat":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":71,"character":3}}]}],"token":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"brolog","name":"Brolog","line":108,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":109,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onIo":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"shutdown":[{"__symbolic":"method"}],"startSyncMessage":[{"__symbolic":"method"}],"startTimer":[{"__symbolic":"method"}],"endTimer":[{"__symbolic":"method"}],"logoff":[{"__symbolic":"method"}]}},"WechatyModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"id":"wechaty","declarations":[{"__symbolic":"reference","name":"ɵa"}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{}},"VERSION":"0.7.3"},"origins":{"ɵa":"./src/wechaty/wechaty.component","ScanInfo":"./src/wechaty/wechaty.component","UserInfo":"./src/wechaty/wechaty.component","WechatyComponent":"./src/wechaty/wechaty.component","WechatyModule":"./src/wechaty/wechaty.module","VERSION":"./src/version"},"importAs":"@chatie/angular"}
/**
* This file was auto generated from scripts/generate-version.sh
*/
export const VERSION = '0.7.2';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hbmd1bGFyL2FuZ3VsYXIvIiwic291cmNlcyI6WyJzcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBVyxPQUFPLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0byBnZW5lcmF0ZWQgZnJvbSBzY3JpcHRzL2dlbmVyYXRlLXZlcnNpb24uc2hcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT046IHN0cmluZyA9ICcwLjcuMidcbiJdfQ==
export const VERSION = '0.7.3';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9hbmd1bGFyL2FuZ3VsYXIvIiwic291cmNlcyI6WyJzcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBVyxPQUFPLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZmlsZSB3YXMgYXV0byBnZW5lcmF0ZWQgZnJvbSBzY3JpcHRzL2dlbmVyYXRlLXZlcnNpb24uc2hcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT046IHN0cmluZyA9ICcwLjcuMydcbiJdfQ==

@@ -129,3 +129,3 @@ import { __awaiter } from "tslib";

args: ['message'],
script: 'return this.syncMessage(message)',
source: 'return this.syncMessage(message)',
},

@@ -210,2 +210,2 @@ };

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VjaGF0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYW5ndWxhci9hbmd1bGFyLyIsInNvdXJjZXMiOlsic3JjL3dlY2hhdHkvd2VjaGF0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkMsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBR1AsTUFBd0IsZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFFTCxPQUFPLEVBRVAsUUFBUSxHQUNULE1BQXdCLE1BQU0sQ0FBQTtBQUMvQixPQUFPLEVBQ0wsS0FBSyxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1YsTUFBd0IsZ0JBQWdCLENBQUE7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFRLFFBQVEsQ0FBQTtBQUVqQyxPQUFPLEVBRUwsU0FBUyxHQUdWLE1BQXdCLE1BQU0sQ0FBQTtBQWtDL0IsTUFBTSxPQUFPLGdCQUFnQjtJQTBDM0IsWUFDVSxHQUFjLEVBQ2QsTUFBYztRQURkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBM0NkLFlBQU8sR0FBSyxJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ3RDLFNBQUksR0FBUSxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFVBQUssR0FBTyxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFdBQU0sR0FBTSxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFVBQUssR0FBTyxJQUFJLFlBQVksRUFBUyxDQUFBO1FBQ3JDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFBO1FBNEJyQyxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUs1QyxZQUFPLEdBQUcsQ0FBQyxDQUFBO1FBQ1gsY0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFNcEIsSUFB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RUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1NBQ3JCO1FBQ0Qsb0JBQW9CO1FBRXBCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JCLG9CQUFvQjtTQUNyQjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBZTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFFeEQsTUFBTSxTQUFTLEdBQVk7WUFDekIsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsTUFBTTtTQUNoQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQTtJQUNsQyxDQUFDOzs7WUEzT0YsU0FBUyxTQUFDO2dCQUNULDhDQUE4QztnQkFDOUMsUUFBUSxFQUFFLFNBQVM7Z0JBQ25COzs7Ozs7Ozs7bUJBU0c7Z0JBQ0gsUUFBUSxFQUFFLDJCQUEyQjthQUl0Qzs7O1lBeENRLE1BQU07WUFsQmIsTUFBTTs7O3NCQTRETCxNQUFNO21CQUNOLE1BQU07b0JBQ04sTUFBTTtxQkFDTixNQUFNO29CQUNOLE1BQU07d0JBQ04sTUFBTTtvQkFJTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJy4uL2NvbmZpZydcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE91dHB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgaW50ZXJ2YWwsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBzaGFyZSxcbiAgdGFwLFxuICB0YWtlVW50aWwsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBCcm9sb2cgfSAgIGZyb20gJ2Jyb2xvZydcblxuaW1wb3J0IHtcbiAgSW9FdmVudCxcbiAgSW9TZXJ2aWNlLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdW51c2VkLXZhcmlhYmxlXG4gIFJlYWR5U3RhdGUsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJy4vaW8nXG5cbi8qKlxuICogZm9yIHBheWxvYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FuSW5mbyB7XG4gIHFyY29kZTogc3RyaW5nXG4gIHN0YXR1czogbnVtYmVyXG4gIGRhdGE/OiAgc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3dlY2hhdHknLFxuICAvKipcbiAgICogaHR0cDovL2xvY2FsaG9zdDo0MjAwL2FwcC5jb21wb25lbnQuaHRtbCA0MDQgKE5vdCBGb3VuZClcbiAgICogem9uZS5qczozNDQgVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiBGYWlsZWQgdG8gbG9hZCBhcHAuY29tcG9uZW50Lmh0bWxcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci1jbGkvaXNzdWVzLzI1OTIjaXNzdWVjb21tZW50LTI2NjYzNTI2NlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9pc3N1ZXMvMjI5M1xuICAgKlxuICAgKiBjb25zb2xlLmxvZyBmcm9tIGFuZ3VsYXI6XG4gICAqICAgSWYgeW91J3JlIHVzaW5nIFdlYnBhY2sgeW91IHNob3VsZCBpbmxpbmUgdGhlIHRlbXBsYXRlIGFuZCB0aGUgc3R5bGVzLFxuICAgKiAgIHNlZSBodHRwczovL2dvby5nbC9YMko4emMuXG4gICAqL1xuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBzdHlsZVVybHM6IFsnLi93ZWNoYXR5LmNvbXBvbmVudC5jc3MnXSxcbiAgLy8gdGVtcGxhdGVVcmw6ICd3ZWNoYXR5LmNvbXBvbmVudC5odG1sJyxcbiAgLy8gbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbn0pXG5leHBvcnQgY2xhc3MgV2VjaGF0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIG1lc3NhZ2UgICA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBzY2FuICAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFNjYW5JbmZvPigpXG4gIEBPdXRwdXQoKSBsb2dpbiAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJJbmZvPigpXG4gIEBPdXRwdXQoKSBsb2dvdXQgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJJbmZvPigpXG4gIEBPdXRwdXQoKSBlcnJvciAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpXG4gIEBPdXRwdXQoKSBoZWFydGJlYXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIHByaXZhdGUgX3Rva2VuOiBzdHJpbmdcbiAgZ2V0IHRva2VuKCkgeyByZXR1cm4gdGhpcy5fdG9rZW4gfVxuICBASW5wdXQoKSBzZXQgdG9rZW4oX25ld1Rva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ3NldCB0b2tlbiglcyknLCBfbmV3VG9rZW4pXG5cbiAgICBjb25zdCBuZXdUb2tlbiA9IChfbmV3VG9rZW4gfHwgJycpLnRyaW0oKVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuID09PSBuZXdUb2tlbikge1xuICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnc2V0IHRva2VuKCVzKSBub3QgbmV3JywgbmV3VG9rZW4pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl90b2tlbiA9IG5ld1Rva2VuXG5cbiAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy5zaWxseSgnV2VjaGF0eUNvbXBvbmVudCcsICdzZXQgdG9rZW4oKSBza2lwIHRva2VuIGluaXQgdmFsdWUnKVxuICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnc2V0IHRva2VuKCkgYmVjYXVzZSBpb1NlcnZpY2Ugd2lsbCBkbyBpdCBpbnNpZGUgbmdPbkluaXQoKScpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5zaWxseSgnV2VjaGF0eUNvbXBvbmVudCcsICdzZXQgdG9rZW4oJXMpIHJlbG9hZGluZyBpb1NlcnZpY2Ugbm93Li4uJywgbmV3VG9rZW4pXG4gICAgdGhpcy5pb1NlcnZpY2UudG9rZW4odGhpcy50b2tlbilcbiAgICB0aGlzLmlvU2VydmljZS5yZXN0YXJ0KCkgLy8gYXN5bmNcbiAgfVxuXG4gIHByaXZhdGUgdGltZXI6IE9ic2VydmFibGU8YW55PlxuICBwcml2YXRlIHRpbWVyU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGVuZGVyOiBTdWJqZWN0PGFueT5cblxuICBwcml2YXRlIGlvU2VydmljZTogSW9TZXJ2aWNlXG5cbiAgY291bnRlciA9IDBcbiAgdGltZXN0YW1wID0gbmV3IERhdGUoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nOiAgICBCcm9sb2csXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdjb25zdHJ1Y3RvcigpIHYlcycsIFZFUlNJT04pXG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ25nT25Jbml0KCkgd2l0aCB0b2tlbjogJyArIHRoaXMudG9rZW4pXG5cbiAgICB0aGlzLmlvU2VydmljZSA9IG5ldyBJb1NlcnZpY2UoKVxuICAgIGF3YWl0IHRoaXMuaW9TZXJ2aWNlLmluaXQoKVxuXG4gICAgdGhpcy5pb1NlcnZpY2UuZXZlbnQuc3Vic2NyaWJlKHRoaXMub25Jby5iaW5kKHRoaXMpKVxuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ25nT25Jbml0KCkgaW9TZXJ2aWNlLmV2ZW50LnN1YnNjcmliZSgpLWVkJylcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCh0b2tlbikgbWlnaHQgbm90IGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yKClcbiAgICAgKi9cbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgdGhpcy5pb1NlcnZpY2UudG9rZW4odGhpcy50b2tlbilcbiAgICAgIGF3YWl0IHRoaXMuaW9TZXJ2aWNlLnN0YXJ0KClcbiAgICB9XG5cbiAgICAvLyB0aGlzLnN0YXJ0VGltZXIoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICduZ09uRGVzdHJveSgpJylcblxuICAgIHRoaXMuZW5kVGltZXIoKVxuXG4gICAgaWYgKHRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aGlzLmlvU2VydmljZS5zdG9wKClcbiAgICAgIC8vIHRoaXMuaW9TZXJ2aWNlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIG9uSW8oZTogSW9FdmVudCkge1xuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ29uSW8jJWQoJXMpJywgdGhpcy5jb3VudGVyKyssIGUubmFtZSlcbiAgICB0aGlzLnRpbWVzdGFtcCA9IG5ldyBEYXRlKClcblxuICAgIHN3aXRjaCAoZS5uYW1lKSB7XG4gICAgICBjYXNlICdzY2FuJzpcbiAgICAgICAgdGhpcy5zY2FuLmVtaXQoZS5wYXlsb2FkIGFzIFNjYW5JbmZvKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbG9naW4nOlxuICAgICAgICB0aGlzLmxvZ2luLmVtaXQoZS5wYXlsb2FkIGFzIFVzZXJJbmZvKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbG9nb3V0JzpcbiAgICAgICAgdGhpcy5sb2dvdXQuZW1pdChlLnBheWxvYWQgYXMgVXNlckluZm8pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgdGhpcy5tZXNzYWdlLmVtaXQoZS5wYXlsb2FkKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICB0aGlzLmVycm9yLmVtaXQoZS5wYXlsb2FkKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdkaW5nJzpcbiAgICAgIGNhc2UgJ2RvbmcnOlxuICAgICAgY2FzZSAncmF3JzpcbiAgICAgICAgdGhpcy5oZWFydGJlYXQuZW1pdChlLm5hbWUgKyAnWycgKyBlLnBheWxvYWQgKyAnXScpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdoZWFydGJlYXQnOlxuICAgICAgICB0aGlzLmhlYXJ0YmVhdC5lbWl0KGUucGF5bG9hZClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnc3lzJzpcbiAgICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnb25Jbyglcyk6ICVzJywgZS5uYW1lLCBlLnBheWxvYWQpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMubG9nLndhcm4oJ1dlY2hhdHlDb21wb25lbnQnLCAnb25JbygpIHVua25vd24gZXZlbnQgbmFtZTogJXNbJXNdJywgZS5uYW1lLCBlLnBheWxvYWQpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0KHJlYXNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdyZXNldCglcyknLCByZWFzb24pXG5cbiAgICBjb25zdCByZXNldEV2ZW50OiBJb0V2ZW50ID0ge1xuICAgICAgbmFtZTogJ3Jlc2V0JyxcbiAgICAgIHBheWxvYWQ6IHJlYXNvbixcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlvU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBpb1NlcnZpY2UnKVxuICAgIH1cbiAgICB0aGlzLmlvU2VydmljZS5ldmVudC5uZXh0KHJlc2V0RXZlbnQpXG4gIH1cblxuICBwdWJsaWMgc2h1dGRvd24ocmVhc29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ3NodXRkb3duKCVzKScsIHJlYXNvbilcblxuICAgIGNvbnN0IHNodXRkb3duRXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnc2h1dGRvd24nLFxuICAgICAgcGF5bG9hZDogcmVhc29uLFxuICAgIH1cbiAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIGlvU2VydmljZScpXG4gICAgfVxuICAgIHRoaXMuaW9TZXJ2aWNlLmV2ZW50Lm5leHQoc2h1dGRvd25FdmVudClcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFN5bmNNZXNzYWdlKCkge1xuICAgIHRoaXMubG9nLnZlcmJvc2UoJ1dlY2hhdHlDb21wb25lbnQnLCAnc3RhcnRTeW5jTWVzc2FnZSgpJylcblxuICAgIGNvbnN0IGJvdGllRXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnYm90aWUnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnXSxcbiAgICAgICAgc2NyaXB0OiAncmV0dXJuIHRoaXMuc3luY01lc3NhZ2UobWVzc2FnZSknLFxuICAgICAgfSxcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlvU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBpb1NlcnZpY2UnKVxuICAgIH1cbiAgICB0aGlzLmlvU2VydmljZS5ldmVudC5uZXh0KGJvdGllRXZlbnQpXG4gIH1cblxuICBzdGFydFRpbWVyKCkge1xuICAgIHRoaXMubG9nLnZlcmJvc2UoJ1dlY2hhdHlDb21wb25lbnQnLCAnc3RhcnRUaW1lcigpJylcbiAgICB0aGlzLmVuZGVyID0gbmV3IFN1YmplY3QoKVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvcHJvdHJhY3Rvci9pc3N1ZXMvMzM0OSNpc3N1ZWNvbW1lbnQtMjMyMjUzMDU5XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2p1bGllbXIvbmdjb25mLTIwMTYtem9uZXMvYmxvYi9tYXN0ZXIvc3JjL2FwcC9tYWluLnRzI0wzOFxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMudGltZXIgPSBpbnRlcnZhbCgzMDAwKS5waXBlKFxuICAgICAgICB0YXAoaSA9PiB7IHRoaXMubG9nLnZlcmJvc2UoJ2RvJywgJyAlZCcsIGkpIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5lbmRlciksXG4gICAgICAgIHNoYXJlKCksXG4gICAgICApXG4gICAgICAvLyAucHVibGlzaCgpXG5cbiAgICB9KVxuXG4gICAgdGhpcy50aW1lclN1YiA9IHRoaXMudGltZXIuc3Vic2NyaWJlKHQgPT4ge1xuICAgICAgdGhpcy5jb3VudGVyID0gdFxuXG4gICAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gaW9TZXJ2aWNlJylcbiAgICAgIH1cbiAgICAgIHRoaXMuaW9TZXJ2aWNlLnJwY0RpbmcodGhpcy5jb3VudGVyKVxuICAgICAgLy8gdGhpcy5tZXNzYWdlLmVtaXQoJyMnICsgdGhpcy50b2tlbiArICc6JyArIGRvbmcpXG4gICAgfSlcblxuICB9XG5cbiAgZW5kVGltZXIoKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdlbmRUaW1lcigpJylcblxuICAgIGlmICh0aGlzLnRpbWVyU3ViKSB7XG4gICAgICB0aGlzLnRpbWVyU3ViLnVuc3Vic2NyaWJlKClcbiAgICAgIHRoaXMudGltZXJTdWIgPSBudWxsXG4gICAgfVxuICAgIC8vIHRoaXMudGltZXIgPSBudWxsXG5cbiAgICBpZiAodGhpcy5lbmRlcikge1xuICAgICAgdGhpcy5lbmRlci5uZXh0KG51bGwpXG4gICAgICAvLyB0aGlzLmVuZGVyID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGxvZ29mZihyZWFzb24/OiBzdHJpbmcpIHsgLy8gdXNlIHRoZSBuYW1lIGBsb2dvZmZgIGhlcmUgdG8gcHJldmVudCBjb25mbGljdCB3aXRoIEBPdXRwdXQobG9nb3V0KVxuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ2xvZ29mZiglcyknLCByZWFzb24pXG5cbiAgICBjb25zdCBxdWl0RXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnbG9nb3V0JyxcbiAgICAgIHBheWxvYWQ6IHJlYXNvbixcbiAgICB9XG4gICAgdGhpcy5pb1NlcnZpY2UuZXZlbnQubmV4dChxdWl0RXZlbnQpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW9TZXJ2aWNlLnJlYWR5U3RhdGVcbiAgfVxuXG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VjaGF0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYW5ndWxhci9hbmd1bGFyLyIsInNvdXJjZXMiOlsic3JjL3dlY2hhdHkvd2VjaGF0eS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkMsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBR1AsTUFBd0IsZUFBZSxDQUFBO0FBRXhDLE9BQU8sRUFFTCxPQUFPLEVBRVAsUUFBUSxHQUNULE1BQXdCLE1BQU0sQ0FBQTtBQUMvQixPQUFPLEVBQ0wsS0FBSyxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1YsTUFBd0IsZ0JBQWdCLENBQUE7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFRLFFBQVEsQ0FBQTtBQUVqQyxPQUFPLEVBRUwsU0FBUyxHQUdWLE1BQXdCLE1BQU0sQ0FBQTtBQWtDL0IsTUFBTSxPQUFPLGdCQUFnQjtJQTBDM0IsWUFDVSxHQUFjLEVBQ2QsTUFBYztRQURkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBM0NkLFlBQU8sR0FBSyxJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ3RDLFNBQUksR0FBUSxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFVBQUssR0FBTyxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFdBQU0sR0FBTSxJQUFJLFlBQVksRUFBWSxDQUFBO1FBQ3hDLFVBQUssR0FBTyxJQUFJLFlBQVksRUFBUyxDQUFBO1FBQ3JDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFBO1FBNEJyQyxhQUFRLEdBQXdCLElBQUksQ0FBQTtRQUs1QyxZQUFPLEdBQUcsQ0FBQyxDQUFBO1FBQ1gsY0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFNcEIsSUFB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RUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1NBQ3JCO1FBQ0Qsb0JBQW9CO1FBRXBCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JCLG9CQUFvQjtTQUNyQjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBZTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFFeEQsTUFBTSxTQUFTLEdBQVk7WUFDekIsSUFBSSxFQUFFLFFBQVE7WUFDZCxPQUFPLEVBQUUsTUFBTTtTQUNoQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQTtJQUNsQyxDQUFDOzs7WUEzT0YsU0FBUyxTQUFDO2dCQUNULDhDQUE4QztnQkFDOUMsUUFBUSxFQUFFLFNBQVM7Z0JBQ25COzs7Ozs7Ozs7bUJBU0c7Z0JBQ0gsUUFBUSxFQUFFLDJCQUEyQjthQUl0Qzs7O1lBeENRLE1BQU07WUFsQmIsTUFBTTs7O3NCQTRETCxNQUFNO21CQUNOLE1BQU07b0JBQ04sTUFBTTtxQkFDTixNQUFNO29CQUNOLE1BQU07d0JBQ04sTUFBTTtvQkFJTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gJy4uL2NvbmZpZydcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE91dHB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgaW50ZXJ2YWwsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBzaGFyZSxcbiAgdGFwLFxuICB0YWtlVW50aWwsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBCcm9sb2cgfSAgIGZyb20gJ2Jyb2xvZydcblxuaW1wb3J0IHtcbiAgSW9FdmVudCxcbiAgSW9TZXJ2aWNlLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdW51c2VkLXZhcmlhYmxlXG4gIFJlYWR5U3RhdGUsXG59ICAgICAgICAgICAgICAgICAgIGZyb20gJy4vaW8nXG5cbi8qKlxuICogZm9yIHBheWxvYWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FuSW5mbyB7XG4gIHFyY29kZTogc3RyaW5nXG4gIHN0YXR1czogbnVtYmVyXG4gIGRhdGE/OiAgc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckluZm8ge1xuICBpZDogbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3dlY2hhdHknLFxuICAvKipcbiAgICogaHR0cDovL2xvY2FsaG9zdDo0MjAwL2FwcC5jb21wb25lbnQuaHRtbCA0MDQgKE5vdCBGb3VuZClcbiAgICogem9uZS5qczozNDQgVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiBGYWlsZWQgdG8gbG9hZCBhcHAuY29tcG9uZW50Lmh0bWxcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci1jbGkvaXNzdWVzLzI1OTIjaXNzdWVjb21tZW50LTI2NjYzNTI2NlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyLWNsaS9pc3N1ZXMvMjI5M1xuICAgKlxuICAgKiBjb25zb2xlLmxvZyBmcm9tIGFuZ3VsYXI6XG4gICAqICAgSWYgeW91J3JlIHVzaW5nIFdlYnBhY2sgeW91IHNob3VsZCBpbmxpbmUgdGhlIHRlbXBsYXRlIGFuZCB0aGUgc3R5bGVzLFxuICAgKiAgIHNlZSBodHRwczovL2dvby5nbC9YMko4emMuXG4gICAqL1xuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBzdHlsZVVybHM6IFsnLi93ZWNoYXR5LmNvbXBvbmVudC5jc3MnXSxcbiAgLy8gdGVtcGxhdGVVcmw6ICd3ZWNoYXR5LmNvbXBvbmVudC5odG1sJyxcbiAgLy8gbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbn0pXG5leHBvcnQgY2xhc3MgV2VjaGF0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIG1lc3NhZ2UgICA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBzY2FuICAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFNjYW5JbmZvPigpXG4gIEBPdXRwdXQoKSBsb2dpbiAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJJbmZvPigpXG4gIEBPdXRwdXQoKSBsb2dvdXQgICAgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJJbmZvPigpXG4gIEBPdXRwdXQoKSBlcnJvciAgICAgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpXG4gIEBPdXRwdXQoKSBoZWFydGJlYXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxuXG4gIHByaXZhdGUgX3Rva2VuOiBzdHJpbmdcbiAgZ2V0IHRva2VuKCkgeyByZXR1cm4gdGhpcy5fdG9rZW4gfVxuICBASW5wdXQoKSBzZXQgdG9rZW4oX25ld1Rva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ3NldCB0b2tlbiglcyknLCBfbmV3VG9rZW4pXG5cbiAgICBjb25zdCBuZXdUb2tlbiA9IChfbmV3VG9rZW4gfHwgJycpLnRyaW0oKVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuID09PSBuZXdUb2tlbikge1xuICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnc2V0IHRva2VuKCVzKSBub3QgbmV3JywgbmV3VG9rZW4pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl90b2tlbiA9IG5ld1Rva2VuXG5cbiAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZy5zaWxseSgnV2VjaGF0eUNvbXBvbmVudCcsICdzZXQgdG9rZW4oKSBza2lwIHRva2VuIGluaXQgdmFsdWUnKVxuICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnc2V0IHRva2VuKCkgYmVjYXVzZSBpb1NlcnZpY2Ugd2lsbCBkbyBpdCBpbnNpZGUgbmdPbkluaXQoKScpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5zaWxseSgnV2VjaGF0eUNvbXBvbmVudCcsICdzZXQgdG9rZW4oJXMpIHJlbG9hZGluZyBpb1NlcnZpY2Ugbm93Li4uJywgbmV3VG9rZW4pXG4gICAgdGhpcy5pb1NlcnZpY2UudG9rZW4odGhpcy50b2tlbilcbiAgICB0aGlzLmlvU2VydmljZS5yZXN0YXJ0KCkgLy8gYXN5bmNcbiAgfVxuXG4gIHByaXZhdGUgdGltZXI6IE9ic2VydmFibGU8YW55PlxuICBwcml2YXRlIHRpbWVyU3ViOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuICBwcml2YXRlIGVuZGVyOiBTdWJqZWN0PGFueT5cblxuICBwcml2YXRlIGlvU2VydmljZTogSW9TZXJ2aWNlXG5cbiAgY291bnRlciA9IDBcbiAgdGltZXN0YW1wID0gbmV3IERhdGUoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nOiAgICBCcm9sb2csXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdjb25zdHJ1Y3RvcigpIHYlcycsIFZFUlNJT04pXG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ25nT25Jbml0KCkgd2l0aCB0b2tlbjogJyArIHRoaXMudG9rZW4pXG5cbiAgICB0aGlzLmlvU2VydmljZSA9IG5ldyBJb1NlcnZpY2UoKVxuICAgIGF3YWl0IHRoaXMuaW9TZXJ2aWNlLmluaXQoKVxuXG4gICAgdGhpcy5pb1NlcnZpY2UuZXZlbnQuc3Vic2NyaWJlKHRoaXMub25Jby5iaW5kKHRoaXMpKVxuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ25nT25Jbml0KCkgaW9TZXJ2aWNlLmV2ZW50LnN1YnNjcmliZSgpLWVkJylcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCh0b2tlbikgbWlnaHQgbm90IGluaXRpYWxpemVkIGluIGNvbnN0cnVjdG9yKClcbiAgICAgKi9cbiAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgdGhpcy5pb1NlcnZpY2UudG9rZW4odGhpcy50b2tlbilcbiAgICAgIGF3YWl0IHRoaXMuaW9TZXJ2aWNlLnN0YXJ0KClcbiAgICB9XG5cbiAgICAvLyB0aGlzLnN0YXJ0VGltZXIoKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICduZ09uRGVzdHJveSgpJylcblxuICAgIHRoaXMuZW5kVGltZXIoKVxuXG4gICAgaWYgKHRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aGlzLmlvU2VydmljZS5zdG9wKClcbiAgICAgIC8vIHRoaXMuaW9TZXJ2aWNlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIG9uSW8oZTogSW9FdmVudCkge1xuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ29uSW8jJWQoJXMpJywgdGhpcy5jb3VudGVyKyssIGUubmFtZSlcbiAgICB0aGlzLnRpbWVzdGFtcCA9IG5ldyBEYXRlKClcblxuICAgIHN3aXRjaCAoZS5uYW1lKSB7XG4gICAgICBjYXNlICdzY2FuJzpcbiAgICAgICAgdGhpcy5zY2FuLmVtaXQoZS5wYXlsb2FkIGFzIFNjYW5JbmZvKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbG9naW4nOlxuICAgICAgICB0aGlzLmxvZ2luLmVtaXQoZS5wYXlsb2FkIGFzIFVzZXJJbmZvKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbG9nb3V0JzpcbiAgICAgICAgdGhpcy5sb2dvdXQuZW1pdChlLnBheWxvYWQgYXMgVXNlckluZm8pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgdGhpcy5tZXNzYWdlLmVtaXQoZS5wYXlsb2FkKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICB0aGlzLmVycm9yLmVtaXQoZS5wYXlsb2FkKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdkaW5nJzpcbiAgICAgIGNhc2UgJ2RvbmcnOlxuICAgICAgY2FzZSAncmF3JzpcbiAgICAgICAgdGhpcy5oZWFydGJlYXQuZW1pdChlLm5hbWUgKyAnWycgKyBlLnBheWxvYWQgKyAnXScpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdoZWFydGJlYXQnOlxuICAgICAgICB0aGlzLmhlYXJ0YmVhdC5lbWl0KGUucGF5bG9hZClcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSAnc3lzJzpcbiAgICAgICAgdGhpcy5sb2cuc2lsbHkoJ1dlY2hhdHlDb21wb25lbnQnLCAnb25Jbyglcyk6ICVzJywgZS5uYW1lLCBlLnBheWxvYWQpXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMubG9nLndhcm4oJ1dlY2hhdHlDb21wb25lbnQnLCAnb25JbygpIHVua25vd24gZXZlbnQgbmFtZTogJXNbJXNdJywgZS5uYW1lLCBlLnBheWxvYWQpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0KHJlYXNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdyZXNldCglcyknLCByZWFzb24pXG5cbiAgICBjb25zdCByZXNldEV2ZW50OiBJb0V2ZW50ID0ge1xuICAgICAgbmFtZTogJ3Jlc2V0JyxcbiAgICAgIHBheWxvYWQ6IHJlYXNvbixcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlvU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBpb1NlcnZpY2UnKVxuICAgIH1cbiAgICB0aGlzLmlvU2VydmljZS5ldmVudC5uZXh0KHJlc2V0RXZlbnQpXG4gIH1cblxuICBwdWJsaWMgc2h1dGRvd24ocmVhc29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZy52ZXJib3NlKCdXZWNoYXR5Q29tcG9uZW50JywgJ3NodXRkb3duKCVzKScsIHJlYXNvbilcblxuICAgIGNvbnN0IHNodXRkb3duRXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnc2h1dGRvd24nLFxuICAgICAgcGF5bG9hZDogcmVhc29uLFxuICAgIH1cbiAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIGlvU2VydmljZScpXG4gICAgfVxuICAgIHRoaXMuaW9TZXJ2aWNlLmV2ZW50Lm5leHQoc2h1dGRvd25FdmVudClcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFN5bmNNZXNzYWdlKCkge1xuICAgIHRoaXMubG9nLnZlcmJvc2UoJ1dlY2hhdHlDb21wb25lbnQnLCAnc3RhcnRTeW5jTWVzc2FnZSgpJylcblxuICAgIGNvbnN0IGJvdGllRXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnYm90aWUnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnXSxcbiAgICAgICAgc291cmNlOiAncmV0dXJuIHRoaXMuc3luY01lc3NhZ2UobWVzc2FnZSknLFxuICAgICAgfSxcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlvU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBpb1NlcnZpY2UnKVxuICAgIH1cbiAgICB0aGlzLmlvU2VydmljZS5ldmVudC5uZXh0KGJvdGllRXZlbnQpXG4gIH1cblxuICBzdGFydFRpbWVyKCkge1xuICAgIHRoaXMubG9nLnZlcmJvc2UoJ1dlY2hhdHlDb21wb25lbnQnLCAnc3RhcnRUaW1lcigpJylcbiAgICB0aGlzLmVuZGVyID0gbmV3IFN1YmplY3QoKVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvcHJvdHJhY3Rvci9pc3N1ZXMvMzM0OSNpc3N1ZWNvbW1lbnQtMjMyMjUzMDU5XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2p1bGllbXIvbmdjb25mLTIwMTYtem9uZXMvYmxvYi9tYXN0ZXIvc3JjL2FwcC9tYWluLnRzI0wzOFxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMudGltZXIgPSBpbnRlcnZhbCgzMDAwKS5waXBlKFxuICAgICAgICB0YXAoaSA9PiB7IHRoaXMubG9nLnZlcmJvc2UoJ2RvJywgJyAlZCcsIGkpIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5lbmRlciksXG4gICAgICAgIHNoYXJlKCksXG4gICAgICApXG4gICAgICAvLyAucHVibGlzaCgpXG5cbiAgICB9KVxuXG4gICAgdGhpcy50aW1lclN1YiA9IHRoaXMudGltZXIuc3Vic2NyaWJlKHQgPT4ge1xuICAgICAgdGhpcy5jb3VudGVyID0gdFxuXG4gICAgICBpZiAoIXRoaXMuaW9TZXJ2aWNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gaW9TZXJ2aWNlJylcbiAgICAgIH1cbiAgICAgIHRoaXMuaW9TZXJ2aWNlLnJwY0RpbmcodGhpcy5jb3VudGVyKVxuICAgICAgLy8gdGhpcy5tZXNzYWdlLmVtaXQoJyMnICsgdGhpcy50b2tlbiArICc6JyArIGRvbmcpXG4gICAgfSlcblxuICB9XG5cbiAgZW5kVGltZXIoKSB7XG4gICAgdGhpcy5sb2cudmVyYm9zZSgnV2VjaGF0eUNvbXBvbmVudCcsICdlbmRUaW1lcigpJylcblxuICAgIGlmICh0aGlzLnRpbWVyU3ViKSB7XG4gICAgICB0aGlzLnRpbWVyU3ViLnVuc3Vic2NyaWJlKClcbiAgICAgIHRoaXMudGltZXJTdWIgPSBudWxsXG4gICAgfVxuICAgIC8vIHRoaXMudGltZXIgPSBudWxsXG5cbiAgICBpZiAodGhpcy5lbmRlcikge1xuICAgICAgdGhpcy5lbmRlci5uZXh0KG51bGwpXG4gICAgICAvLyB0aGlzLmVuZGVyID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGxvZ29mZihyZWFzb24/OiBzdHJpbmcpIHsgLy8gdXNlIHRoZSBuYW1lIGBsb2dvZmZgIGhlcmUgdG8gcHJldmVudCBjb25mbGljdCB3aXRoIEBPdXRwdXQobG9nb3V0KVxuICAgIHRoaXMubG9nLnNpbGx5KCdXZWNoYXR5Q29tcG9uZW50JywgJ2xvZ29mZiglcyknLCByZWFzb24pXG5cbiAgICBjb25zdCBxdWl0RXZlbnQ6IElvRXZlbnQgPSB7XG4gICAgICBuYW1lOiAnbG9nb3V0JyxcbiAgICAgIHBheWxvYWQ6IHJlYXNvbixcbiAgICB9XG4gICAgdGhpcy5pb1NlcnZpY2UuZXZlbnQubmV4dChxdWl0RXZlbnQpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW9TZXJ2aWNlLnJlYWR5U3RhdGVcbiAgfVxuXG59XG4iXX0=

@@ -11,3 +11,3 @@ import { __awaiter } from 'tslib';

*/
const VERSION = '0.7.2';
const VERSION = '0.7.3';

@@ -485,3 +485,3 @@ var ReadyState;

args: ['message'],
script: 'return this.syncMessage(message)',
source: 'return this.syncMessage(message)',
},

@@ -488,0 +488,0 @@ };

{
"$schema": "./node_modules/ng-packagr/package.schema.json",
"name": "@chatie/angular",
"version": "0.7.2",
"version": "0.7.3",
"description": "Wechaty Component NgModule",

@@ -6,0 +6,0 @@ "license": "Apache-2.0",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc