/* twilio-chat.js 4.1.0
The following license applies to all parts of this software except as
documented below.
Copyright (c) 2019, Twilio, inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. Neither the name of Twilio nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software includes javascript-state-machine under the following license.
Copyright (c) 2012, 2013, 2014, 2015, Jake Gordon and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
This software includes loglevel under the following license.
Copyright (c) 2013 Tim Perry
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
This software includes q under the following license.
Copyright 2009–2014 Kristopher Michael Kowal. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
This software includes platform.js under the following license.
Copyright 2014 Benjamin Tan
Copyright 2011-2015 John-David Dalton
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;((t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Twilio||(t.Twilio={})).Chat=e()}}(function(){return function(){return function e(t,r,n){function i(a,o){if(!r[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[a]={exports:{}};t[a][0].call(l.exports,function(e){return i(t[a][1][e]||e)},l,l.exports,e,t,r,n)}return r[a].exports}for(var s="function"==typeof require&&require,a=0;a=0;o--)(i=e[o])&&(a=(s<3?i(a):s>3?i(t,r,a):i(t,r))||a);return s>3&&a&&(0,g.default)(t,r,a),a},x=function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":(0,k.default)(Reflect))&&"function"==typeof y.default)return(0,y.default)(e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.Channel=void 0;var j=e("events"),T=e("./logger"),S=e("./data/members"),E=e("./member"),M=e("./data/messages"),I=e("./util"),P=e("./util/typecheck"),R=T.Logger.scope("Channel"),O={lastMessage:"lastMessage",attributes:"attributes",createdBy:"createdBy",dateCreated:"dateCreated",dateUpdated:"dateUpdated",friendlyName:"friendlyName",lastConsumedMessageIndex:"lastConsumedMessageIndex",notificationLevel:"notificationLevel",sid:"sid",status:"status",type:"type",uniqueName:"uniqueName",state:"state"};function N(e){try{return new Date(e)}catch(e){return null}}var L=function(e){function t(e,r,n){(0,h.default)(this,t);var i=(0,m.default)(this,(t.__proto__||(0,p.default)(t)).call(this)),s=r.attributes||{},a=r.createdBy,o=N(r.dateCreated),u=N(r.dateUpdated),c=r.friendlyName||null,b=(0,f.default)(r.lastConsumedMessageIndex)?r.lastConsumedMessageIndex:null,v=r.uniqueName||null;try{(0,d.default)(s)}catch(e){throw new Error("Attributes must be a valid JSON object.")}return i.services=e,i.sid=n,i.entityName=r.channel,i.channelState={uniqueName:v,status:"notParticipating",type:r.type,attributes:s,createdBy:a,dateCreated:o,dateUpdated:u,friendlyName:c,lastConsumedMessageIndex:b},r.notificationLevel&&(i.channelState.notificationLevel=r.notificationLevel),i.members=new l.default,i.membersEntity=new S.Members(i,i.services,i.members),i.membersEntity.on("memberJoined",i.emit.bind(i,"memberJoined")),i.membersEntity.on("memberLeft",i.emit.bind(i,"memberLeft")),i.membersEntity.on("memberUpdated",function(e){return i.emit("memberUpdated",e)}),i.messagesEntity=new M.Messages(i,e),i.messagesEntity.on("messageAdded",function(e){return i._onMessageAdded(e)}),i.messagesEntity.on("messageUpdated",function(e){return i.emit("messageUpdated",e)}),i.messagesEntity.on("messageRemoved",i.emit.bind(i,"messageRemoved")),i}return(0,v.default)(t,e),(0,b.default)(t,[{key:"_subscribe",value:function(){var e=this;return this.entityPromise?this.entityPromise:this.entityPromise=this.entityPromise||this.services.syncClient.document({id:this.entityName,mode:"open_existing"}).then(function(t){return e.entity=t,e.entity.on("updated",function(t){e._update(t.value)}),e.entity.on("removed",function(){return e.emit("removed",e)}),e._update(e.entity.value),t}).catch(function(t){throw e.entity=null,e.entityPromise=null,"disconnected"!=e.services.syncClient.connectionState&&R.error("Failed to get channel object",t),R.debug("ERROR: Failed to get channel object",t),t})}},{key:"_subscribeStreams",value:function(){var e=(0,c.default)(o.default.mark(function e(){var t,r;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._subscribe();case 3:return R.trace("_subscribeStreams, this.entity.value=",this.entity.value),t=this.entity.value.messages,r=this.entity.value.roster,e.next=8,u.default.all([this.messagesEntity.subscribe(t),this.membersEntity.subscribe(r)]);case 8:e.next=15;break;case 10:throw e.prev=10,e.t0=e.catch(0),"disconnected"!==this.services.syncClient.connectionState&&R.error("Failed to subscribe on channel objects",this.sid,e.t0),R.debug("ERROR: Failed to subscribe on channel objects",this.sid,e.t0),e.t0;case 15:case"end":return e.stop()}},e,this,[[0,10]])}));return function(){return e.apply(this,arguments)}}()},{key:"_unsubscribe",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isPrivate||!this.entity){e.next=5;break}return e.next=3,this.entity.close();case 3:this.entity=null,this.entityPromise=null;case 5:return e.abrupt("return",u.default.all([this.membersEntity.unsubscribe(),this.messagesEntity.unsubscribe()]));case 6:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"_setStatus",value:function(e,t){var r=this;this.statusSource=t,this.channelState.status!==e&&(this.channelState.status=e,"joined"===e?this._subscribeStreams().catch(function(t){if(R.debug("ERROR while setting channel status "+e,t),"disconnected"!==r.services.syncClient.connectionState)throw t}):"invited"===e?this._subscribe().catch(function(t){if(R.debug("ERROR while setting channel status "+e,t),"disconnected"!==r.services.syncClient.connectionState)throw t}):this.entityPromise&&this._unsubscribe().catch(function(t){if(R.debug("ERROR while setting channel status "+e,t),"disconnected"!==r.services.syncClient.connectionState)throw t}))}},{key:"_statusSource",value:function(){return this.statusSource}},{key:"_update",value:function(e){var r,o,u,c,l;R.trace("_update",e),t.preprocessUpdate(e,this.sid);var d=new a.default,f=!0,p=!1,h=void 0;try{for(var b,m=(0,i.default)((0,n.default)(e));!(f=(b=m.next()).done);f=!0){var v=b.value,y=O[v];if(y)switch(y){case O.status:if(!e.status||"unknown"===e.status||this.channelState.status===e.status)break;this.channelState.status=e.status,d.add(y);break;case O.attributes:if(I.isDeepEqual(this.channelState.attributes,e.attributes))break;this.channelState.attributes=e.attributes,d.add(y);break;case O.lastConsumedMessageIndex:if(void 0===e.lastConsumedMessageIndex||e.lastConsumedMessageIndex===this.channelState.lastConsumedMessageIndex)break;this.channelState.lastConsumedMessageIndex=e.lastConsumedMessageIndex,d.add(y);break;case O.lastMessage:if(this.channelState.lastMessage&&!e.lastMessage){delete this.channelState.lastMessage,d.add(y);break}this.channelState.lastMessage=this.channelState.lastMessage||{},void 0!==(null===(r=e.lastMessage)||void 0===r?void 0:r.index)&&e.lastMessage.index!==this.channelState.lastMessage.index&&(this.channelState.lastMessage.index=e.lastMessage.index,d.add(y)),void 0!==(null===(o=e.lastMessage)||void 0===o?void 0:o.timestamp)&&(null===(c=null===(u=this.channelState.lastMessage)||void 0===u?void 0:u.dateCreated)||void 0===c?void 0:c.getTime())!==e.lastMessage.timestamp.getTime()&&(this.channelState.lastMessage.dateCreated=e.lastMessage.timestamp,d.add(y)),I.isDeepEqual(this.channelState.lastMessage,{})&&delete this.channelState.lastMessage;break;case O.state:var g=e.state||void 0;if(void 0!==g&&(g.dateUpdated=new Date(g.dateUpdated)),I.isDeepEqual(this.channelState.state,g))break;this.channelState.state=g,d.add(y);break;default:var k=e[v]instanceof Date,_=k&&(null===(l=this.channelState[y])||void 0===l?void 0:l.getTime())===e[v].getTime(),w=!k&&this[y]===e[v];if(_||w)break;this.channelState[y]=e[v],d.add(y)}}}catch(e){p=!0,h=e}finally{try{!f&&m.return&&m.return()}finally{if(p)throw h}}d.size>0&&this.emit("updated",{channel:this,updateReasons:[].concat((0,s.default)(d))})}},{key:"_onMessageAdded",value:function(e){var t=!0,r=!1,n=void 0;try{for(var s,a=(0,i.default)(this.members.values());!(t=(s=a.next()).done);t=!0){var o=s.value;if(o.identity===e.author){o._endTyping();break}}}catch(e){r=!0,n=e}finally{try{!t&&a.return&&a.return()}finally{if(r)throw n}}this.emit("messageAdded",e)}},{key:"add",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.membersEntity.add(t));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"advanceLastConsumedMessageIndex",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.abrupt("return",this.services.consumptionHorizon.advanceLastConsumedMessageIndexForChannel(this.sid,t,this.lastConsumedMessageIndex));case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"decline",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("declineInvitation",{channelSid:this.sid});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"delete",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("destroyChannel",{channelSid:this.sid});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getAttributes",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribe();case 2:return e.abrupt("return",this.attributes);case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getMessages",value:function(){var e=(0,c.default)(o.default.mark(function e(t,r,n){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.abrupt("return",this.messagesEntity.getMessages(t,r,n));case 3:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"getMembers",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.abrupt("return",this.membersEntity.getMembers());case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getMembersCount",value:function(){var e=(0,c.default)(o.default.mark(function e(){var t,r,n;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.getSessionLinks();case 2:return t=e.sent,r=new I.UriBuilder(t.publicChannelsUrl).path(this.sid).build(),e.next=6,this.services.network.get(r);case 6:return n=e.sent,e.abrupt("return",n.body.members_count);case 8:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getMemberBySid",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.membersEntity.getMemberBySid(t));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getMemberByIdentity",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.membersEntity.getMemberByIdentity(t));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getMessagesCount",value:function(){var e=(0,c.default)(o.default.mark(function e(){var t,r,n;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.getSessionLinks();case 2:return t=e.sent,r=new I.UriBuilder(t.publicChannelsUrl).path(this.sid).build(),e.next=6,this.services.network.get(r);case 6:return n=e.sent,e.abrupt("return",n.body.messages_count);case 8:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getUnconsumedMessagesCount",value:function(){var e=(0,c.default)(o.default.mark(function e(){var t,r,n;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.getSessionLinks();case 2:return t=e.sent,r=new I.UriBuilder(t.myChannelsUrl).arg("ChannelSid",this.sid).build(),e.next=6,this.services.network.get(r);case 6:if(!(n=e.sent).body.channels.length||n.body.channels[0].channel_sid!=this.sid){e.next=11;break}if(void 0===n.body.channels[0].unread_messages_count||null==n.body.channels[0].unread_messages_count){e.next=10;break}return e.abrupt("return",n.body.channels[0].unread_messages_count);case 10:return e.abrupt("return",null);case 11:throw new Error("Channel is not in user channels list");case 12:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"invite",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.membersEntity.invite(t);case 2:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"join",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("joinChannelV2",{channelSid:this.sid});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"leave",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("joined"!==this.channelState.status){e.next=3;break}return e.next=3,this.services.session.addCommand("leaveChannel",{channelSid:this.sid});case 3:return e.abrupt("return",this);case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"removeMember",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t instanceof E.Member)){e.next=4;break}return e.next=3,this.membersEntity.removeBySid(t.sid);case 3:return e.abrupt("return");case 4:return e.next=6,this.membersEntity.removeByIdentity(t);case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"sendMessage",value:function(){var e=(0,c.default)(o.default.mark(function e(t,r){var n,i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t&&null!==t){e.next=5;break}return e.next=3,this.messagesEntity.send(t,r);case 3:return n=e.sent,e.abrupt("return",I.parseToNumber(n.messageId));case 5:return e.next=7,this.messagesEntity.sendMedia(t,r);case 7:return i=e.sent,e.abrupt("return",I.parseToNumber(i.messageId));case 9:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"setAllMessagesConsumed",value:function(){var e=(0,c.default)(o.default.mark(function e(){var t;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.next=4,this.getMessages(1);case 4:if(!((t=e.sent).items.length>0)){e.next=7;break}return e.abrupt("return",this.advanceLastConsumedMessageIndex(t.items[0].index));case 7:return e.abrupt("return",u.default.resolve(0));case 8:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"setNoMessagesConsumed",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.abrupt("return",this.services.consumptionHorizon.updateLastConsumedMessageIndexForChannel(this.sid,null));case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"setUserNotificationLevel",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("editNotificationLevel",{channelSid:this.sid,notificationLevel:t});case 2:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"typing",value:function(){return this.services.typingIndicator.send(this.sid)}},{key:"updateAttributes",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("editAttributes",{channelSid:this.sid,attributes:(0,d.default)(t)});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"updateFriendlyName",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.channelState.friendlyName===t){e.next=3;break}return e.next=3,this.services.session.addCommand("editFriendlyName",{channelSid:this.sid,friendlyName:t});case 3:return e.abrupt("return",this);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"updateLastConsumedMessageIndex",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._subscribeStreams();case 2:return e.abrupt("return",this.services.consumptionHorizon.updateLastConsumedMessageIndexForChannel(this.sid,t));case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"updateUniqueName",value:function(){var e=(0,c.default)(o.default.mark(function e(t){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.channelState.uniqueName===t){e.next=4;break}return t||(t=""),e.next=4,this.services.session.addCommand("editUniqueName",{channelSid:this.sid,uniqueName:t});case 4:return e.abrupt("return",this);case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getUserDescriptors",value:function(){var e=(0,c.default)(o.default.mark(function e(){return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.services.users.getChannelUserDescriptors(this.sid));case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"status",get:function(){return this.channelState.status}},{key:"type",get:function(){return this.channelState.type}},{key:"uniqueName",get:function(){return this.channelState.uniqueName}},{key:"isPrivate",get:function(){return"private"===this.channelState.type}},{key:"friendlyName",get:function(){return this.channelState.friendlyName}},{key:"dateUpdated",get:function(){return this.channelState.dateUpdated}},{key:"dateCreated",get:function(){return this.channelState.dateCreated}},{key:"createdBy",get:function(){return this.channelState.createdBy}},{key:"attributes",get:function(){return this.channelState.attributes}},{key:"lastConsumedMessageIndex",get:function(){return this.channelState.lastConsumedMessageIndex}},{key:"lastMessage",get:function(){return this.channelState.lastMessage}},{key:"notificationLevel",get:function(){return this.channelState.notificationLevel}},{key:"state",get:function(){return this.channelState.state}}],[{key:"preprocessUpdate",value:function(e,t){try{"string"==typeof e.attributes?e.attributes=JSON.parse(e.attributes):e.attributes&&(0,d.default)(e.attributes)}catch(r){R.warn("Retrieved malformed attributes from the server for channel: "+t),e.attributes={}}try{e.dateCreated&&(e.dateCreated=new Date(e.dateCreated))}catch(r){R.warn("Retrieved malformed dateCreated from the server for channel: "+t),delete e.dateCreated}try{e.dateUpdated&&(e.dateUpdated=new Date(e.dateUpdated))}catch(r){R.warn("Retrieved malformed dateUpdated from the server for channel: "+t),delete e.dateUpdated}try{e.lastMessage&&e.lastMessage.timestamp&&(e.lastMessage.timestamp=new Date(e.lastMessage.timestamp))}catch(r){R.warn("Retrieved malformed lastMessage.timestamp from the server for channel: "+t),delete e.lastMessage.timestamp}}}]),t}(j.EventEmitter);C([P.asyncTypeCheck(P.nonEmptyString),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"add",null),C([P.asyncTypeCheck(P.nonNegativeInteger),x("design:type",Function),x("design:paramtypes",[Number]),x("design:returntype",u.default)],L.prototype,"advanceLastConsumedMessageIndex",null),C([P.asyncTypeCheck(["undefined",P.nonNegativeInteger],["undefined",P.nonNegativeInteger],["undefined",P.literal("backwards","forward")]),x("design:type",Function),x("design:paramtypes",[Number,Number,String]),x("design:returntype",u.default)],L.prototype,"getMessages",null),C([P.asyncTypeCheck(P.nonEmptyString),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"getMemberBySid",null),C([P.asyncTypeCheck(P.nonEmptyString),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"getMemberByIdentity",null),C([P.asyncTypeCheck(P.nonEmptyString),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"invite",null),C([P.asyncTypeCheck([P.nonEmptyString,E.Member]),x("design:type",Function),x("design:paramtypes",[Object]),x("design:returntype",u.default)],L.prototype,"removeMember",null),C([P.asyncTypeCheck(["string",P.literal(null),P.custom(function(e){return[e instanceof FormData,"an instance of FormData"]}),P.custom(function(e){if("object"!==(void 0===e?"undefined":(0,k.default)(e))||null===e||Array.isArray(e))return[!1,"valid media options (should be a pure object)"];if(!("string"==typeof e.contentType&&e.contentType.length>0))return[!1,"valid media options (mediaOptions.contentType should be a non-empty string)","malformed media options (mediaOptions.contentType is "+P.stringifyReceivedType(e.contentType)+")"];var t="string"==typeof e.media&&e.media.length>0||e.media instanceof Uint8Array||e.media instanceof ArrayBuffer;return"function"==typeof Blob&&(t=t||e.media instanceof Blob),t?[!0]:[!1,"valid media options (mediaOptions.media should be a non-empty string, an instance of Buffer or an instance of Blob)","malformed media options (mediaOptions.media is "+P.stringifyReceivedType(e.media)+")"]})],["undefined","string","number","boolean","object",P.literal(null)]),x("design:type",Function),x("design:paramtypes",[Object,Object]),x("design:returntype",u.default)],L.prototype,"sendMessage",null),C([P.asyncTypeCheck(P.literal("default","muted")),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"setUserNotificationLevel",null),C([P.asyncTypeCheck(["string","number","boolean","object",P.literal(null)]),x("design:type",Function),x("design:paramtypes",[Object]),x("design:returntype",u.default)],L.prototype,"updateAttributes",null),C([P.asyncTypeCheck(["string",P.literal(null)]),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"updateFriendlyName",null),C([P.asyncTypeCheck([P.literal(null),P.nonNegativeInteger]),x("design:type",Function),x("design:paramtypes",[Number]),x("design:returntype",u.default)],L.prototype,"updateLastConsumedMessageIndex",null),C([P.asyncTypeCheck(["string",P.literal(null)]),x("design:type",Function),x("design:paramtypes",[String]),x("design:returntype",u.default)],L.prototype,"updateUniqueName",null),r.Channel=L},{"./data/members":6,"./data/messages":7,"./logger":14,"./member":16,"./util":30,"./util/typecheck":31,"babel-runtime/core-js/get-iterator":33,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/map":36,"babel-runtime/core-js/number/is-integer":37,"babel-runtime/core-js/object/define-property":40,"babel-runtime/core-js/object/get-own-property-descriptor":41,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/object/keys":43,"babel-runtime/core-js/promise":45,"babel-runtime/core-js/reflect/metadata":47,"babel-runtime/core-js/set":48,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/helpers/toConsumableArray":58,"babel-runtime/helpers/typeof":59,"babel-runtime/regenerator":60,events:203}],2:[function(e,t,r){"use strict";var n=s(e("babel-runtime/helpers/classCallCheck")),i=s(e("babel-runtime/helpers/createClass"));function s(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.ChannelDescriptor=void 0;var a=e("./logger"),o=e("./util"),u=a.Logger.scope("ChannelDescriptor"),c=function(){function e(t,r){(0,n.default)(this,e),this.client=t,this.descriptor=r,r.sid?(this.sid=r.sid,this.channel=r.sid+".channel"):(this.sid=r.channel_sid,this.channel=r.channel_sid+".channel"),this.uniqueName=r.unique_name,this.friendlyName=r.friendly_name,this.attributes=o.parseAttributes(r.attributes,"Failed to parse channel attributes",u),this.createdBy=r.created_by,this.dateCreated=o.parseTime(r.date_created),this.dateUpdated=o.parseTime(r.date_updated),this.messagesCount=r.messages_count,this.membersCount=r.members_count,this.type=r.type,this.isPrivate="private"==r.type,this.lastConsumedMessageIndex=r.last_consumed_message_index,r.notification_level&&(this.notificationLevel=r.notification_level),r.status?this.status=r.status:this.status="unknown"}return(0,i.default)(e,[{key:"getChannel",value:function(){return this.client.getChannelBySid(this.sid)}}]),e}();r.ChannelDescriptor=c},{"./logger":14,"./util":30,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53}],3:[function(e,t,r){"use strict";var n=g(e("babel-runtime/core-js/get-iterator")),i=g(e("babel-runtime/helpers/slicedToArray")),s=g(e("babel-runtime/core-js/map")),a=g(e("babel-runtime/regenerator")),o=g(e("babel-runtime/helpers/asyncToGenerator")),u=g(e("babel-runtime/core-js/promise")),c=g(e("babel-runtime/core-js/object/assign")),l=g(e("babel-runtime/core-js/object/get-prototype-of")),d=g(e("babel-runtime/helpers/createClass")),f=g(e("babel-runtime/helpers/possibleConstructorReturn")),p=g(e("babel-runtime/helpers/inherits")),h=g(e("babel-runtime/helpers/classCallCheck")),b=g(e("babel-runtime/core-js/reflect/metadata")),m=g(e("babel-runtime/core-js/object/define-property")),v=g(e("babel-runtime/helpers/typeof")),y=g(e("babel-runtime/core-js/object/get-own-property-descriptor"));function g(e){return e&&e.__esModule?e:{default:e}}var k=function(e,t,r,n){var i,s=arguments.length,a=s<3?t:null===n?n=(0,y.default)(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":(0,v.default)(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(a=(s<3?i(a):s>3?i(t,r,a):i(t,r))||a);return s>3&&a&&(0,m.default)(t,r,a),a},_=function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":(0,v.default)(Reflect))&&"function"==typeof b.default)return(0,b.default)(e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.PushNotification=r.Client=r.User=void 0;var w=e("events"),C=e("./logger"),x=e("./configuration"),j=e("./user");Object.defineProperty(r,"User",{enumerable:!0,get:function(){return j.User}});var T=e("./data/publicchannels"),S=e("./services/network"),E=e("./interfaces/notificationtypes"),M=e("./synclist"),I=e("twilsock"),P=e("twilio-notifications"),R=e("twilio-sync"),O=e("twilio-mcs-client"),N=e("./session"),L=e("./data/channels"),U=e("./data/users"),D=e("./services/typingindicator"),A=e("./services/consumptionhorizon"),F=e("./data/userchannels"),q=e("./pushnotification");Object.defineProperty(r,"PushNotification",{enumerable:!0,get:function(){return q.PushNotification}});var B=e("./util"),G=e("./util/typecheck"),W=C.Logger.scope("Client"),z=e("./../package.json").version,H=function e(){(0,h.default)(this,e)},K=function(e){function t(e,r){(0,h.default)(this,t);var n=(0,f.default)(this,(t.__proto__||(0,l.default)(t)).call(this));if(n.connectionState="connecting",n.sessionPromise=null,n.channelsPromise=null,n.version=z,n.parsePushNotification=t.parsePushNotification,n.options=r||{},!n.options.disableDeepClone){var i=(0,c.default)((0,c.default)({},n.options),{transport:void 0,twilsockClient:void 0});(i=B.deepClone(i)).transport=n.options.transport,i.twilsockClient=n.options.twilsockClient,n.options=i}n.options.logLevel=n.options.logLevel||"silent",W.setLevel(n.options.logLevel);var s=n.options.productId="ip_messaging";if(n.options.clientMetadata=n.options.clientMetadata||{},n.options.clientMetadata.hasOwnProperty("type")||(n.options.clientMetadata.type="chat"),n.options.clientMetadata.hasOwnProperty("sdk")||(n.options.clientMetadata.sdk="JS",n.options.clientMetadata.sdkv=z),n.options.Sync=n.options.Sync||{},void 0===n.options.Sync.enableSessionStorage&&(n.options.Sync.enableSessionStorage=!0),n.options.region&&(n.options.Sync.region=n.options.region),!e)throw new Error("A valid Twilio token should be provided");return n.services=new H,n.config=new x.Configuration(n.options),n.options.twilsockClient=n.options.twilsockClient||new I.Twilsock(e,s,n.options),n.options.transport=n.options.transport||n.options.twilsockClient,n.options.notificationsClient=n.options.notificationsClient||new P.Notifications(e,n.options),n.options.syncClient=n.options.syncClient||new R.SyncClient(e,n.options),n.services.syncClient=n.options.syncClient,n.services.transport=n.options.transport,n.services.twilsockClient=n.options.twilsockClient,n.services.notificationClient=n.options.notificationsClient,n.services.session=new N.Session(n.services,n.config),n.sessionPromise=n.services.session.initialize(),n.services.network=new S.Network(n.config,n.services),n.services.users=new U.Users({session:n.services.session,network:n.services.network,syncClient:n.services.syncClient}),n.services.users.on("userSubscribed",n.emit.bind(n,"userSubscribed")),n.services.users.on("userUpdated",function(e){return n.emit("userUpdated",e)}),n.services.users.on("userUnsubscribed",n.emit.bind(n,"userUnsubscribed")),n.services.twilsockClient.on("tokenAboutToExpire",function(e){return n.emit("tokenAboutToExpire",e)}),n.services.twilsockClient.on("tokenExpired",function(){return n.emit("tokenExpired")}),n.services.twilsockClient.on("connectionError",function(e){return n.emit("connectionError",e)}),n.services.consumptionHorizon=new A.ConsumptionHorizon(n.services),n.services.typingIndicator=new D.TypingIndicator(n.config,{transport:n.services.twilsockClient,notificationClient:n.services.notificationClient},n.getChannelBySid.bind(n)),n.services.syncList=new M.SyncList(n.services),n.channels=new L.Channels(n.services),n.channelsPromise=n.sessionPromise.then(function(){return n.channels.on("channelAdded",n.emit.bind(n,"channelAdded")),n.channels.on("channelRemoved",n.emit.bind(n,"channelRemoved")),n.channels.on("channelInvited",n.emit.bind(n,"channelInvited")),n.channels.on("channelJoined",n.emit.bind(n,"channelJoined")),n.channels.on("channelLeft",n.emit.bind(n,"channelLeft")),n.channels.on("channelUpdated",function(e){return n.emit("channelUpdated",e)}),n.channels.on("memberJoined",n.emit.bind(n,"memberJoined")),n.channels.on("memberLeft",n.emit.bind(n,"memberLeft")),n.channels.on("memberUpdated",function(e){return n.emit("memberUpdated",e)}),n.channels.on("messageAdded",n.emit.bind(n,"messageAdded")),n.channels.on("messageUpdated",function(e){return n.emit("messageUpdated",e)}),n.channels.on("messageRemoved",n.emit.bind(n,"messageRemoved")),n.channels.on("typingStarted",n.emit.bind(n,"typingStarted")),n.channels.on("typingEnded",n.emit.bind(n,"typingEnded")),n.channels.fetchChannels()}).then(function(){return n.channels}),n.services.notificationClient.on("connectionStateChanged",function(e){var t=null;switch(e){case"connected":t="connected";break;case"denied":t="denied";break;case"disconnecting":t="disconnecting";break;case"disconnected":t="disconnected";break;default:t="connecting"}t!==n.connectionState&&(n.connectionState=t,n.emit("connectionStateChanged",n.connectionState))}),n.fpaToken=e,n}return(0,p.default)(t,e),(0,d.default)(t,[{key:"subscribeToPushNotifications",value:function(e){var t=this,r=[];return[E.NotificationTypes.NEW_MESSAGE,E.NotificationTypes.ADDED_TO_CHANNEL,E.NotificationTypes.INVITED_TO_CHANNEL,E.NotificationTypes.REMOVED_FROM_CHANNEL,E.NotificationTypes.TYPING_INDICATOR,E.NotificationTypes.CONSUMPTION_UPDATE].forEach(function(n){r.push(t.services.notificationClient.subscribe(n,e))}),u.default.all(r)}},{key:"unsubscribeFromPushNotifications",value:function(e){var t=this,r=[];return[E.NotificationTypes.NEW_MESSAGE,E.NotificationTypes.ADDED_TO_CHANNEL,E.NotificationTypes.INVITED_TO_CHANNEL,E.NotificationTypes.REMOVED_FROM_CHANNEL,E.NotificationTypes.TYPING_INDICATOR,E.NotificationTypes.CONSUMPTION_UPDATE].forEach(function(n){r.push(t.services.notificationClient.unsubscribe(n,e))}),u.default.all(r)}},{key:"initialize",value:function(){var e=(0,o.default)(a.default.mark(function e(){var r,n,i=this;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sessionPromise;case 2:return t.supportedPushChannels.forEach(function(e){return i.subscribeToPushNotifications(e)}),e.next=5,this.services.session.getSessionLinks();case 5:return r=e.sent,this.services.publicChannels=new T.PublicChannels(this,this.services,r.publicChannelsUrl),this.services.userChannels=new F.UserChannels(this,this.services,r.myChannelsUrl),(n=(0,c.default)(this.options)).transport=null,this.services.mcsClient=new O.McsClient(this.fpaToken,r.mediaServiceUrl,n),e.next=13,this.services.typingIndicator.initialize();case 13:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"shutdown",value:function(){var e=(0,o.default)(a.default.mark(function e(){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.twilsockClient.disconnect();case 2:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"updateToken",value:function(){var e=(0,o.default)(a.default.mark(function e(t){var r=this;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(W.info("updateToken"),this.fpaToken!==t){e.next=3;break}return e.abrupt("return",this);case 3:return e.next=5,this.services.twilsockClient.updateToken(t).then(function(){return r.fpaToken=t}).then(function(){return r.services.mcsClient.updateToken(t)}).then(function(){return r.sessionPromise});case 5:return e.abrupt("return",this);case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getChannelBySid",value:function(){var e=(0,o.default)(a.default.mark(function e(t){var r=this;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.channels.syncListRead.promise.then(function(){return r.channels.getChannel(t).then(function(e){return e||r.services.publicChannels.getChannelBySid(t).then(function(e){return r.channels.pushChannel(e)})})}));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getChannelByUniqueName",value:function(){var e=(0,o.default)(a.default.mark(function e(t){var r=this;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.channels.syncListRead.promise.then(function(){return r.services.publicChannels.getChannelByUniqueName(t).then(function(e){return r.channels.pushChannel(e)})}));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getSubscribedChannels",value:function(e){return this.channelsPromise.then(function(t){return t.getChannels(e)})}},{key:"getLocalChannels",value:function(e){return this.channelsPromise.then(function(r){var n=[];r.channels.forEach(function(e){n.push(e)});var i=(null==e?void 0:e.order)||"ascending";return e&&e.criteria&&("lastMessage"===e.criteria?n.sort(function(e,r){return t.compareChannelsByLastMessage(e,r,i)}):"uniqueName"===e.criteria?n.sort(function(e,r){return t.compareChannelsByStringProperty(e.uniqueName,r.uniqueName,i)}):"friendlyName"===e.criteria&&n.sort(function(e,r){return t.compareChannelsByStringProperty(e.friendlyName,r.friendlyName,i)})),n})}},{key:"getPublicChannelDescriptors",value:function(){return this.services.publicChannels.getChannels()}},{key:"getUserChannelDescriptors",value:function(){return this.services.userChannels.getChannels()}},{key:"createChannel",value:function(e){return e=e||{},this.channelsPromise.then(function(t){return t.addChannel(e)})}},{key:"setPushRegistrationId",value:function(){var e=(0,o.default)(a.default.mark(function e(t,r){var n=this;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.subscribeToPushNotifications(t).then(function(){return n.services.notificationClient.setPushRegistrationId(r,t)});case 2:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"unsetPushRegistrationId",value:function(){var e=(0,o.default)(a.default.mark(function e(r){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(-1!==t.supportedPushChannels.indexOf(r)){e.next=2;break}throw new Error("Invalid or unsupported channelType: "+r);case 2:return e.next=4,this.unsubscribeFromPushNotifications(r);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"handlePushNotification",value:function(){var e=(0,o.default)(a.default.mark(function e(r){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:W.debug("handlePushNotification, notificationPayload=",r),this.emit("pushNotification",t.parsePushNotification(r));case 2:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getUser",value:function(e){return this.services.users.getUser(e)}},{key:"getUserDescriptor",value:function(){var e=(0,o.default)(a.default.mark(function e(t){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.services.users.getUserDescriptor(t));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getSubscribedUsers",value:function(){var e=(0,o.default)(a.default.mark(function e(){return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.services.users.getSubscribedUsers());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"user",get:function(){return this.services.users.myself}},{key:"reachabilityEnabled",get:function(){return this.services.session.reachabilityEnabled}},{key:"token",get:function(){return this.fpaToken}}],[{key:"create",value:function(){var e=(0,o.default)(a.default.mark(function e(r,n){var i;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=new t(r,n),e.next=3,i.initialize();case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"compareChannelsByLastMessage",value:function(e,t,r){if(e.lastMessage&&t.lastMessage){if(e.lastMessage.dateCreated&&t.lastMessage.dateCreated)return e.lastMessage.dateCreated.getTime()0?e[0]:null})}},{key:"pushChannel",value:function(e){var t=e.sid,r={entityName:null,lastConsumedMessageIndex:e.lastConsumedMessageIndex,type:e.type,status:e.status,friendlyName:e.friendlyName,dateUpdated:e.dateUpdated,dateCreated:e.dateCreated,uniqueName:e.uniqueName,createdBy:e.createdBy,attributes:e.attributes,channel:e.channel,notificationLevel:e.notificationLevel,sid:t};return this.upsertChannel("chat",t,r)}},{key:"upsertChannel",value:function(e,t,r){var n=this;k.trace("upsertChannel(sid="+t+", data=",r);var i=this.channels.get(t);if(i){if(k.trace("upsertChannel: channel "+t+" is known and it's status is known from source "+i._statusSource()+" and update came from source "+e,i),void 0===i._statusSource()||e===i._statusSource()||"synclist"===e&&"sync"!==i._statusSource()||"sync"===e)if("joined"===r.status&&"joined"!==i.status){i._setStatus("joined",e);var s={};void 0!==r.notificationLevel&&(s.notificationLevel=r.notificationLevel),void 0!==r.lastConsumedMessageIndex&&(s.lastConsumedMessageIndex=r.lastConsumedMessageIndex),g.isDeepEqual(s,{})||i._update(s),i._subscribe().then(function(){n.emit("channelJoined",i)})}else if("invited"===r.status&&"invited"!==i.status){i._setStatus("invited",e);var a={};void 0!==r.notificationLevel&&(a.notificationLevel=r.notificationLevel),void 0!==r.lastConsumedMessageIndex&&(a.lastConsumedMessageIndex=r.lastConsumedMessageIndex),g.isDeepEqual(a,{})||i._update(a),i._subscribe().then(function(){n.emit("channelInvited",i)})}else"notParticipating"!==r.status||"invited"!==i.status&&"joined"!==i.status?"notParticipating"===r.status&&"private"===r.type?i._subscribe():i._update(r):(i._setStatus("notParticipating",e),i._update(r),i._subscribe().then(function(){n.emit("channelLeft",i)}));else k.trace("upsertChannel: channel is known from sync and came from chat, ignoring",{sid:t,data:r.status,channel:i.status});return i._subscribe().then(function(){return i})}if("chat"!==e&&"synclist"!==e||!this.thumbstones.has(t))return k.trace("upsertChannel: creating local channel object with sid "+t,r),i=new v.Channel(this.services,r,t),this.channels.set(t,i),i._subscribe().then(function(){return n.registerForEvents(i),n.emit("channelAdded",i),"joined"===r.status?(i._setStatus("joined",e),n.emit("channelJoined",i)):"invited"===r.status&&(i._setStatus("invited",e),n.emit("channelInvited",i)),i});k.trace("upsertChannel: channel is deleted and came again from chat, ignoring",t)}},{key:"onChannelRemoved",value:function(e){var t=this.channels.get(e);t&&(this.channels.delete(e),this.emit("channelRemoved",t))}},{key:"registerForEvents",value:function(e){var t=this;e.on("removed",function(){return t.onChannelRemoved(e.sid)}),e.on("updated",function(e){return t.emit("channelUpdated",e)}),e.on("memberJoined",this.emit.bind(this,"memberJoined")),e.on("memberLeft",this.emit.bind(this,"memberLeft")),e.on("memberUpdated",function(e){return t.emit("memberUpdated",e)}),e.on("messageAdded",this.emit.bind(this,"messageAdded")),e.on("messageUpdated",function(e){return t.emit("messageUpdated",e)}),e.on("messageRemoved",this.emit.bind(this,"messageRemoved")),e.on("typingStarted",this.emit.bind(this,"typingStarted")),e.on("typingEnded",this.emit.bind(this,"typingEnded"))}}]),t}(b.EventEmitter);r.Channels=_},{"../channel":1,"../logger":14,"../util":30,"../util/deferred":29,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/map":36,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/core-js/set":48,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/regenerator":60,events:203}],6:[function(e,t,r){"use strict";var n=d(e("babel-runtime/core-js/promise")),i=d(e("babel-runtime/regenerator")),s=d(e("babel-runtime/helpers/asyncToGenerator")),a=d(e("babel-runtime/core-js/object/get-prototype-of")),o=d(e("babel-runtime/helpers/classCallCheck")),u=d(e("babel-runtime/helpers/createClass")),c=d(e("babel-runtime/helpers/possibleConstructorReturn")),l=d(e("babel-runtime/helpers/inherits"));function d(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.Members=void 0;var f=e("events"),p=e("../member"),h=e("../logger").Logger.scope("Members"),b=function(e){function t(e,r,n){(0,o.default)(this,t);var i=(0,c.default)(this,(t.__proto__||(0,a.default)(t)).call(this));return i.services=r,i.channel=e,i.members=n,i}return(0,l.default)(t,e),(0,u.default)(t,[{key:"unsubscribe",value:function(){var e=(0,s.default)(i.default.mark(function e(){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.rosterEntityPromise){e.next=6;break}return e.next=3,this.rosterEntityPromise;case 3:e.sent.close(),this.rosterEntityPromise=null;case 6:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"subscribe",value:function(e){var t=this;return this.rosterEntityPromise=this.rosterEntityPromise||this.services.syncClient.map({id:e,mode:"open_existing"}).then(function(e){e.on("itemAdded",function(e){h.debug(t.channel.sid+" itemAdded: "+e.item.key),t.upsertMember(e.item.key,e.item.value).then(function(e){t.emit("memberJoined",e)})}),e.on("itemRemoved",function(e){h.debug(t.channel.sid+" itemRemoved: "+e.key);var r=e.key;if(t.members.has(r)){var n=t.members.get(r);t.members.delete(r),t.emit("memberLeft",n)}}),e.on("itemUpdated",function(e){h.debug(t.channel.sid+" itemUpdated: "+e.item.key),t.upsertMember(e.item.key,e.item.value)});var r=[],i=t;return e.getItems().then(function e(t){return t.items.forEach(function(e){r.push(i.upsertMember(e.key,e.value))}),t.hasNextPage?t.nextPage().then(e):null}).then(function(){return n.default.all(r)}).then(function(){return e})}).catch(function(e){throw t.rosterEntityPromise=null,"disconnected"!=t.services.syncClient.connectionState&&h.error("Failed to get roster object for channel",t.channel.sid,e),h.debug("ERROR: Failed to get roster object for channel",t.channel.sid,e),e})}},{key:"upsertMember",value:function(){var e=(0,s.default)(i.default.mark(function e(t,r){var n,s=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=this.members.get(t))){e.next=3;break}return e.abrupt("return",n._update(r));case 3:return n=new p.Member(this.services,this.channel,r,t),this.members.set(t,n),n.on("updated",function(e){return s.emit("memberUpdated",e)}),e.abrupt("return",n);case 7:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"getMembers",value:function(){var e=this;return this.rosterEntityPromise.then(function(){var t=[];return e.members.forEach(function(e){return t.push(e)}),t})}},{key:"getMemberBySid",value:function(){var e=(0,s.default)(i.default.mark(function e(t){var r=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.rosterEntityPromise.then(function(){var e=r.members.get(t);if(!e)throw new Error("Member with SID "+t+" was not found");return e}));case 1:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getMemberByIdentity",value:function(){var e=(0,s.default)(i.default.mark(function e(t){var r,n=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=null,e.abrupt("return",this.rosterEntityPromise.then(function(){if(n.members.forEach(function(e){e.identity===t&&(r=e)}),!r)throw new Error("Member with identity "+t+" was not found");return r}));case 2:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"add",value:function(e){return this.services.session.addCommand("addMemberV2",{channelSid:this.channel.sid,username:e})}},{key:"invite",value:function(e){return this.services.session.addCommand("inviteMember",{channelSid:this.channel.sid,username:e})}},{key:"removeByIdentity",value:function(e){return this.services.session.addCommand("removeMember",{channelSid:this.channel.sid,username:e})}},{key:"removeBySid",value:function(e){return this.services.session.addCommand("removeMember",{channelSid:this.channel.sid,memberSid:e})}}]),t}(f.EventEmitter);r.Members=b},{"../logger":14,"../member":16,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/regenerator":60,events:203}],7:[function(e,t,r){"use strict";var n=p(e("babel-runtime/core-js/promise")),i=p(e("babel-runtime/core-js/json/stringify")),s=p(e("babel-runtime/regenerator")),a=p(e("babel-runtime/helpers/asyncToGenerator")),o=p(e("babel-runtime/core-js/map")),u=p(e("babel-runtime/core-js/object/get-prototype-of")),c=p(e("babel-runtime/helpers/classCallCheck")),l=p(e("babel-runtime/helpers/createClass")),d=p(e("babel-runtime/helpers/possibleConstructorReturn")),f=p(e("babel-runtime/helpers/inherits"));function p(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.Messages=void 0;var h=e("events"),b=e("../logger"),m=e("../message"),v=b.Logger.scope("Messages"),y=function(e){function t(e,r){(0,c.default)(this,t);var n=(0,d.default)(this,(t.__proto__||(0,u.default)(t)).call(this));return n.channel=e,n.services=r,n.messagesByIndex=new o.default,n.messagesListPromise=null,n}return(0,f.default)(t,e),(0,l.default)(t,[{key:"subscribe",value:function(e){var t=this;return this.messagesListPromise=this.messagesListPromise||this.services.syncClient.list({id:e,mode:"open_existing"}).then(function(e){return e.on("itemAdded",function(e){v.debug(t.channel.sid+" itemAdded: "+e.item.index);var r=new m.Message(t.channel,t.services,e.item.index,e.item.value);t.messagesByIndex.has(r.index)?v.debug("Message arrived, but already known and ignored",t.channel.sid,r.index):(t.messagesByIndex.set(r.index,r),r.on("updated",function(e){return t.emit("messageUpdated",e)}),t.emit("messageAdded",r))}),e.on("itemRemoved",function(e){v.debug(t.channel.sid+" itemRemoved: "+e.index);var r=e.index;if(t.messagesByIndex.has(r)){var n=t.messagesByIndex.get(r);t.messagesByIndex.delete(n.index),n.removeAllListeners("updated"),t.emit("messageRemoved",n)}}),e.on("itemUpdated",function(e){v.debug(t.channel.sid+" itemUpdated: "+e.item.index);var r=t.messagesByIndex.get(e.item.index);r&&r._update(e.item.value)}),e}).catch(function(e){throw t.messagesListPromise=null,"disconnected"!=t.services.syncClient.connectionState&&v.error("Failed to get messages object for channel",t.channel.sid,e),v.debug("ERROR: Failed to get messages object for channel",t.channel.sid,e),e})}},{key:"unsubscribe",value:function(){var e=(0,a.default)(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.messagesListPromise){e.next=6;break}return e.next=3,this.messagesListPromise;case 3:e.sent.close(),this.messagesListPromise=null;case 6:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"send",value:function(){var e=(0,a.default)(s.default.mark(function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return v.debug("Sending text message",t,r),e.abrupt("return",this.services.session.addCommand("sendMessage",{channelSid:this.channel.sid,text:t,attributes:(0,i.default)(r)}));case 2:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"sendMedia",value:function(){var e=(0,a.default)(s.default.mark(function e(t){var r,n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(v.debug("Sending media message",t,a),r=void 0,!("undefined"!=typeof FormData&&t instanceof FormData)){e.next=9;break}return v.debug("Sending media message as FormData",t,a),e.next=6,this.services.mcsClient.postFormData(t);case 6:r=e.sent,e.next=16;break;case 9:if(v.debug("Sending media message as SendMediaOptions",t,a),(n=t).contentType&&n.media){e.next=13;break}throw new Error("Media content must contain non-empty contentType and media");case 13:return e.next=15,this.services.mcsClient.post(n.contentType,n.media);case 15:r=e.sent;case 16:return e.abrupt("return",this.services.session.addCommand("sendMediaMessage",{channelSid:this.channel.sid,mediaSid:r.sid,attributes:(0,i.default)(a)}));case 17:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getMessages",value:function(e,t,r){return t=void 0!==t?t:"end",r=r||"backwards",this._getMessages(e,t,r)}},{key:"wrapPaginator",value:function(e,t,r){var n=this,i="desc"===e,s=function(){return t.nextPage().then(function(t){return n.wrapPaginator(e,t,r)})},a=function(){return t.prevPage().then(function(t){return n.wrapPaginator(e,t,r)})};return r(t.items).then(function(e){return{items:e.sort(function(e,t){return e.index-t.index}),hasPrevPage:i?t.hasNextPage:t.hasPrevPage,hasNextPage:i?t.hasPrevPage:t.hasNextPage,prevPage:i?s:a,nextPage:i?a:s}})}},{key:"_upsertMessage",value:function(e,t){var r=this,n=this.messagesByIndex.get(e);if(n)return n;var i=new m.Message(this.channel,this.services,e,t);return this.messagesByIndex.set(i.index,i),i.on("updated",function(e){return r.emit("messageUpdated",e)}),i}},{key:"_getMessages",value:function(e,t,r){var i=this;t=void 0!==t?t:"end",e=e||30;var s="backwards"===r?"desc":"asc";return this.messagesListPromise.then(function(r){return r.getItems({from:"end"!==t?t:void 0,pageSize:e,order:s})}).then(function(e){return i.wrapPaginator(s,e,function(e){return n.default.all(e.map(function(e){return i._upsertMessage(e.index,e.value)}))})})}}]),t}(h.EventEmitter);r.Messages=y},{"../logger":14,"../message":17,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/map":36,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/regenerator":60,events:203}],8:[function(e,t,r){"use strict";var n=o(e("babel-runtime/regenerator")),i=o(e("babel-runtime/helpers/asyncToGenerator")),s=o(e("babel-runtime/helpers/classCallCheck")),a=o(e("babel-runtime/helpers/createClass"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.PublicChannels=void 0;var u=e("../util/index"),c=e("../restpaginator"),l=e("../channeldescriptor"),d=function(){function e(t,r,n){(0,s.default)(this,e),this.client=t,this.services=r,this.url=n}return(0,a.default)(e,[{key:"getChannels",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t,r,i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=new u.UriBuilder(this.url).arg("PageToken",s.pageToken).build(),e.next=3,this.services.network.get(t);case 3:return r=e.sent,e.abrupt("return",new c.RestPaginator(r.body.channels.map(function(e){return new l.ChannelDescriptor(i.client,e)}),function(e){return i.getChannels({pageToken:e})},r.body.meta.previous_token,r.body.meta.next_token));case 5:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getChannelBySid",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new u.UriBuilder(this.url).path(t).build(),e.next=3,this.services.network.get(r);case 3:return i=e.sent,e.abrupt("return",new l.ChannelDescriptor(this.client,i.body));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getChannelByUniqueName",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new u.UriBuilder(this.url).path(t).build(),e.next=3,this.services.network.get(r);case 3:return i=e.sent,e.abrupt("return",new l.ChannelDescriptor(this.client,i.body));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()}]),e}();r.PublicChannels=d},{"../channeldescriptor":2,"../restpaginator":19,"../util/index":30,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/regenerator":60}],9:[function(e,t,r){"use strict";var n=o(e("babel-runtime/regenerator")),i=o(e("babel-runtime/helpers/asyncToGenerator")),s=o(e("babel-runtime/helpers/classCallCheck")),a=o(e("babel-runtime/helpers/createClass"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.UserChannels=void 0;var u=e("../util/index"),c=e("../restpaginator"),l=e("../channeldescriptor"),d=function(){function e(t,r,n){(0,s.default)(this,e),this.client=t,this.services=r,this.url=n}return(0,a.default)(e,[{key:"getChannels",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t,r,i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=new u.UriBuilder(this.url).arg("PageToken",s.pageToken).build(),e.next=3,this.services.network.get(t);case 3:return r=e.sent,e.abrupt("return",new c.RestPaginator(r.body.channels.map(function(e){return new l.ChannelDescriptor(i.client,e)}),function(e){return i.getChannels({pageToken:e})},r.body.meta.previous_token,r.body.meta.next_token));case 5:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()}]),e}();r.UserChannels=d},{"../channeldescriptor":2,"../restpaginator":19,"../util/index":30,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/regenerator":60}],10:[function(e,t,r){"use strict";var n=o(e("babel-runtime/regenerator")),i=o(e("babel-runtime/helpers/asyncToGenerator")),s=o(e("babel-runtime/helpers/classCallCheck")),a=o(e("babel-runtime/helpers/createClass"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.UserDescriptors=void 0;var u=e("../util/index"),c=e("../restpaginator"),l=e("../userdescriptor"),d=function(){function e(t,r){(0,s.default)(this,e),this.services=t,this.url=r}return(0,a.default)(e,[{key:"getUserDescriptor",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new u.UriBuilder(this.url).path(t).build(),e.next=3,this.services.network.get(r);case 3:return i=e.sent,e.abrupt("return",new l.UserDescriptor(this.services,i.body));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getChannelUserDescriptors",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i,s=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=new u.UriBuilder(this.url).arg("ChannelSid",t).arg("PageToken",a.pageToken).build(),e.next=3,this.services.network.get(r);case 3:return i=e.sent,e.abrupt("return",new c.RestPaginator(i.body.users.map(function(e){return new l.UserDescriptor(s.services,e)}),function(e){return s.getChannelUserDescriptors(t,{pageToken:e})},i.body.meta.prev_token,i.body.meta.next_token));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()}]),e}();r.UserDescriptors=d},{"../restpaginator":19,"../userdescriptor":28,"../util/index":30,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/regenerator":60}],11:[function(e,t,r){"use strict";var n=d(e("babel-runtime/regenerator")),i=d(e("babel-runtime/helpers/asyncToGenerator")),s=d(e("babel-runtime/core-js/map")),a=d(e("babel-runtime/core-js/object/get-prototype-of")),o=d(e("babel-runtime/helpers/classCallCheck")),u=d(e("babel-runtime/helpers/createClass")),c=d(e("babel-runtime/helpers/possibleConstructorReturn")),l=d(e("babel-runtime/helpers/inherits"));function d(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.Users=void 0;var f=e("events"),p=e("../user"),h=e("./userdescriptors"),b=function(e){function t(e){(0,o.default)(this,t);var r=(0,c.default)(this,(t.__proto__||(0,a.default)(t)).call(this));return r.services=e,r.fifoStack=[],r.fifoStackMaxLength=100,r.myself=new p.User(null,null,r.services),r.myself.on("updated",function(e){return r.emit("userUpdated",e)}),r.myself.on("userSubscribed",function(){return r.emit("userSubscribed",r.myself)}),r.myself.on("userUnsubscribed",function(){r.emit("userUnsubscribed",r.myself),r.myself._ensureFetched()}),r.services=e,r.subscribedUsers=new s.default,r.userDescriptorsPromise=r.services.session.getSessionLinks().then(function(e){return r.userDescriptors=new h.UserDescriptors({users:r,network:r.services.network},e.usersUrl),r.userDescriptors}),r.services.session.getMaxUserInfosToSubscribe().then(function(e){r.fifoStackMaxLength=e}),r.services.session.getUsersData().then(function(e){return r.myself.identity=e.identity,r.myself.entityName=e.user,r.myself._ensureFetched()}),r}return(0,l.default)(t,e),(0,u.default)(t,[{key:"handleUnsubscribeUser",value:function(e){this.subscribedUsers.has(e.identity)&&this.subscribedUsers.delete(e.identity);var t=-1;this.fifoStack.find(function(r,n){return r==e.identity&&(t=n,!0)})&&this.fifoStack.splice(t,1),this.emit("userUnsubscribed",e)}},{key:"handleSubscribeUser",value:function(e){this.subscribedUsers.has(e.identity)||(this.fifoStack.length>=this.fifoStackMaxLength&&this.subscribedUsers.get(this.fifoStack.shift()).unsubscribe(),this.fifoStack.push(e.identity),this.subscribedUsers.set(e.identity,e),this.emit("userSubscribed",e))}},{key:"getUser",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i,s=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.getUsersData();case 2:return e.next=4,this.myself._ensureFetched();case 4:if(t!=this.myself.identity){e.next=6;break}return e.abrupt("return",this.myself);case 6:if(r=this.subscribedUsers.get(t)){e.next=19;break}if(a){e.next=13;break}return e.next=11,this.getUserDescriptor(t);case 11:i=e.sent,a=i._getDescriptor().sync_unique_name;case 13:return(r=new p.User(t,a,this.services)).on("updated",function(e){return s.emit("userUpdated",e)}),r.on("userSubscribed",function(){return s.handleSubscribeUser(r)}),r.on("userUnsubscribed",function(){return s.handleUnsubscribeUser(r)}),e.next=19,r._ensureFetched();case 19:return e.abrupt("return",r);case 20:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getUserDescriptor",value:function(){var e=(0,i.default)(n.default.mark(function e(t){return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.userDescriptorsPromise;case 2:return e.abrupt("return",this.userDescriptors.getUserDescriptor(t));case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getChannelUserDescriptors",value:function(){var e=(0,i.default)(n.default.mark(function e(t){return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.userDescriptorsPromise;case 2:return e.abrupt("return",this.userDescriptors.getChannelUserDescriptors(t));case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"getSubscribedUsers",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.getUsersData();case 2:return e.next=4,this.myself._ensureFetched();case 4:return t=[this.myself],this.subscribedUsers.forEach(function(e){return t.push(e)}),e.abrupt("return",t);case 7:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()}]),t}(f.EventEmitter);r.Users=b},{"../user":27,"./userdescriptors":10,"babel-runtime/core-js/map":36,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/regenerator":60,events:203}],12:[function(e,t,r){"use strict";var n,i=e("babel-runtime/helpers/classCallCheck"),s=(n=i)&&n.__esModule?n:{default:n};Object.defineProperty(r,"__esModule",{value:!0}),r.NotificationTypes=void 0;var a=function e(){(0,s.default)(this,e)};r.NotificationTypes=a,a.TYPING_INDICATOR="twilio.ipmsg.typing_indicator",a.NEW_MESSAGE="twilio.channel.new_message",a.ADDED_TO_CHANNEL="twilio.channel.added_to_channel",a.INVITED_TO_CHANNEL="twilio.channel.invited_to_channel",a.REMOVED_FROM_CHANNEL="twilio.channel.removed_from_channel",a.CONSUMPTION_UPDATE="twilio.channel.consumption_update"},{"babel-runtime/helpers/classCallCheck":52}],13:[function(e,t,r){"use strict";var n,i=e("babel-runtime/helpers/classCallCheck"),s=(n=i)&&n.__esModule?n:{default:n};Object.defineProperty(r,"__esModule",{value:!0}),r.ResponseCodes=void 0;var a=function e(){(0,s.default)(this,e)};r.ResponseCodes=a,a.HTTP_200_OK=200,a.HTTP_400_BAD_REQUEST=400,a.HTTP_404_NOT_FOUND=404,a.ACCESS_FORBIDDEN_FOR_IDENTITY=54007,a.LIST_NOT_FOUND=54150},{"babel-runtime/helpers/classCallCheck":52}],14:[function(e,t,r){"use strict";var n=a(e("babel-runtime/helpers/classCallCheck")),i=a(e("babel-runtime/helpers/createClass")),s=a(e("babel-runtime/core-js/array/from"));function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){return[(new Date).toISOString()+" Chat "+e+":"].concat((0,s.default)(t))}Object.defineProperty(r,"__esModule",{value:!0}),r.Logger=void 0;var u=e("loglevel").getLogger("twilio-chat"),c=function(){function e(t){(0,n.default)(this,e),this.prefix="",this.prefix=null!=t&&t.length>0?t+" ":""}return(0,i.default)(e,[{key:"setLevel",value:function(e){u.setLevel(e)}},{key:"trace",value:function(){for(var e=arguments.length,t=Array(e),r=0;r=0;o--)(i=e[o])&&(a=(s<3?i(a):s>3?i(t,r,a):i(t,r))||a);return s>3&&a&&(0,h.default)(t,r,a),a},g=function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":(0,b.default)(Reflect))&&"function"==typeof p.default)return(0,p.default)(e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.Member=void 0;var k=e("events"),_=e("./util"),w=e("./logger"),C=e("./util/typecheck"),x=w.Logger.scope("Member"),j=function(e){function t(e,r,n,i){(0,c.default)(this,t);var s=(0,d.default)(this,(t.__proto__||(0,u.default)(t)).call(this));if(s.channel=r,s.services=e,s.state={attributes:_.parseAttributes(n.attributes,"Retrieved malformed attributes from the server for member: "+i,x),dateCreated:n.dateCreated?_.parseTime(n.dateCreated):null,dateUpdated:n.dateCreated?_.parseTime(n.dateUpdated):null,sid:i,typingTimeout:null,isTyping:!1,identity:n.identity||null,roleSid:n.roleSid||null,lastConsumedMessageIndex:(0,o.default)(n.lastConsumedMessageIndex)?n.lastConsumedMessageIndex:null,lastConsumptionTimestamp:n.lastConsumptionTimestamp?_.parseTime(n.lastConsumptionTimestamp):null,type:n.type||"chat",userInfo:n.userInfo},!n.identity&&!n.type)throw new Error("Received invalid Member object from server: Missing identity or type of Member.");return s}return(0,f.default)(t,e),(0,l.default)(t,[{key:"_startTyping",value:function(e){var t=this;return clearTimeout(this.state.typingTimeout),this.state.isTyping=!0,this.emit("typingStarted",this),this.channel.emit("typingStarted",this),this.state.typingTimeout=setTimeout(function(){return t._endTyping()},e),this}},{key:"_endTyping",value:function(){this.state.typingTimeout&&(this.state.isTyping=!1,this.emit("typingEnded",this),this.channel.emit("typingEnded",this),clearInterval(this.state.typingTimeout),this.state.typingTimeout=null)}},{key:"_update",value:function(e){var t=[],r=_.parseAttributes(e.attributes,"Retrieved malformed attributes from the server for member: "+this.state.sid,x);e.attributes&&!_.isDeepEqual(this.state.attributes,r)&&(this.state.attributes=r,t.push("attributes"));var n=_.parseTime(e.dateUpdated);e.dateUpdated&&n.getTime()!==(this.state.dateUpdated&&this.state.dateUpdated.getTime())&&(this.state.dateUpdated=n,t.push("dateUpdated"));var i=_.parseTime(e.dateCreated);if(e.dateCreated&&i.getTime()!==(this.state.dateCreated&&this.state.dateCreated.getTime())&&(this.state.dateCreated=i,t.push("dateCreated")),e.roleSid&&this.state.roleSid!==e.roleSid&&(this.state.roleSid=e.roleSid,t.push("roleSid")),!(0,o.default)(e.lastConsumedMessageIndex)&&null!==e.lastConsumedMessageIndex||this.state.lastConsumedMessageIndex===e.lastConsumedMessageIndex||(this.state.lastConsumedMessageIndex=e.lastConsumedMessageIndex,t.push("lastConsumedMessageIndex")),e.lastConsumptionTimestamp){var s=new Date(e.lastConsumptionTimestamp);this.state.lastConsumptionTimestamp&&this.state.lastConsumptionTimestamp.getTime()===s.getTime()||(this.state.lastConsumptionTimestamp=s,t.push("lastConsumptionTimestamp"))}return t.length>0&&this.emit("updated",{member:this,updateReasons:t}),this}},{key:"getUserDescriptor",value:function(){var e=(0,a.default)(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("chat"==this.type){e.next=2;break}throw new Error("Getting User Descriptor is not supported for this Member type: "+this.type);case 2:return e.abrupt("return",this.services.users.getUserDescriptor(this.state.identity));case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getUser",value:function(){var e=(0,a.default)(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("chat"==this.type){e.next=2;break}throw new Error("Getting User is not supported for this Member type: "+this.type);case 2:return e.abrupt("return",this.services.users.getUser(this.state.identity,this.state.userInfo));case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,a.default)(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.channel.removeMember(this));case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"updateAttributes",value:function(){var e=(0,a.default)(s.default.mark(function e(t){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("editMemberAttributes",{channelSid:this.channel.sid,memberSid:this.sid,attributes:(0,i.default)(t)});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"sid",get:function(){return this.state.sid}},{key:"attributes",get:function(){return this.state.attributes}},{key:"dateCreated",get:function(){return this.state.dateCreated}},{key:"dateUpdated",get:function(){return this.state.dateUpdated}},{key:"identity",get:function(){return this.state.identity}},{key:"isTyping",get:function(){return this.state.isTyping}},{key:"lastConsumedMessageIndex",get:function(){return this.state.lastConsumedMessageIndex}},{key:"lastConsumptionTimestamp",get:function(){return this.state.lastConsumptionTimestamp}},{key:"roleSid",get:function(){return this.state.roleSid}},{key:"type",get:function(){return this.state.type}}]),t}(k.EventEmitter);y([C.asyncTypeCheck(["string","number","boolean","object",C.literal(null)]),g("design:type",Function),g("design:paramtypes",[Object]),g("design:returntype",n.default)],j.prototype,"updateAttributes",null),r.Member=j},{"./logger":14,"./util":30,"./util/typecheck":31,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/number/is-integer":37,"babel-runtime/core-js/object/define-property":40,"babel-runtime/core-js/object/get-own-property-descriptor":41,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/core-js/reflect/metadata":47,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/helpers/typeof":59,"babel-runtime/regenerator":60,events:203}],17:[function(e,t,r){"use strict";var n=m(e("babel-runtime/core-js/promise")),i=m(e("babel-runtime/core-js/json/stringify")),s=m(e("babel-runtime/regenerator")),a=m(e("babel-runtime/helpers/asyncToGenerator")),o=m(e("babel-runtime/core-js/object/get-prototype-of")),u=m(e("babel-runtime/helpers/classCallCheck")),c=m(e("babel-runtime/helpers/createClass")),l=m(e("babel-runtime/helpers/possibleConstructorReturn")),d=m(e("babel-runtime/helpers/inherits")),f=m(e("babel-runtime/core-js/reflect/metadata")),p=m(e("babel-runtime/core-js/object/define-property")),h=m(e("babel-runtime/helpers/typeof")),b=m(e("babel-runtime/core-js/object/get-own-property-descriptor"));function m(e){return e&&e.__esModule?e:{default:e}}var v=function(e,t,r,n){var i,s=arguments.length,a=s<3?t:null===n?n=(0,b.default)(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":(0,h.default)(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(a=(s<3?i(a):s>3?i(t,r,a):i(t,r))||a);return s>3&&a&&(0,p.default)(t,r,a),a},y=function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":(0,h.default)(Reflect))&&"function"==typeof f.default)return(0,f.default)(e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.Message=void 0;var g=e("events"),k=e("./util"),_=e("./logger"),w=e("./media"),C=e("./util/typecheck"),x=_.Logger.scope("Message"),j=function(e){function t(e,r,n,i){(0,u.default)(this,t);var s=(0,l.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return s.channel=e,s.services=r,s.state={sid:i.sid,index:n,author:null==i.author?null:i.author,body:i.text,timestamp:i.timestamp?new Date(i.timestamp):null,dateUpdated:i.dateUpdated?new Date(i.dateUpdated):null,lastUpdatedBy:i.lastUpdatedBy?i.lastUpdatedBy:null,attributes:k.parseAttributes(i.attributes,"Got malformed attributes for the message "+i.sid,x),type:i.type?i.type:"text",media:i.type&&"media"===i.type&&i.media?new w.Media(i.media,s.services):null,memberSid:null==i.memberSid?null:i.memberSid},s}return(0,d.default)(t,e),(0,c.default)(t,[{key:"_update",value:function(e){var t=[];!e.text&&"string"!=typeof e.text||e.text===this.state.body||(this.state.body=e.text,t.push("body")),e.lastUpdatedBy&&e.lastUpdatedBy!==this.state.lastUpdatedBy&&(this.state.lastUpdatedBy=e.lastUpdatedBy,t.push("lastUpdatedBy")),e.author&&e.author!==this.state.author&&(this.state.author=e.author,t.push("author")),e.dateUpdated&&new Date(e.dateUpdated).getTime()!==(this.state.dateUpdated&&this.state.dateUpdated.getTime())&&(this.state.dateUpdated=new Date(e.dateUpdated),t.push("dateUpdated")),e.timestamp&&new Date(e.timestamp).getTime()!==(this.state.timestamp&&this.state.timestamp.getTime())&&(this.state.timestamp=new Date(e.timestamp),t.push("dateCreated"));var r=k.parseAttributes(e.attributes,"Got malformed attributes for the message "+this.sid,x);k.isDeepEqual(this.state.attributes,r)||(this.state.attributes=r,t.push("attributes")),t.length>0&&this.emit("updated",{message:this,updateReasons:t})}},{key:"getMember",value:function(){var e=(0,a.default)(s.default.mark(function e(){var t,r,n=this;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=null,!this.state.memberSid){e.next=5;break}return e.next=4,this.channel.getMemberBySid(this.memberSid).catch(function(){return x.debug('Member with sid "'+n.memberSid+'" not found for message '+n.sid),null});case 4:t=e.sent;case 5:if(t||!this.state.author){e.next=9;break}return e.next=8,this.channel.getMemberByIdentity(this.state.author).catch(function(){return x.debug('Member with identity "'+n.author+'" not found for message '+n.sid),null});case 8:t=e.sent;case 9:if(!t){e.next=11;break}return e.abrupt("return",t);case 11:throw r="Member with ",this.state.memberSid&&(r+="SID '"+this.state.memberSid+"' "),this.state.author&&(this.state.memberSid&&(r+="or "),r+="identity '"+this.state.author+"' "),"Member with "===r&&(r="Member "),r+="was not found",new Error(r);case 17:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"remove",value:function(){var e=(0,a.default)(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("deleteMessage",{channelSid:this.channel.sid,messageIdx:this.index.toString()});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"updateBody",value:function(){var e=(0,a.default)(s.default.mark(function e(t){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("editMessage",{channelSid:this.channel.sid,messageIdx:this.index.toString(),text:t});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"updateAttributes",value:function(){var e=(0,a.default)(s.default.mark(function e(t){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.services.session.addCommand("editMessageAttributes",{channelSid:this.channel.sid,messageIdx:this.index,attributes:(0,i.default)(t)});case 2:return e.abrupt("return",this);case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"sid",get:function(){return this.state.sid}},{key:"author",get:function(){return this.state.author}},{key:"body",get:function(){return"media"===this.type?null:this.state.body}},{key:"dateUpdated",get:function(){return this.state.dateUpdated}},{key:"index",get:function(){return this.state.index}},{key:"lastUpdatedBy",get:function(){return this.state.lastUpdatedBy}},{key:"dateCreated",get:function(){return this.state.timestamp}},{key:"attributes",get:function(){return this.state.attributes}},{key:"type",get:function(){return this.state.type}},{key:"media",get:function(){return this.state.media}},{key:"memberSid",get:function(){return this.state.memberSid}}]),t}(g.EventEmitter);v([C.asyncTypeCheck("string"),y("design:type",Function),y("design:paramtypes",[String]),y("design:returntype",n.default)],j.prototype,"updateBody",null),v([C.asyncTypeCheck(["string","number","boolean","object",C.literal(null)]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",n.default)],j.prototype,"updateAttributes",null),r.Message=j},{"./logger":14,"./media":15,"./util":30,"./util/typecheck":31,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/object/define-property":40,"babel-runtime/core-js/object/get-own-property-descriptor":41,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/core-js/reflect/metadata":47,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/helpers/typeof":59,"babel-runtime/regenerator":60,events:203}],18:[function(e,t,r){"use strict";var n,i=e("babel-runtime/helpers/classCallCheck"),s=(n=i)&&n.__esModule?n:{default:n};Object.defineProperty(r,"__esModule",{value:!0}),r.PushNotification=void 0;r.PushNotification=function e(t){(0,s.default)(this,e),this.title=t.title||null,this.body=t.body||null,this.sound=t.sound||null,this.badge=t.badge||null,this.action=t.action||null,this.type=t.type||null,this.data=t.data||{}}},{"babel-runtime/helpers/classCallCheck":52}],19:[function(e,t,r){"use strict";var n=a(e("babel-runtime/core-js/promise")),i=a(e("babel-runtime/helpers/classCallCheck")),s=a(e("babel-runtime/helpers/createClass"));function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.RestPaginator=void 0;var o=function(){function e(t,r,n,s){(0,i.default)(this,e),this.state={prevToken:n,nextToken:s,source:r,items:t}}return(0,s.default)(e,[{key:"nextPage",value:function(){return this.hasNextPage?this.state.source(this.state.nextToken):n.default.reject(new Error("No next page"))}},{key:"prevPage",value:function(){return this.hasPrevPage?this.state.source(this.state.prevToken):n.default.reject(new Error("No previous page"))}},{key:"hasNextPage",get:function(){return!!this.state.nextToken}},{key:"hasPrevPage",get:function(){return!!this.state.prevToken}},{key:"items",get:function(){return this.state.items}}]),e}();r.RestPaginator=o},{"babel-runtime/core-js/promise":45,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53}],20:[function(e,t,r){"use strict";var n=o(e("babel-runtime/core-js/promise")),i=o(e("babel-runtime/core-js/map")),s=o(e("babel-runtime/helpers/createClass")),a=o(e("babel-runtime/helpers/classCallCheck"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.ConsumptionHorizon=void 0;var u=e("../sessionerror"),c=function(){function e(t){(0,a.default)(this,e),this.services=t,this.consumptionHorizonRequests=new i.default,this.consumptionHorizonUpdateTimer=null}return(0,s.default)(e,[{key:"getReportInterval",value:function(){return this.services.session.getConsumptionReportInterval().then(function(e){return 1e3*e})}},{key:"delayedSendConsumptionHorizon",value:function(e){var t=this;null===this.consumptionHorizonUpdateTimer&&(this.sendConsumptionReport(!0),this.consumptionHorizonUpdateTimer=setTimeout(function(){t.sendConsumptionReport(!1)},e))}},{key:"sendConsumptionReport",value:function(e){var t=this,r=[],n=new i.default;this.consumptionHorizonRequests.forEach(function(e,t){r.push(e.entry),n.set(t,e.promises)}),r.length>0&&this.services.session.addCommand("consumptionReportV2",{report:r}).then(function(e){return t.processConsumptionReportResponse(e,n)}).catch(function(e){return t.processConsumptionReportError(e,n)}),e||(this.consumptionHorizonUpdateTimer=null),this.consumptionHorizonRequests.clear()}},{key:"processConsumptionReportResponse",value:function(e,t){e&&e.report&&Array.isArray(e.report)&&e.report.length>0&&e.report.forEach(function(e){var r=e;if(t.has(r.channelSid)){var n=null;void 0!==r.unreadMessagesCount&&null!=r.unreadMessagesCount&&(n=r.unreadMessagesCount),t.get(r.channelSid).forEach(function(e){return e.resolve(n)}),t.delete(r.channelSid)}}),this.processConsumptionReportError(new u.SessionError("Error while setting LastConsumedMessageIndex",null),t)}},{key:"processConsumptionReportError",value:function(e,t){t.forEach(function(t){return t.forEach(function(t){return t.reject(e)})})}},{key:"updateLastConsumedMessageIndexForChannel",value:function(e,t){var r=this;return new n.default(function(n,i){r.addPendingConsumptionHorizonRequest(e,{channelSid:e,messageIdx:t},{resolve:n,reject:i}),r.getReportInterval().then(function(e){return r.delayedSendConsumptionHorizon(e)})})}},{key:"advanceLastConsumedMessageIndexForChannel",value:function(e,t,r){var i=this,s=this.consumptionHorizonRequests.get(e);return new n.default(function(n,a){s&&s.entry?s.entry.messageIdx>=t?i.addPendingConsumptionHorizonRequest(e,s.entry,{resolve:n,reject:a}):i.addPendingConsumptionHorizonRequest(e,{channelSid:e,messageIdx:t},{resolve:n,reject:a}):null!==r&&tthis.cacheLifetime}},{key:"cleanupCache",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,i=(0,a.default)(this.cache);!(e=(n=i.next()).done);e=!0){var s=n.value,u=(0,o.default)(s,2),c=u[0],l=u[1];this.isExpired(l.timestamp)&&this.cache.delete(c)}}catch(e){t=!0,r=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw r}}0===this.cache.size&&clearInterval(this.timer)}},{key:"pokeTimer",value:function(){var e=this;this.timer=this.timer||setInterval(function(){return e.cleanupCache()},2*this.cacheLifetime)}},{key:"executeWithRetry",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new s.default(function(n,i){var s=[502,503,504];r&&s.push(429);var a=new p.Retrier(t.backoffConfig());a.on("attempt",function(){e().then(function(e){return a.succeeded(e)}).catch(function(e){s.indexOf(e.status)>-1?a.failed(e):"Twilsock disconnected"===e.message?a.failed(e):(a.removeAllListeners(),a.cancel(),i(e))})}),a.on("succeeded",function(e){n(e)}),a.on("cancelled",function(e){return i(e)}),a.on("failed",function(e){return i(e)}),a.start()})}},{key:"get",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i,s,a=this;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(r=this.cache.get(t))||this.isExpired(r.timestamp)){e.next=3;break}return e.abrupt("return",r.response);case 3:return i={},e.next=6,this.executeWithRetry(function(){return a.services.transport.get(t,i,a.config.productId)},this.retryWhenThrottled());case 6:return s=e.sent,this.cache.set(t,{response:s,timestamp:Date.now()}),this.pokeTimer(),e.abrupt("return",s);case 10:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()}]),e}();r.Network=h},{"babel-runtime/core-js/get-iterator":33,"babel-runtime/core-js/map":36,"babel-runtime/core-js/object/assign":38,"babel-runtime/core-js/promise":45,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/slicedToArray":57,"babel-runtime/regenerator":60,"operation-retrier":208}],22:[function(e,t,r){"use strict";var n=o(e("babel-runtime/core-js/promise")),i=o(e("babel-runtime/core-js/map")),s=o(e("babel-runtime/helpers/classCallCheck")),a=o(e("babel-runtime/helpers/createClass"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.TypingIndicator=void 0;var u=e("../logger"),c=e("../interfaces/notificationtypes"),l=u.Logger.scope("TypingIndicator"),d=function(){function e(t,r,n){(0,s.default)(this,e),this.config=t,this.services=r,this.getChannel=n,this.serviceTypingTimeout=null,this.sentUpdates=new i.default}return(0,a.default)(e,[{key:"initialize",value:function(){var e=this;this.services.notificationClient.subscribe(c.NotificationTypes.TYPING_INDICATOR,"twilsock"),this.services.notificationClient.on("message",function(t,r){t===c.NotificationTypes.TYPING_INDICATOR&&e.handleRemoteTyping(r)})}},{key:"handleRemoteTyping",value:function(e){var t=this;l.trace("Got new typing indicator ",e),this.getChannel(e.channel_sid).then(function(r){r&&r.members.forEach(function(r){if(r.identity===e.identity){var n=t.config.typingIndicatorTimeoutOverride+1e3||1e3*e.typing_timeout;r._startTyping(n)}})}).catch(function(e){throw l.error(e),e})}},{key:"send",value:function(e){var t=this.sentUpdates.get(e);return t&&t>Date.now()-this.typingTimeout?n.default.resolve():(this.sentUpdates.set(e,Date.now()),this._send(e))}},{key:"_send",value:function(e){var t=this;l.trace("Sending typing indicator");var r=this.config.typingIndicatorUri,n="ChannelSid="+e;return this.services.transport.post(r,{"Content-Type":"application/x-www-form-urlencoded"},n,this.config.productId).then(function(e){e.body.hasOwnProperty("typing_timeout")&&(t.serviceTypingTimeout=1e3*e.body.typing_timeout)}).catch(function(e){throw l.error("Failed to send typing indicator:",e),e})}},{key:"typingTimeout",get:function(){return this.config.typingIndicatorTimeoutOverride||this.serviceTypingTimeout||this.config.typingIndicatorTimeoutDefault}}]),e}();r.TypingIndicator=d},{"../interfaces/notificationtypes":12,"../logger":14,"babel-runtime/core-js/map":36,"babel-runtime/core-js/promise":45,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53}],23:[function(e,t,r){"use strict";var n=c(e("babel-runtime/regenerator")),i=c(e("babel-runtime/helpers/asyncToGenerator")),s=c(e("babel-runtime/core-js/promise")),a=c(e("babel-runtime/core-js/map")),o=c(e("babel-runtime/helpers/createClass")),u=c(e("babel-runtime/helpers/classCallCheck"));function c(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.Session=void 0;var l=e("uuid"),d=e("platform"),f=e("./interfaces/responsecodes"),p=e("./logger"),h=e("./sessionerror"),b=e("./util/deferred"),m=e("iso8601-duration"),v=e("./../package.json").version,y=p.Logger.scope("Session"),g=function e(){(0,u.default)(this,e)};var k=function(){function e(t,r){(0,u.default)(this,e);var n="undefined"!=typeof navigator?d.parse(navigator.userAgent):d;this.services=t,this.config=r,this.sessionInfo=new b.Deferred,this.currentContext={},this.pendingCommands=new a.default,this.sessionStreamPromise=null,this.endpointPlatform=["JS",v,n.os,n.name,n.version].join("|")}return(0,o.default)(e,[{key:"handleContextUpdate",value:function(e){var t;(y.info("Session context updated"),y.debug("new session context:",e),this.currentContext=e,t=e,["identity","userInfo","links","myChannels","channels"].some(function(e){return!t.hasOwnProperty(e)}))||(y.info("new session context accepted"),this.sessionInfo.set(e))}},{key:"initialize",value:function(){var e=this,t={type:"IpMsgSession",apiVersion:"3",endpointPlatform:this.endpointPlatform};return this.sessionStreamPromise=this.services.syncClient.list({purpose:"com.twilio.rtd.ipmsg",context:t}).then(function(t){return y.info("Session created",t.sid),t.on("itemAdded",function(t){return e.processCommandResponse(t.item)}),t.on("itemUpdated",function(t){return e.processCommandResponse(t.item)}),t.on("contextUpdated",function(t){return e.handleContextUpdate(t.context)}),t}).catch(function(e){throw y.error("Failed to create session",e),e}),this.sessionStreamPromise}},{key:"addCommand",value:function(e,t){return this.processCommand(e,t)}},{key:"processCommand",value:function(e,t){var r=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=new g;return i.request=t,i.request.action=e,i.commandId=l.v4(),y.info("Adding command: ",e,i.commandId),y.debug("command arguments:",t,n),new s.default(function(s,a){r.sessionStreamPromise.then(function(e){return r.pendingCommands.set(i.commandId,{resolve:s,reject:a,commandId:i.commandId,request:i.request}),e.push(i)}).then(function(){return y.debug("Command accepted by server",i.commandId)}).catch(function(o){r.pendingCommands.delete(i.commandId),y.error("Failed to add a command to the session",o),o.code!=f.ResponseCodes.ACCESS_FORBIDDEN_FOR_IDENTITY&&o.code!==f.ResponseCodes.LIST_NOT_FOUND||!n?a(new Error("Can't add command: "+o.message)):(y.info("recreating session..."),r.initialize(),s(r.processCommand(e,t,!1)))})})}},{key:"processCommandResponse",value:function(e){if(e.value.hasOwnProperty("response")&&e.value.hasOwnProperty("commandId")&&this.pendingCommands.has(e.value.commandId)){var t=e.value,r=e.value.commandId;if(t.response.status===f.ResponseCodes.HTTP_200_OK){y.debug("Command succeeded: ",t);var n=this.pendingCommands.get(r).resolve;this.pendingCommands.delete(r),n(t.response)}else{y.error("Command failed: ",t);var i=this.pendingCommands.get(r).reject;this.pendingCommands.delete(r),i(new h.SessionError(t.response.statusText,t.response.status))}}}},{key:"getSessionContext",value:function(){return this.sessionStreamPromise.then(function(e){return e.getContext()})}},{key:"getSessionLinks",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sessionInfo.promise;case 2:return t=e.sent,e.abrupt("return",{publicChannelsUrl:this.config.baseUrl+t.links.publicChannelsUrl,myChannelsUrl:this.config.baseUrl+t.links.myChannelsUrl,typingUrl:this.config.baseUrl+t.links.typingUrl,syncListUrl:this.config.baseUrl+t.links.syncListUrl,usersUrl:this.config.baseUrl+t.links.usersUrl,mediaServiceUrl:t.links.mediaServiceUrl});case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getChannelsId",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sessionInfo.promise;case 2:return t=e.sent,e.abrupt("return",t.channels);case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getMyChannelsId",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sessionInfo.promise;case 2:return t=e.sent,e.abrupt("return",t.myChannels);case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getMaxUserInfosToSubscribe",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sessionInfo.promise;case 2:return t=e.sent,e.abrupt("return",this.config.userInfosToSubscribeOverride||t.userInfosToSubscribe||this.config.userInfosToSubscribeDefault);case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"getUsersData",value:function(){return this.sessionInfo.promise.then(function(e){return{user:e.userInfo,identity:e.identity}})}},{key:"getConsumptionReportInterval",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t,r;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSessionContext();case 2:return t=e.sent,r=this.config.consumptionReportIntervalOverride||t.consumptionReportInterval||this.config.consumptionReportIntervalDefault,e.prev=4,e.abrupt("return",m.toSeconds(m.parse(r)));case 8:return e.prev=8,e.t0=e.catch(4),y.error("Failed to parse consumption report interval",r,"using default value",this.config.consumptionReportIntervalDefault),e.abrupt("return",m.toSeconds(m.parse(this.config.consumptionReportIntervalDefault)));case 12:case"end":return e.stop()}},e,this,[[4,8]])}));return function(){return e.apply(this,arguments)}}()},{key:"getHttpCacheInterval",value:function(){var e=(0,i.default)(n.default.mark(function e(){var t,r;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSessionContext();case 2:return t=e.sent,r=this.config.httpCacheIntervalOverride||t.httpCacheInterval||this.config.httpCacheIntervalDefault,e.prev=4,e.abrupt("return",m.toSeconds(m.parse(r)));case 8:return e.prev=8,e.t0=e.catch(4),y.error("Failed to parse cache interval",r,"using default value",this.config.httpCacheIntervalDefault),e.abrupt("return",m.toSeconds(m.parse(this.config.httpCacheIntervalDefault)));case 12:case"end":return e.stop()}},e,this,[[4,8]])}));return function(){return e.apply(this,arguments)}}()},{key:"identity",get:function(){return this.sessionInfo.current.identity}},{key:"reachabilityEnabled",get:function(){return this.currentContext.reachabilityEnabled}}]),e}();r.Session=k},{"./../package.json":326,"./interfaces/responsecodes":13,"./logger":14,"./sessionerror":24,"./util/deferred":29,"babel-runtime/core-js/map":36,"babel-runtime/core-js/promise":45,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/regenerator":60,"iso8601-duration":204,platform:210,uuid:321}],24:[function(e,t,r){"use strict";var n=d(e("babel-runtime/core-js/object/create")),i=d(e("babel-runtime/core-js/object/set-prototype-of")),s=d(e("babel-runtime/core-js/array/from")),a=d(e("babel-runtime/core-js/reflect/construct")),o=d(e("babel-runtime/core-js/object/get-prototype-of")),u=d(e("babel-runtime/helpers/classCallCheck")),c=d(e("babel-runtime/helpers/possibleConstructorReturn")),l=d(e("babel-runtime/helpers/inherits"));function d(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SessionError=void 0;var f=function(e){function t(e,r){(0,u.default)(this,t);var n=(0,c.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return n.name=n.constructor.name,n.message=e,n.code=r,Error.captureStackTrace?Error.captureStackTrace(n,n.constructor):n.stack=(new Error).stack,n}return(0,l.default)(t,e),t}(function(e){function t(){var t=(0,a.default)(e,(0,s.default)(arguments));return(0,i.default)(t,(0,o.default)(this)),t}return t.prototype=(0,n.default)(e.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),i.default?(0,i.default)(t,e):t.__proto__=e,t}(Error));r.SessionError=f},{"babel-runtime/core-js/array/from":32,"babel-runtime/core-js/object/create":39,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/object/set-prototype-of":44,"babel-runtime/core-js/reflect/construct":46,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56}],25:[function(e,t,r){"use strict";var n=o(e("babel-runtime/regenerator")),i=o(e("babel-runtime/helpers/asyncToGenerator")),s=o(e("babel-runtime/helpers/classCallCheck")),a=o(e("babel-runtime/helpers/createClass"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.SyncList=void 0;var u=e("./util/index"),c=e("./restpaginator"),l=e("./synclistdescriptor"),d=function(){function e(t){(0,s.default)(this,e),this.services=t}return(0,a.default)(e,[{key:"getPage",value:function(){var e=(0,i.default)(n.default.mark(function e(t){var r,i,s,a=this;return n.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=t||{},e.next=3,this.services.session.getSessionLinks();case 3:return r=e.sent,i=new u.UriBuilder(r.syncListUrl).arg("PageToken",t.pageToken).build(),e.next=7,this.services.network.get(i);case 7:return s=e.sent,e.abrupt("return",new c.RestPaginator(s.body.channels.map(function(e){return new l.SyncListDescriptor(e)}),function(e){return a.getPage({pageToken:e})},s.body.meta.previous_token,s.body.meta.next_token));case 9:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()}]),e}();r.SyncList=d},{"./restpaginator":19,"./synclistdescriptor":26,"./util/index":30,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/regenerator":60}],26:[function(e,t,r){"use strict";var n,i=e("babel-runtime/helpers/classCallCheck"),s=(n=i)&&n.__esModule?n:{default:n};Object.defineProperty(r,"__esModule",{value:!0}),r.SyncListDescriptor=void 0;r.SyncListDescriptor=function e(t){(0,s.default)(this,e),this.descriptor=t,this.channel_sid=t.channel_sid,this.status=t.status,this.channel=t.channel,this.messages=t.messages,this.roster=t.roster,this.lastConsumedMessageIndex=t.last_consumed_message_index,this.notificationLevel=t.notification_level,this.status=t.status}},{"babel-runtime/helpers/classCallCheck":52}],27:[function(e,t,r){"use strict";var n=m(e("babel-runtime/core-js/json/stringify")),i=m(e("babel-runtime/regenerator")),s=m(e("babel-runtime/helpers/asyncToGenerator")),a=m(e("babel-runtime/core-js/promise")),o=m(e("babel-runtime/core-js/object/get-prototype-of")),u=m(e("babel-runtime/helpers/classCallCheck")),c=m(e("babel-runtime/helpers/createClass")),l=m(e("babel-runtime/helpers/possibleConstructorReturn")),d=m(e("babel-runtime/helpers/inherits")),f=m(e("babel-runtime/core-js/reflect/metadata")),p=m(e("babel-runtime/core-js/object/define-property")),h=m(e("babel-runtime/helpers/typeof")),b=m(e("babel-runtime/core-js/object/get-own-property-descriptor"));function m(e){return e&&e.__esModule?e:{default:e}}var v=function(e,t,r,n){var i,s=arguments.length,a=s<3?t:null===n?n=(0,b.default)(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":(0,h.default)(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(a=(s<3?i(a):s>3?i(t,r,a):i(t,r))||a);return s>3&&a&&(0,p.default)(t,r,a),a},y=function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":(0,h.default)(Reflect))&&"function"==typeof f.default)return(0,f.default)(e,t)};Object.defineProperty(r,"__esModule",{value:!0}),r.User=void 0;var g=e("events"),k=e("./logger"),_=e("./util"),w=e("./util/typecheck"),C=k.Logger.scope("User"),x=function(e){function t(e,r,n){(0,u.default)(this,t);var i=(0,l.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return i.subscribed="initializing",i.setMaxListeners(0),i.services=n,i.state={identity:e,entityName:r,friendlyName:null,attributes:{},online:null,notifiable:null},i}return(0,d.default)(t,e),(0,c.default)(t,[{key:"_update",value:function(e,t){var r=[];switch(C.debug("User for",this.state.identity,"updated:",e,t),e){case"friendlyName":this.state.friendlyName!==t.value&&(r.push("friendlyName"),this.state.friendlyName=t.value);break;case"attributes":var n=_.parseAttributes(t.value,"Retrieved malformed attributes from the server for user: "+this.state.identity,C);_.isDeepEqual(this.state.attributes,n)||(this.state.attributes=n,r.push("attributes"));break;case"reachability":this.state.online!==t.online&&(this.state.online=t.online,r.push("online")),this.state.notifiable!==t.notifiable&&(this.state.notifiable=t.notifiable,r.push("notifiable"));break;default:return}r.length>0&&this.emit("updated",{user:this,updateReasons:r})}},{key:"_updateReachabilityInfo",value:function(e,t){var r=this;return this.services.session.reachabilityEnabled?e.get("reachability").then(t).catch(function(e){C.warn("Failed to get reachability info for ",r.state.identity,e)}):a.default.resolve()}},{key:"_fetch",value:function(){var e=(0,s.default)(i.default.mark(function e(){var t=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.state.entityName){e.next=2;break}return e.abrupt("return",this);case 2:return this.promiseToFetch=this.services.syncClient.map({id:this.state.entityName,mode:"open_existing",includeItems:!0}).then(function(e){return t.entity=e,e.on("itemUpdated",function(e){return C.debug(t.state.entityName+" ("+t.state.identity+") itemUpdated: "+e.item.key),t._update(e.item.key,e.item.value)}),a.default.all([e.get("friendlyName").then(function(e){return t._update(e.key,e.value)}),e.get("attributes").then(function(e){return t._update(e.key,e.value)}),t._updateReachabilityInfo(e,function(e){return t._update(e.key,e.value)})])}).then(function(){return C.debug("Fetched for",t.identity),t.subscribed="subscribed",t.emit("userSubscribed",t),t}).catch(function(e){throw t.promiseToFetch=null,e}),e.abrupt("return",this.promiseToFetch);case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"_ensureFetched",value:function(){return this.promiseToFetch||this._fetch()}},{key:"updateAttributes",value:function(){var e=(0,s.default)(i.default.mark(function e(t){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("unsubscribed"!=this.subscribed){e.next=2;break}throw new Error("Can't modify unsubscribed object");case 2:return e.next=4,this.services.session.addCommand("editUserAttributes",{username:this.state.identity,attributes:(0,n.default)(t)});case 4:return e.abrupt("return",this);case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"updateFriendlyName",value:function(){var e=(0,s.default)(i.default.mark(function e(t){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("unsubscribed"!=this.subscribed){e.next=2;break}throw new Error("Can't modify unsubscribed object");case 2:return e.next=4,this.services.session.addCommand("editUserFriendlyName",{username:this.state.identity,friendlyName:t});case 4:return e.abrupt("return",this);case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"unsubscribe",value:function(){var e=(0,s.default)(i.default.mark(function e(){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.promiseToFetch){e.next=7;break}return e.next=3,this.promiseToFetch;case 3:this.entity.close(),this.promiseToFetch=null,this.subscribed="unsubscribed",this.emit("userUnsubscribed",this);case 7:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"identity",get:function(){return this.state.identity},set:function(e){this.state.identity=e}},{key:"entityName",set:function(e){this.state.entityName=e}},{key:"attributes",get:function(){return this.state.attributes}},{key:"friendlyName",get:function(){return this.state.friendlyName}},{key:"online",get:function(){return this.state.online}},{key:"notifiable",get:function(){return this.state.notifiable}},{key:"isSubscribed",get:function(){return"subscribed"==this.subscribed}}]),t}(g.EventEmitter);v([w.asyncTypeCheck(["string","number","boolean","object",w.literal(null)]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",a.default)],x.prototype,"updateAttributes",null),v([w.asyncTypeCheck(["string",w.literal(null)]),y("design:type",Function),y("design:paramtypes",[Object]),y("design:returntype",a.default)],x.prototype,"updateFriendlyName",null),r.User=x},{"./logger":14,"./util":30,"./util/typecheck":31,"babel-runtime/core-js/json/stringify":35,"babel-runtime/core-js/object/define-property":40,"babel-runtime/core-js/object/get-own-property-descriptor":41,"babel-runtime/core-js/object/get-prototype-of":42,"babel-runtime/core-js/promise":45,"babel-runtime/core-js/reflect/metadata":47,"babel-runtime/helpers/asyncToGenerator":51,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,"babel-runtime/helpers/inherits":55,"babel-runtime/helpers/possibleConstructorReturn":56,"babel-runtime/helpers/typeof":59,"babel-runtime/regenerator":60,events:203}],28:[function(e,t,r){"use strict";var n=s(e("babel-runtime/helpers/classCallCheck")),i=s(e("babel-runtime/helpers/createClass"));function s(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.UserDescriptor=void 0;var a=e("./logger"),o=e("./util"),u=a.Logger.scope("UserDescriptor"),c=function(){function e(t,r){(0,n.default)(this,e),this.services=t,this.descriptor=r,this.identity=r.identity,this.friendlyName=r.friendly_name,this.attributes=o.parseAttributes(r.attributes,"Failed to parse user attributes",u),this.online=r.is_online,this.notifiable=r.is_notifiable}return(0,i.default)(e,[{key:"subscribe",value:function(){return this.services.users.getUser(this.identity,this.descriptor.sync_unique_name)}},{key:"_getDescriptor",value:function(){return this.descriptor}}]),e}();r.UserDescriptor=c},{"./logger":14,"./util":30,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53}],29:[function(e,t,r){"use strict";var n=a(e("babel-runtime/core-js/promise")),i=a(e("babel-runtime/helpers/classCallCheck")),s=a(e("babel-runtime/helpers/createClass"));function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.Deferred=void 0;var o=function(){function e(){var t=this;(0,i.default)(this,e),this._promise=new n.default(function(e,r){t._resolve=e,t._reject=r})}return(0,s.default)(e,[{key:"update",value:function(e){this._resolve(e)}},{key:"set",value:function(e){this.current=e,this._resolve(e)}},{key:"fail",value:function(e){this._reject(e)}},{key:"promise",get:function(){return this._promise}}]),e}();r.Deferred=o},{"babel-runtime/core-js/promise":45,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53}],30:[function(e,t,r){"use strict";var n=a(e("babel-runtime/helpers/classCallCheck")),i=a(e("babel-runtime/helpers/createClass")),s=a(e("babel-runtime/core-js/json/stringify"));function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.parseAttributes=r.parseTime=r.parseToNumber=r.UriBuilder=r.deepClone=r.isDeepEqual=void 0;var o=e("rfc6902");r.isDeepEqual=function(e,t){return 0===o.createPatch(e,t).length},r.deepClone=function(e){return JSON.parse((0,s.default)(e))},r.parseToNumber=function(e){return void 0===e||isNaN(Number(e))?null:Number(e)},r.parseTime=function(e){try{return new Date(e)}catch(e){return null}},r.parseAttributes=function(e,t,r){var n={};if(e)try{n=JSON.parse(e)}catch(e){r.warn(t,e)}return n};var u=function(){function e(t){(0,n.default)(this,e),this.base=t.replace(/\/$/,""),this.args=[],this.paths=[]}return(0,i.default)(e,[{key:"arg",value:function(e,t){return void 0!==t&&this.args.push(encodeURIComponent(e)+"="+encodeURIComponent(t)),this}},{key:"path",value:function(e){return this.paths.push(encodeURIComponent(e)),this}},{key:"build",value:function(){var e=this.base;return this.paths.length&&(e+="/"+this.paths.join("/")),this.args.length&&(e+="?"+this.args.join("&")),e}}]),e}();r.UriBuilder=u},{"babel-runtime/core-js/json/stringify":35,"babel-runtime/helpers/classCallCheck":52,"babel-runtime/helpers/createClass":53,rfc6902:215}],31:[function(e,t,r){"use strict";var n=o(e("babel-runtime/core-js/promise")),i=o(e("babel-runtime/helpers/slicedToArray")),s=o(e("babel-runtime/helpers/typeof")),a=o(e("babel-runtime/core-js/number/is-integer"));function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.pureObject=r.nonNegativeInteger=r.nonEmptyString=r.stringifyReceivedType=r.custom=r.literal=r.type=r.asyncTypeCheck=r.typeCheck=r.runtimeTypeCheck=void 0;var u=function(){for(var e=arguments.length,t=Array(e),r=0;r0,"a non-empty string"]});r.nonEmptyString=l;var d=c(function(e){return[(0,a.default)(e)&&e>=0,"a non-negative integer"]});r.nonNegativeInteger=d;var f=c(function(e){return["object"===(void 0===e?"undefined":(0,s.default)(e))&&null!==e&&!Array.isArray(e),"a pure object (non-null and non-array)"]});r.pureObject=f;var p=function(e,t,r){if(t.length>e.length)throw new Error("Expected at most "+e.length+" argument(s), but got "+t.length);for(;t.length0?o.slice(0,f).join(", ")+" or "+o[f]:o.join(", ");throw new Error("Argument "+(n+1)+d+" is expected to be "+p+(f>1?";":",")+" but got "+l)}})};r.runtimeTypeCheck=p;var h=function(e){var t,r=void 0;["undefined","boolean","number","bigint","string"].includes(void 0===e?"undefined":(0,s.default)(e))&&(r="string"==typeof e?'"'+e+'"':""+e);var n=null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name;return"object"===(void 0===e?"undefined":(0,s.default)(e))&&"Object"!==n&&(r=null===e?"null":"instance of "+n),r||(r=void 0===e?"undefined":(0,s.default)(e)),r};r.stringifyReceivedType=h;r.typeCheck=function(){for(var e=arguments.length,t=Array(e),r=0;rl;)if((o=u[l++])!=o)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===r)return e||l||0;return!e&&-1}}},{"./_to-absolute-index":158,"./_to-iobject":160,"./_to-length":161}],87:[function(e,t,r){var n=e("./_ctx"),i=e("./_iobject"),s=e("./_to-object"),a=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var r=1==e,u=2==e,c=3==e,l=4==e,d=6==e,f=5==e||d,p=t||o;return function(t,o,h){for(var b,m,v=s(t),y=i(v),g=n(o,h,3),k=a(y.length),_=0,w=r?p(t,k):u?p(t,0):void 0;k>_;_++)if((f||_ in y)&&(m=g(b=y[_],_,v),e))if(r)w[_]=m;else if(m)switch(e){case 3:return!0;case 5:return b;case 6:return _;case 2:w.push(b)}else if(l)return!1;return d?-1:c||l?l:w}}},{"./_array-species-create":89,"./_ctx":99,"./_iobject":114,"./_to-length":161,"./_to-object":162}],88:[function(e,t,r){var n=e("./_is-object"),i=e("./_is-array"),s=e("./_wks")("species");t.exports=function(e){var t;return i(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!i(t.prototype)||(t=void 0),n(t)&&null===(t=t[s])&&(t=void 0)),void 0===t?Array:t}},{"./_is-array":116,"./_is-object":118,"./_wks":169}],89:[function(e,t,r){var n=e("./_array-species-constructor");t.exports=function(e,t){return new(n(e))(t)}},{"./_array-species-constructor":88}],90:[function(e,t,r){"use strict";var n=e("./_a-function"),i=e("./_is-object"),s=e("./_invoke"),a=[].slice,o={};t.exports=Function.bind||function(e){var t=n(this),r=a.call(arguments,1),u=function(){var n=r.concat(a.call(arguments));return this instanceof u?function(e,t,r){if(!(t in o)){for(var n=[],i=0;i1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(n(r.v,r.k,this);r&&r.r;)r=r.p},has:function(e){return!!m(h(this,t),e)}}),f&&n(l.prototype,"size",{get:function(){return h(this,t)[b]}}),l},def:function(e,t,r){var n,i,s=m(e,t);return s?s.v=r:(e._l=s={i:i=p(t,!0),k:t,v:r,p:n=e._l,n:void 0,r:!1},e._f||(e._f=s),n&&(n.n=s),e[b]++,"F"!==i&&(e._i[i]=s)),e},getEntry:m,setStrong:function(e,t,r){c(e,t,function(e,r){this._t=h(e,t),this._k=r,this._l=void 0},function(){for(var e=this._k,t=this._l;t&&t.r;)t=t.p;return this._t&&(this._l=t=t?t.n:this._t._f)?l(0,"keys"==e?t.k:"values"==e?t.v:[t.k,t.v]):(this._t=void 0,l(1))},r?"entries":"values",!r,!0),d(t)}}},{"./_an-instance":83,"./_ctx":99,"./_descriptors":101,"./_for-of":107,"./_iter-define":121,"./_iter-step":123,"./_meta":126,"./_object-create":131,"./_object-dp":132,"./_redefine-all":146,"./_set-species":151,"./_validate-collection":166}],94:[function(e,t,r){var n=e("./_classof"),i=e("./_array-from-iterable");t.exports=function(e){return function(){if(n(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},{"./_array-from-iterable":85,"./_classof":91}],95:[function(e,t,r){"use strict";var n=e("./_redefine-all"),i=e("./_meta").getWeak,s=e("./_an-object"),a=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),c=e("./_array-methods"),l=e("./_has"),d=e("./_validate-collection"),f=c(5),p=c(6),h=0,b=function(e){return e._l||(e._l=new m)},m=function(){this.a=[]},v=function(e,t){return f(e.a,function(e){return e[0]===t})};m.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var r=v(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=p(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,r,s){var c=e(function(e,n){o(e,c,t,"_i"),e._t=t,e._i=h++,e._l=void 0,null!=n&&u(n,r,e[s],e)});return n(c.prototype,{delete:function(e){if(!a(e))return!1;var r=i(e);return!0===r?b(d(this,t)).delete(e):r&&l(r,this._i)&&delete r[this._i]},has:function(e){if(!a(e))return!1;var r=i(e);return!0===r?b(d(this,t)).has(e):r&&l(r,this._i)}}),c},def:function(e,t,r){var n=i(s(t),!0);return!0===n?b(e).set(t,r):n[e._i]=r,e},ufstore:b}},{"./_an-instance":83,"./_an-object":84,"./_array-methods":87,"./_for-of":107,"./_has":109,"./_is-object":118,"./_meta":126,"./_redefine-all":146,"./_validate-collection":166}],96:[function(e,t,r){"use strict";var n=e("./_global"),i=e("./_export"),s=e("./_meta"),a=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),c=e("./_for-of"),l=e("./_an-instance"),d=e("./_is-object"),f=e("./_set-to-string-tag"),p=e("./_object-dp").f,h=e("./_array-methods")(0),b=e("./_descriptors");t.exports=function(e,t,r,m,v,y){var g=n[e],k=g,_=v?"set":"add",w=k&&k.prototype,C={};return b&&"function"==typeof k&&(y||w.forEach&&!a(function(){(new k).entries().next()}))?(k=t(function(t,r){l(t,k,e,"_c"),t._c=new g,null!=r&&c(r,v,t[_],t)}),h("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in w&&(!y||"clear"!=e)&&o(k.prototype,e,function(r,n){if(l(this,k,e),!t&&y&&!d(r))return"get"==e&&void 0;var i=this._c[e](0===r?0:r,n);return t?this:i})}),y||p(k.prototype,"size",{get:function(){return this._c.size}})):(k=m.getConstructor(t,e,v,_),u(k.prototype,r),s.NEED=!0),f(k,e),C[e]=k,i(i.G+i.W+i.F,C),y||m.setStrong(k,e,v),k}},{"./_an-instance":83,"./_array-methods":87,"./_descriptors":101,"./_export":105,"./_fails":106,"./_for-of":107,"./_global":108,"./_hide":110,"./_is-object":118,"./_meta":126,"./_object-dp":132,"./_redefine-all":146,"./_set-to-string-tag":152}],97:[function(e,t,r){var n=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},{}],98:[function(e,t,r){"use strict";var n=e("./_object-dp"),i=e("./_property-desc");t.exports=function(e,t,r){t in e?n.f(e,t,i(0,r)):e[t]=r}},{"./_object-dp":132,"./_property-desc":145}],99:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":81}],100:[function(e,t,r){t.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},{}],101:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":106}],102:[function(e,t,r){var n=e("./_is-object"),i=e("./_global").document,s=n(i)&&n(i.createElement);t.exports=function(e){return s?i.createElement(e):{}}},{"./_global":108,"./_is-object":118}],103:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],104:[function(e,t,r){var n=e("./_object-keys"),i=e("./_object-gops"),s=e("./_object-pie");t.exports=function(e){var t=n(e),r=i.f;if(r)for(var a,o=r(e),u=s.f,c=0;o.length>c;)u.call(e,a=o[c++])&&t.push(a);return t}},{"./_object-gops":137,"./_object-keys":140,"./_object-pie":141}],105:[function(e,t,r){var n=e("./_global"),i=e("./_core"),s=e("./_ctx"),a=e("./_hide"),o=e("./_has"),u=function(e,t,r){var c,l,d,f=e&u.F,p=e&u.G,h=e&u.S,b=e&u.P,m=e&u.B,v=e&u.W,y=p?i:i[t]||(i[t]={}),g=y.prototype,k=p?n:h?n[t]:(n[t]||{}).prototype;for(c in p&&(r=t),r)(l=!f&&k&&void 0!==k[c])&&o(y,c)||(d=l?k[c]:r[c],y[c]=p&&"function"!=typeof k[c]?r[c]:m&&l?s(d,n):v&&k[c]==d?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):b&&"function"==typeof d?s(Function.call,d):d,b&&((y.virtual||(y.virtual={}))[c]=d,e&u.R&&g&&!g[c]&&a(g,c,d)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":97,"./_ctx":99,"./_global":108,"./_has":109,"./_hide":110}],106:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],107:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),s=e("./_is-array-iter"),a=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),c={},l={};(r=t.exports=function(e,t,r,d,f){var p,h,b,m,v=f?function(){return e}:u(e),y=n(r,d,t?2:1),g=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(s(v)){for(p=o(e.length);p>g;g++)if((m=t?y(a(h=e[g])[0],h[1]):y(e[g]))===c||m===l)return m}else for(b=v.call(e);!(h=b.next()).done;)if((m=i(b,y,h.value,t))===c||m===l)return m}).BREAK=c,r.RETURN=l},{"./_an-object":84,"./_ctx":99,"./_is-array-iter":115,"./_iter-call":119,"./_to-length":161,"./core.get-iterator-method":170}],108:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],109:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],110:[function(e,t,r){var n=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":101,"./_object-dp":132,"./_property-desc":145}],111:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":108}],112:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":101,"./_dom-create":102,"./_fails":106}],113:[function(e,t,r){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],114:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":92}],115:[function(e,t,r){var n=e("./_iterators"),i=e("./_wks")("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||s[i]===e)}},{"./_iterators":124,"./_wks":169}],116:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":92}],117:[function(e,t,r){var n=e("./_is-object"),i=Math.floor;t.exports=function(e){return!n(e)&&isFinite(e)&&i(e)===e}},{"./_is-object":118}],118:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],119:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var s=e.return;throw void 0!==s&&n(s.call(e)),t}}},{"./_an-object":84}],120:[function(e,t,r){"use strict";var n=e("./_object-create"),i=e("./_property-desc"),s=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:i(1,r)}),s(e,t+" Iterator")}},{"./_hide":110,"./_object-create":131,"./_property-desc":145,"./_set-to-string-tag":152,"./_wks":169}],121:[function(e,t,r){"use strict";var n=e("./_library"),i=e("./_export"),s=e("./_redefine"),a=e("./_hide"),o=e("./_iterators"),u=e("./_iter-create"),c=e("./_set-to-string-tag"),l=e("./_object-gpo"),d=e("./_wks")("iterator"),f=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(e,t,r,h,b,m,v){u(r,t,h);var y,g,k,_=function(e){if(!f&&e in j)return j[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},w=t+" Iterator",C="values"==b,x=!1,j=e.prototype,T=j[d]||j["@@iterator"]||b&&j[b],S=T||_(b),E=b?C?_("entries"):S:void 0,M="Array"==t&&j.entries||T;if(M&&(k=l(M.call(new e)))!==Object.prototype&&k.next&&(c(k,w,!0),n||"function"==typeof k[d]||a(k,d,p)),C&&T&&"values"!==T.name&&(x=!0,S=function(){return T.call(this)}),n&&!v||!f&&!x&&j[d]||a(j,d,S),o[t]=S,o[w]=p,b)if(y={values:C?S:_("values"),keys:m?S:_("keys"),entries:E},v)for(g in y)g in j||s(j,g,y[g]);else i(i.P+i.F*(f||x),t,y);return y}},{"./_export":105,"./_hide":110,"./_iter-create":120,"./_iterators":124,"./_library":125,"./_object-gpo":138,"./_redefine":147,"./_set-to-string-tag":152,"./_wks":169}],122:[function(e,t,r){var n=e("./_wks")("iterator"),i=!1;try{var s=[7][n]();s.return=function(){i=!0},Array.from(s,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!i)return!1;var r=!1;try{var s=[7],a=s[n]();a.next=function(){return{done:r=!0}},s[n]=function(){return a},e(s)}catch(e){}return r}},{"./_wks":169}],123:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],124:[function(e,t,r){t.exports={}},{}],125:[function(e,t,r){t.exports=!0},{}],126:[function(e,t,r){var n=e("./_uid")("meta"),i=e("./_is-object"),s=e("./_has"),a=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},c=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),l=function(e){a(e,n,{value:{i:"O"+ ++o,w:{}}})},d=t.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,n)){if(!u(e))return"F";if(!t)return"E";l(e)}return e[n].i},getWeak:function(e,t){if(!s(e,n)){if(!u(e))return!0;if(!t)return!1;l(e)}return e[n].w},onFreeze:function(e){return c&&d.NEED&&u(e)&&!s(e,n)&&l(e),e}}},{"./_fails":106,"./_has":109,"./_is-object":118,"./_object-dp":132,"./_uid":164}],127:[function(e,t,r){var n=e("./es6.map"),i=e("./_export"),s=e("./_shared")("metadata"),a=s.store||(s.store=new(e("./es6.weak-map"))),o=function(e,t,r){var i=a.get(e);if(!i){if(!r)return;a.set(e,i=new n)}var s=i.get(t);if(!s){if(!r)return;i.set(t,s=new n)}return s};t.exports={store:a,map:o,has:function(e,t,r){var n=o(t,r,!1);return void 0!==n&&n.has(e)},get:function(e,t,r){var n=o(t,r,!1);return void 0===n?void 0:n.get(e)},set:function(e,t,r,n){o(r,n,!0).set(e,t)},keys:function(e,t){var r=o(e,t,!1),n=[];return r&&r.forEach(function(e,t){n.push(t)}),n},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){i(i.S,"Reflect",e)}}},{"./_export":105,"./_shared":154,"./es6.map":175,"./es6.weak-map":190}],128:[function(e,t,r){var n=e("./_global"),i=e("./_task").set,s=n.MutationObserver||n.WebKitMutationObserver,a=n.process,o=n.Promise,u="process"==e("./_cof")(a);t.exports=function(){var e,t,r,c=function(){var n,i;for(u&&(n=a.domain)&&n.exit();e;){i=e.fn,e=e.next;try{i()}catch(n){throw e?r():t=void 0,n}}t=void 0,n&&n.enter()};if(u)r=function(){a.nextTick(c)};else if(!s||n.navigator&&n.navigator.standalone)if(o&&o.resolve){var l=o.resolve(void 0);r=function(){l.then(c)}}else r=function(){i.call(n,c)};else{var d=!0,f=document.createTextNode("");new s(c).observe(f,{characterData:!0}),r=function(){f.data=d=!d}}return function(n){var i={fn:n,next:void 0};t&&(t.next=i),e||(e=i,r()),t=i}}},{"./_cof":92,"./_global":108,"./_task":157}],129:[function(e,t,r){"use strict";
// 25.4.1.5 NewPromiseCapability(C)
var n=e("./_a-function");function i(e){var t,r;this.promise=new e(function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n}),this.resolve=n(t),this.reject=n(r)}t.exports.f=function(e){return new i(e)}},{"./_a-function":81}],130:[function(e,t,r){"use strict";var n=e("./_descriptors"),i=e("./_object-keys"),s=e("./_object-gops"),a=e("./_object-pie"),o=e("./_to-object"),u=e("./_iobject"),c=Object.assign;t.exports=!c||e("./_fails")(function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach(function(e){t[e]=e}),7!=c({},e)[r]||Object.keys(c({},t)).join("")!=n})?function(e,t){for(var r=o(e),c=arguments.length,l=1,d=s.f,f=a.f;c>l;)for(var p,h=u(arguments[l++]),b=d?i(h).concat(d(h)):i(h),m=b.length,v=0;m>v;)p=b[v++],n&&!f.call(h,p)||(r[p]=h[p]);return r}:c},{"./_descriptors":101,"./_fails":106,"./_iobject":114,"./_object-gops":137,"./_object-keys":140,"./_object-pie":141,"./_to-object":162}],131:[function(e,t,r){var n=e("./_an-object"),i=e("./_object-dps"),s=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),o=function(){},u=function(){var t,r=e("./_dom-create")("iframe"),n=s.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",(t=r.contentWindow.document).open(),t.write("