polfan-server-js-client 0.2.54 → 0.2.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/workspace.xml +26 -30
- package/build/index.cjs.js +32 -11
- package/build/index.cjs.js.map +1 -1
- package/build/index.umd.js +1 -1
- package/build/index.umd.js.map +1 -1
- package/build/types/IndexedObjectCollection.d.ts +4 -3
- package/build/types/state-tracker/TopicHistoryWindow.d.ts +5 -3
- package/package.json +1 -1
- package/src/IndexedObjectCollection.ts +26 -12
- package/src/state-tracker/TopicHistoryWindow.ts +16 -3
- package/tests/history-window.test.ts +6 -1
package/build/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PservClient=t():e.PservClient=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}e.r(t),e.d(t,{AuthClient:()=>Ne,FilesClient:()=>He,IndexedCollection:()=>a,IndexedObjectCollection:()=>l,Layer:()=>V,ObservableIndexedCollection:()=>c,ObservableIndexedObjectCollection:()=>d,PermissionDefinition:()=>z,Permissions:()=>q,WebApiChatClient:()=>Re,WebSocketChatClient:()=>Te,extractUserFromMember:()=>C});class i{constructor(){r(this,"events",new Map),r(this,"onceEvents",new Map)}on(e,t){return this.addHandler(this.events,e,t),this}once(e,t){return this.addHandler(this.onceEvents,e,t),this}off(e,t){var r,i=null===(r=this.events.get(e))||void 0===r?void 0:r.indexOf(t);return!i||i<0||this.events.get(e).splice(i,1),this}emit(e,t){return this.callHandlers(this.events,e,t),this.callHandlers(this.onceEvents,e,t),this.onceEvents.delete(e),this}addHandler(e,t,r){var i,o=null!==(i=e.get(t))&&void 0!==i?i:[];o.push(r),e.set(t,o)}callHandlers(e,t,r){var i;null===(i=e.get(t))||void 0===i||i.forEach((e=>e(r)))}}function o(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class s extends i{constructor(){super(...arguments),o(this,"awaitingResponse",new Map),o(this,"sentCounter",0)}on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}createEnvelope(e,t){return{type:e,data:t,ref:(++this.sentCounter).toString()}}createPromiseFromCommandEnvelope(e){var t=this;return new Promise((function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t.awaitingResponse.set(e.ref,i)}))}handleIncomingEnvelope(e){if(this.awaitingResponse.has(e.ref)){var t="Error"===e.type;this.awaitingResponse.get(e.ref)[0]({data:t?null:e.data,error:t?e.data:null}),this.awaitingResponse.delete(e.ref)}}handleEnvelopeSendError(e,t){this.awaitingResponse.has(e.ref)&&(this.awaitingResponse.get(e.ref)[1](t),this.awaitingResponse.delete(e.ref))}}function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];n(this,"_items",new Map),n(this,"_mutationCounter",0),this.set(...e)}get mutationCounter(){return this._mutationCounter}get items(){return this._items}get length(){return this._items.size}set(){this._mutationCounter++;for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)this._items.set(i[0],i[1])}get(e){return this.items.get(e)}has(e){return this.items.has(e)}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)this.items.delete(i);this._mutationCounter++}deleteAll(){this.items.clear(),this._mutationCounter++}findBy(e,t){for(var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=new a;!((r=this.items.entries().next().value).done||i&&o.length===i);)r[1][e]===t&&o.set(r);return o}}class l{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.id=e,n(this,"_items",void 0),this._items=new a,this.set(...t)}get items(){return Array.from(this._items.items.values())}get length(){return this._items.length}get mutationCounter(){return this._items.mutationCounter}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this._items.set(...t.map((e=>[this.getId(e),e])))}get(e){return this._items.get(e)}getAt(e){return this.items[e]}has(e){return this._items.has(e)}delete(){this._items.delete(...arguments)}deleteAll(){this._items.deleteAll()}findBy(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new l(this.id);for(var o of this.items){if(r&&i.length===r)break;o[e]===t&&i.set(o)}return i}getId(e){return"function"==typeof this.id?this.id(e):e[this.id]}}class c extends a{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(),n(this,"eventTarget",void 0),this.eventTarget=new i,this.set(...e)}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.set(...t),this.eventTarget.emit("change",{setItems:t.map((e=>e[0]))}))}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.delete(...t),this.eventTarget.emit("change",{deletedItems:t}))}deleteAll(){if(this.length){var e=this._items.keys();super.deleteAll(),this.eventTarget.emit("change",{deletedItems:Array.from(e)})}}on(e,t){return this.eventTarget.on(e,t),this}once(e,t){return this.eventTarget.once(e,t),this}off(e,t){return this.eventTarget.off(e,t),this}}class d extends l{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];super(e),this.id=e,n(this,"eventTarget",void 0),this.eventTarget=new i,this.set(...t)}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.set(...t),this.eventTarget.emit("change",{setItems:t.map((e=>this.getId(e)))}))}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.delete(...t),this.eventTarget.emit("change",{deletedItems:t}))}deleteAll(){if(this.length){var e=this._items.items.keys();super.deleteAll(),this.eventTarget.emit("change",{deletedItems:Array.from(e)})}}on(e,t){return this.eventTarget.on(e,t),this}once(e,t){return this.eventTarget.once(e,t),this}off(e,t){return this.eventTarget.off(e,t),this}}function h(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class u{constructor(){h(this,"promise",void 0),h(this,"resolve",void 0),this.promise=new Promise((e=>this.resolve=e))}}class m{constructor(){h(this,"promises",new a)}register(e,t){this.promises.set([t,e])}registerByFunction(e,t){this.register(e(),t)}get(e){return this.promises.get(e)}has(e){return this.promises.has(e)}notExist(e){return!this.has(e)}forget(){this.promises.delete(...arguments)}forgetAll(){this.promises.deleteAll()}}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function g(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){f(s,i,o,n,a,"next",e)}function a(e){f(s,i,o,n,a,"throw",e)}n(void 0)}))}}function y(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var w=function(e){return e[e.LIVE=0]="LIVE",e[e.LATEST=1]="LATEST",e[e.PAST=2]="PAST",e[e.OLDEST=3]="OLDEST",e}({});class b extends d{constructor(){super(...arguments),y(this,"limit",50),y(this,"currentState",w.LIVE),y(this,"fetchingState",void 0),y(this,"oldestId",null)}get state(){return this.currentState}get hasLatest(){return[w.LATEST,w.LIVE].includes(this.state)}get hasOldest(){return this.state===w.OLDEST||null!==this.oldestId&&this.has(this.oldestId)}resetToLatest(){var e=this;return g((function*(){if(!e.fetchingState&&e.currentState!==w.LATEST){var t;e.fetchingState=w.LATEST;try{t=yield e.fetchLatestItems()}finally{e.fetchingState=void 0}e.deleteAll(),e.addItems(t,"tail"),e.currentState=w.LATEST}}))()}fetchPrevious(){var e=this;return g((function*(){if(!e.fetchingState&&!e.hasOldest){var t;e.fetchingState=w.PAST;try{t=yield e.fetchItemsBefore()}finally{e.fetchingState=void 0}if(!t)return e.resetToLatest();if(!t.length){var r=e.getAt(0);return e.oldestId=r?e.getId(r):null,yield e.refreshFetchedState(),void(e.currentState===w.PAST&&(e.currentState=w.OLDEST))}e.addItems(t,"head"),yield e.refreshFetchedState()}}))()}fetchNext(){var e=this;return g((function*(){if(!e.fetchingState&&!e.hasLatest){var t;e.fetchingState=w.PAST;try{t=yield e.fetchItemsAfter()}finally{e.fetchingState=void 0}if(t)return t.length?(e.addItems(t,"tail"),void(yield e.refreshFetchedState())):void 0;yield e.resetToLatest()}}))()}refreshFetchedState(){var e=this;return g((function*(){e.currentState=(yield e.isLatestItemLoaded())?w.LATEST:w.PAST}))()}addItems(e,t){var r;"head"===t&&(r=this.trimItemsArrayToLimit([...e,...this.items],"tail")),"tail"===t&&(r=this.trimItemsArrayToLimit([...this.items,...e],"head")),this.deleteAll(),this.set(...r)}trimItemsArrayToLimit(e,t){return null===this.limit?e:"head"===t?e.slice(-this.limit):"tail"===t?e.slice(0,this.limit):void 0}}class S extends b{constructor(e,t,r){super("id"),this.roomId=e,this.topicId=t,this.tracker=r,y(this,"WindowState",w),y(this,"traverseLock",!1),this.tracker.client.on("Session",(e=>this.handleSession(e))),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e)))}get isTraverseLocked(){return this.traverseLock}setTraverseLock(e){var t=()=>super.resetToLatest,r=this;return g((function*(){r.traverseLock=e,e&&r.state!==w.LIVE&&r.state!==w.LATEST&&(yield t().call(r))}))()}resetToLatest(){var e=()=>super.resetToLatest,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}fetchNext(){var e=()=>super.fetchNext,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}fetchPrevious(){var e=()=>super.fetchPrevious,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}_updateMessageReference(e){var t=this.get(e.refMessage.id);t&&this.set(v(v({},t),{},{topicRef:e.id}))}handleNewMessage(e){var t=this;return g((function*(){[w.LATEST,w.LIVE].includes(t.state)&&e.message.location.roomId===t.roomId&&e.message.location.topicId===t.topicId&&t.addItems([e.message],"tail")}))()}handleSession(e){e.state.rooms.find((e=>e.id===this.roomId))?this.resetToLatest():this.deleteAll()}fetchItemsAfter(){var e=this;return g((function*(){var t,r=null===(t=e.getAt(e.length-1))||void 0===t?void 0:t.id;if(!r)return null;var i=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId},after:r});if(i.error)throw new Error("Cannot fetch messages: ".concat(i.error.message));return i.data.messages}))()}fetchItemsBefore(){var e=this;return g((function*(){var t,r=null===(t=e.getAt(0))||void 0===t?void 0:t.id;if(!r)return null;var i=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId},before:r});if(i.error)throw new Error("Cannot fetch messages: ".concat(i.error.message));return i.data.messages}))()}fetchLatestItems(){var e=this;return g((function*(){var t=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId}});if(t.error)throw new Error("Cannot fetch messages: ".concat(t.error.message));return t.data.messages}))()}getTopic(){var e=this;return g((function*(){return(yield e.tracker.rooms.getTopics(e.roomId,[e.topicId])).get(e.topicId)}))()}getLatestMessageId(){var e=this;return g((function*(){var t,r;return null===(t=yield e.getTopic())||void 0===t||null===(r=t.lastMessage)||void 0===r?void 0:r.id}))()}isLatestItemLoaded(){var e=this;return g((function*(){var t=yield e.getLatestMessageId();return!t||e.has(t)}))()}}function T(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function P(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){T(s,i,o,n,a,"next",e)}function a(e){T(s,i,o,n,a,"throw",e)}n(void 0)}))}}function I(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class k{constructor(e,t){this.room=e,this.tracker=t,I(this,"historyWindows",new a),I(this,"traverseLock",!1),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.updateTraverseLock(this.room),this.room.defaultTopic&&this.createHistoryWindowForTopic(this.room.defaultTopic)}getMessagesWindow(e){var t=this;return P((function*(){if(!t.historyWindows.get(e)){var r=(yield t.tracker.rooms.getTopics(t.room.id,[e])).get(e);r&&t.createHistoryWindowForTopic(r)}return t.historyWindows.get(e)}))()}handleRoomUpdated(e){var t=this;return P((function*(){if(t.room.id===e.room.id)for(var[,r]of(t.room=e.room,t.updateTraverseLock(e.room),e.room.defaultTopic&&t.createHistoryWindowForTopic(e.room.defaultTopic),Array.from(t.historyWindows.items)))yield r.setTraverseLock(t.traverseLock)}))()}handleNewTopic(e){this.room.id===e.roomId&&this.createHistoryWindowForTopic(e.topic)}handleTopicDeleted(e){this.room.id===e.location.roomId&&this.historyWindows.delete(e.location.topicId)}createHistoryWindowForTopic(e){if(!this.historyWindows.has(e.id)){var t=new S(this.room.id,e.id,this.tracker);if(t.setTraverseLock(this.traverseLock),this.historyWindows.set([e.id,t]),e.refMessage){var r=this.historyWindows.get(e.refMessage.location.topicId);null==r||r._updateMessageReference(e)}}}updateTraverseLock(e){this.traverseLock="Ephemeral"===e.history.mode}}function O(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?O(Object(r),!0).forEach((function(t){M(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function E(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function j(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){E(s,i,o,n,a,"next",e)}function a(e){E(s,i,o,n,a,"throw",e)}n(void 0)}))}}function M(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class L{constructor(e){this.tracker=e,M(this,"roomHistories",new a),M(this,"followedTopics",new a),M(this,"followedTopicsPromises",new m),M(this,"deferredSession",new u),this.tracker.client.on("Session",(e=>this.handleSession(e))),this.tracker.client.on("RoomJoined",(e=>this.handleRoomJoin(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("FollowedTopicUpdated",(e=>this.handleFollowedTopicUpdated(e))),this.tracker.client.on("TopicFollowed",(e=>this.handleTopicFollowed(e))),this.tracker.client.on("TopicUnfollowed",(e=>this.handleTopicUnfollowed(e))),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomLeft(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e)))}getRoomHistory(e){var t=this;return j((function*(){return yield t.deferredSession.promise,t.roomHistories.get(e)}))()}cacheSpaceFollowedTopics(e){var t=this;return j((function*(){if(e&&!(yield t.tracker.spaces.get()).has(e))throw new Error("You are not in space ".concat(e));var r=(yield t.tracker.rooms.get()).findBy("spaceId",e).items.map((e=>e.id));if(r.length){var i=t.tracker.client.send("GetFollowedTopics",{location:{spaceId:e}});r.forEach((e=>t.followedTopicsPromises.register(i,e)));var o=yield i;if(o.error)throw o.error;t.setFollowedTopicsArray(r,o.data.followedTopics)}}))()}getRoomFollowedTopics(e){var t=this;return j((function*(){if((yield t.tracker.rooms.get()).has(e))return t.followedTopics.has(e)||(t.followedTopicsPromises.notExist(e)&&t.followedTopicsPromises.registerByFunction(j((function*(){var r=yield t.tracker.client.send("GetFollowedTopics",{location:{roomId:e}});if(r.error)throw r.error;t.setFollowedTopicsArray([e],r.data.followedTopics)})),e),yield t.followedTopicsPromises.get(e)),t.followedTopics.get(e)}))()}ackRoomFollowedTopics(e){var t=this;return j((function*(){var r=yield t.getRoomFollowedTopics(e);if(r)for(var i of r.items)i.missed&&(yield t.tracker.client.send("Ack",{location:i.location}))}))()}calculateRoomMissedMessages(e){var t=this;return j((function*(){var r=yield t.getRoomFollowedTopics(e);if(r)return r.items.reduce(((e,t)=>{var r;return e+(null!==(r=t.missed)&&void 0!==r?r:0)}),0)}))()}_deleteByTopicIds(e){for(var t,r=arguments.length,i=new Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];null===(t=this.followedTopics.get(e))||void 0===t||t.delete(...i)}createHistoryForNewRoom(e){this.roomHistories.set([e.id,new k(e,this.tracker)])}handleNewMessage(e){this.updateLocallyFollowedTopicOnNewMessage(e)}handleFollowedTopicUpdated(e){var t;null===(t=this.followedTopics.get(e.followedTopic.location.roomId))||void 0===t||t.set(e.followedTopic)}handleTopicFollowed(e){this.setFollowedTopicsArray([e.followedTopic.location.roomId],[e.followedTopic])}handleTopicUnfollowed(e){var t;null===(t=this.followedTopics.get(e.location.roomId))||void 0===t||t.delete(e.location.topicId)}handleRoomDeleted(e){this.roomHistories.delete(e.id),this.clearRoomFollowedTopicsStructures(e.id)}handleRoomJoin(e){this.createHistoryForNewRoom(e.room),this.clearRoomFollowedTopicsStructures(e.room.id)}handleRoomLeft(e){this.roomHistories.delete(e.id),this.clearRoomFollowedTopicsStructures(e.id)}handleNewTopic(e){var t=this;return j((function*(){if(t.followedTopics.has(e.roomId)){var r=(yield t.tracker.client.send("GetFollowedTopics",{location:{roomId:e.roomId,topicId:e.topic.id}})).data.followedTopics[0];r&&t.followedTopics.get(e.roomId).set(r)}}))()}handleTopicDeleted(e){var t;null===(t=this.followedTopics.get(e.location.roomId))||void 0===t||t.delete(e.location.topicId)}handleSession(e){this.followedTopics.deleteAll(),this.followedTopicsPromises.forgetAll(),this.roomHistories.deleteAll(),e.state.rooms.forEach((e=>this.createHistoryForNewRoom(e))),this.deferredSession.resolve()}updateLocallyFollowedTopicOnNewMessage(e){var t,r,i=this.followedTopics.get(e.message.location.roomId),o=null==i?void 0:i.get(e.message.location.topicId);i&&o&&"Ephemeral"!==e.message.type&&(r=e.message.author.user.id===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)?{missed:0,lastAckMessageId:e.message.id}:{missed:null===o.missed?null:o.missed+1},i.set(R(R({},o),r)))}setFollowedTopicsArray(e,t){var r={};t.forEach((e=>{var t,i;null!==(i=r[t=e.location.roomId])&&void 0!==i||(r[t]=[]),r[e.location.roomId].push(e)})),e.forEach((e=>{this.followedTopics.has(e)||this.followedTopics.set([e,new d((e=>e.location.topicId))]),r[e]&&this.followedTopics.get(e).set(...r[e])}))}clearRoomFollowedTopicsStructures(e){this.followedTopics.delete(e),this.followedTopicsPromises.forget(e)}}function A(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function D(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?A(Object(r),!0).forEach((function(t){N(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):A(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function U(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){U(s,i,o,n,a,"next",e)}function a(e){U(s,i,o,n,a,"throw",e)}n(void 0)}))}}function N(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class F{constructor(e){this.tracker=e,N(this,"messages",void 0),N(this,"list",new d("id")),N(this,"topics",new a),N(this,"members",new a),N(this,"deferredSession",new u),N(this,"membersPromises",new m),N(this,"topicsPromises",new m),this.messages=new L(e),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.tracker.client.on("RoomJoined",(e=>this.handleRoomJoined(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomLeft(e))),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("TopicUpdated",(e=>this.handleTopicUpdated(e))),this.tracker.client.on("RoomMemberJoined",(e=>this.handleRoomMemberJoined(e))),this.tracker.client.on("RoomMemberLeft",(e=>this.handleRoomMemberLeft(e))),this.tracker.client.on("RoomMembers",(e=>this.handleRoomMembers(e))),this.tracker.client.on("RoomMemberUpdated",(e=>this.handleRoomMemberUpdated(e))),this.tracker.client.on("SpaceMemberLeft",(e=>this.handleSpaceMemberLeft(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("UserUpdated",(e=>this.handleUserUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}getMembers(e){var t=this;return x((function*(){return t.membersPromises.notExist(e)&&t.membersPromises.registerByFunction(x((function*(){var r=yield t.tracker.client.send("GetRoomMembers",{id:e});if(r.error)throw r.error;t.handleRoomMembers(r.data)})),e),yield t.membersPromises.get(e),t.members.get(e)}))()}getMe(e){var t=this;return x((function*(){var r=(yield t.tracker.getMe()).id;if(t.list.has(e)){var i=yield t.getMembers(e);return null==i?void 0:i.items.find((e=>{var t,i;return(null!==(t=null===(i=e.user)||void 0===i?void 0:i.id)&&void 0!==t?t:e.spaceMember.user.id)===r}))}}))()}get(){var e=this;return x((function*(){return yield e.deferredSession.promise,e.list}))()}getTopics(e,t){var r=this;return x((function*(){if(yield r.deferredSession.promise,null!=t&&t.length){var i=t.filter((t=>{var i;return!(null!==(i=r.topics.get(e))&&void 0!==i&&i.has(t)||r.topicsPromises.has(e+t))}));if(i.length){var o=r.tracker.client.send("GetTopics",{roomId:e,topicIds:i}).then((e=>{var t;return null===(t=r.topics.get(e.data.location.roomId))||void 0===t?void 0:t.set(...e.data.topics)}));i.forEach((t=>r.topicsPromises.register(o,e+t)))}for(var s of t)yield r.topicsPromises.get(e+s)}return r.topics.get(e)}))()}deleteRoom(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of(this.list.delete(...t),this.members.delete(...t),this.membersPromises.forget(...t),t)){var o,s,n=null!==(o=null===(s=this.topics.get(i))||void 0===s?void 0:s.items.map((e=>e.id)))&&void 0!==o?o:[];this.messages._deleteByTopicIds(i,...n)}this.topics.delete(...t)}deleteRoomsBySpaceId(e){this.deleteRoom(...this.list.findBy("spaceId",e).items.map((e=>e.id)))}handleSpaceMemberUpdated(e){for(var t of this.list.findBy("spaceId",e.spaceId).items){var r=this.members.get(t.id);if(r&&r.has(e.userId)){var i=r.get(e.userId),o=i.spaceMember.user;i.spaceMember=D(D({},e.member),{},{user:o}),r.set(i)}}}handleSpaceMemberLeft(e){this.list.findBy("spaceId",e.spaceId).items.forEach((t=>{var r;return null===(r=this.members.get(t.id))||void 0===r?void 0:r.delete(e.userId)}))}handleRoomMemberUpdated(e){var t,r;if(this.members.has(e.roomId)){var i=this.members.get(e.roomId),o=i.get(e.userId),s=e.member,n=null!==(t=null===(r=o.spaceMember)||void 0===r?void 0:r.user)&&void 0!==t?t:o.user;s.spaceMember?s.spaceMember.user=n:s.user=n,i.set(s)}}handleSpaceDeleted(e){this.deleteRoomsBySpaceId(e.id)}handleTopicDeleted(e){var t;this.topics.get(e.location.roomId).delete(e.location.topicId);var r=this.list.get(e.location.roomId);(null===(t=r.defaultTopic)||void 0===t?void 0:t.id)===e.location.topicId&&this.list.set(D(D({},r),{},{defaultTopic:null}))}handleNewTopic(e){this.addJoinedRoomTopics(e.roomId,e.topic)}addJoinedRoomTopics(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];this.topics.has(e)?this.topics.get(e).set(...r):this.topics.set([e,new d("id",r)])}handleRoomJoined(e){this.addJoinedRooms(e.room)}handleRoomUpdated(e){this.list.has(e.room.id)&&this.list.set(e.room)}handleRoomDeleted(e){this.deleteRoom(e.id)}handleTopicUpdated(e){var t,r=this.list.get(e.location.roomId);null!==(t=this.topics.get(e.location.roomId))&&void 0!==t&&t.has(e.topic.id)&&this.topics.get(e.location.roomId).set(e.topic),r.defaultTopic.id===e.topic.id&&(r.defaultTopic=e.topic,this.list.set(r))}addJoinedRooms(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)i.defaultTopic&&this.addJoinedRoomTopics(i.id,i.defaultTopic),"Pm"===i.type&&i.recipients&&(this.handleRoomMembers({id:i.id,members:i.recipients.map((e=>({user:e,spaceMember:null,roles:null})))}),this.membersPromises.register(Promise.resolve(),i.id));this.list.set(...t)}handleRoomLeft(e){this.deleteRoom(e.id)}handleRoomMemberJoined(e){this.members.has(e.roomId)&&this.members.get(e.roomId).set(e.member)}handleRoomMemberLeft(e){this.members.has(e.roomId)&&this.members.get(e.roomId).delete(e.userId)}handleRoomMembers(e){this.members.has(e.id)||this.members.set([e.id,new d((e=>{var t,r;return null!==(t=null===(r=e.user)||void 0===r?void 0:r.id)&&void 0!==t?t:e.spaceMember.user.id}),e.members)])}handleSession(e){this.list.deleteAll(),this.topics.deleteAll(),this.topicsPromises.forgetAll(),this.members.deleteAll(),this.membersPromises.forgetAll(),this.addJoinedRooms(...e.state.rooms),this.deferredSession.resolve()}handleUserUpdated(e){this.members.items.forEach((t=>{var r=t.get(e.user.id);if(r){var i=D({},r);r.user?i.user=e.user:i.spaceMember.user=e.user,t.set(i)}}));var t=[];this.list.items.forEach((r=>{var i;null!==(i=r.recipients)&&void 0!==i&&i.some((t=>t.id===e.user.id))&&(r.recipients=r.recipients.map((t=>t.id===e.user.id?e.user:t)),t.push(D({},r)))})),this.list.set(...t)}handleNewMessage(e){var t,r=this.topics.get(e.message.location.roomId),i=null==r?void 0:r.get(e.message.location.topicId);if(i){var o=D(D({},i),{},{messageCount:i.messageCount+1,lastMessage:e.message});r.set(o);var s=this.list.get(e.message.location.roomId);(null===(t=s.defaultTopic)||void 0===t?void 0:t.id)===e.message.location.topicId&&this.list.set(D(D({},s),{},{defaultTopic:o}))}}}function C(e){var t,r;return null!==(t=e.user)&&void 0!==t?t:null===(r=e.spaceMember)||void 0===r?void 0:r.user}function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function _(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){W(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function J(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function H(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){J(s,i,o,n,a,"next",e)}function a(e){J(s,i,o,n,a,"throw",e)}n(void 0)}))}}function W(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class G{constructor(e){this.tracker=e,W(this,"list",new d("id")),W(this,"roles",new a),W(this,"rooms",new a),W(this,"roomIdToSpaceId",new a),W(this,"members",new a),W(this,"deferredSession",new u),W(this,"roomsPromises",new m),W(this,"membersPromises",new m),this.tracker.client.on("NewRoom",(e=>this.handleNewRoom(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceUpdated",(e=>this.handleSpaceUpdated(e))),this.tracker.client.on("SpaceJoined",(e=>this.handleSpaceJoined(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceMemberJoined",(e=>this.handleSpaceMemberJoined(e))),this.tracker.client.on("SpaceMemberLeft",(e=>this.handleSpaceMemberLeft(e))),this.tracker.client.on("SpaceMembers",(e=>this.handleSpaceMembers(e))),this.tracker.client.on("SpaceRooms",(e=>this.handleSpaceRooms(e))),this.tracker.client.on("RoomSummaryUpdated",(e=>this.handleRoomSummaryUpdated(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("UserUpdated",(e=>this.handleUserUpdated(e))),this.tracker.client.on("NewRole",(e=>this.handleNewRole(e))),this.tracker.client.on("RoleDeleted",(e=>this.handleRoleDeleted(e))),this.tracker.client.on("RoleUpdated",(e=>this.handleRoleUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}get(){var e=this;return H((function*(){return yield e.deferredSession.promise,e.list}))()}getRoles(e){var t=this;return H((function*(){return yield t.deferredSession.promise,t.roles.get(e)}))()}getRooms(e){var t=this;return H((function*(){return t.roomsPromises.notExist(e)&&t.roomsPromises.registerByFunction(H((function*(){var r=yield t.tracker.client.send("GetSpaceRooms",{id:e});if(r.error)throw r.error;t.handleSpaceRooms(r.data)})),e),yield t.roomsPromises.get(e),t.rooms.get(e)}))()}getMembers(e){var t=this;return H((function*(){return t.membersPromises.notExist(e)&&t.membersPromises.registerByFunction(H((function*(){var r=yield t.tracker.client.send("GetSpaceMembers",{id:e});if(r.error)throw r.error;t.handleSpaceMembers(r.data)})),e),yield t.membersPromises.get(e),t.members.get(e)}))()}getMe(e){var t=this;return H((function*(){var r=(yield t.tracker.getMe()).id;if(t.list.has(e)){var i=yield t.getMembers(e);return null==i?void 0:i.items.find((e=>e.user.id===r))}}))()}handleNewRole(e){var t=this.roles.get(e.spaceId);t.set(e.role),this.list.get(e.spaceId).roles=t.items}handleNewRoom(e){var t;null===(t=this.rooms.get(e.spaceId))||void 0===t||t.set(e.summary),this.roomIdToSpaceId.set([e.summary.id,e.spaceId])}handleRoomUpdated(e){if(e.room.spaceId&&this.rooms.has(e.room.spaceId)){var t=this.rooms.get(e.room.spaceId);t.set(_(_({},t.get(e.room.id)),{},{name:e.room.name,description:e.room.description}))}}handleRoomDeleted(e){var t=this;return H((function*(){var r,i=t.roomIdToSpaceId.get(e.id);if(t.roomIdToSpaceId.delete(e.id),i){var o=t.list.get(i),s=!1;null===(r=t.rooms.get(i))||void 0===r||r.delete(e.id),o.systemRoom===e.id&&(o.systemRoom=null,s=!0),o.defaultRooms.includes(e.id)&&(o.defaultRooms=o.defaultRooms.filter((t=>t!==e.id)),s=!0),s&&t.list.set(o)}}))()}handleRoleDeleted(e){var t=this.roles.get(e.spaceId);t.delete(e.id),this.list.get(e.spaceId).roles=t.items}handleSpaceUpdated(e){this.list.set(e.space)}handleSpaceDeleted(e){var t,r,i=null!==(t=null===(r=this.rooms.get(e.id))||void 0===r?void 0:r.items.map((e=>e.id)))&&void 0!==t?t:[];this.roomIdToSpaceId.delete(...i),this.roles.delete(e.id),this.members.delete(e.id),this.membersPromises.forget(e.id),this.rooms.delete(e.id),this.roomsPromises.forget(e.id),this.list.delete(e.id)}handleSpaceJoined(e){this.addJoinedSpaces(e.space)}addJoinedSpaces(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.roles.set(...t.map((e=>[e.id,new d("id",e.roles)]))),this.list.set(...t)}handleSpaceMemberJoined(e){this.members.has(e.spaceId)&&this.members.get(e.spaceId).set(e.member)}handleSpaceMemberLeft(e){this.members.has(e.spaceId)&&this.members.get(e.spaceId).delete(e.userId)}handleSpaceMembers(e){this.members.has(e.id)||this.members.set([e.id,new d((e=>null==e?void 0:e.user.id),e.members)])}handleSpaceRooms(e){this.rooms.has(e.id)||(this.rooms.set([e.id,new d("id",e.summaries)]),e.summaries.forEach((t=>this.roomIdToSpaceId.set([t.id,e.id]))))}handleRoomSummaryUpdated(e){var t=this;return H((function*(){var r=t.roomIdToSpaceId.get(e.summary.id),i=t.roomsPromises.get(r);if(r&&i){yield i;var o,s=t.rooms.get(r),n=s.get(e.summary.id);o=n?_(_({},n),e.summary):e.summary,s.set(o)}}))()}handleSpaceMemberUpdated(e){if(this.members.has(e.spaceId)){var t=this.members.get(e.spaceId),r=t.get(e.userId);t.set(_(_({},e.member),{},{user:r.user}))}}handleRoleUpdated(e){var t=this.roles.get(e.spaceId),r=t.get(e.role.id),i=e.role,o=[i];r.priority!==i.priority&&o.push(...function(e,t,r){var i=r.priority-t.priority>0,o=!i,s=[];return e.forEach((e=>{e.id!==r.id&&(i&&t.priority<=e.priority&&(e.priority--,s.push(e)),o&&r.priority<=e.priority&&(e.priority++,s.push(e)))})),s}(t.items,r,i)),this.roles.get(e.spaceId).set(...o)}handleSession(e){this.list.deleteAll(),this.roles.deleteAll(),this.rooms.deleteAll(),this.roomsPromises.forgetAll(),this.members.deleteAll(),this.membersPromises.forgetAll(),this.roomIdToSpaceId.deleteAll(),this.addJoinedSpaces(...e.state.spaces),this.deferredSession.resolve()}handleUserUpdated(e){this.members.items.forEach((t=>{var r=t.get(e.user.id);r&&t.set(_(_({},r),{},{user:e.user}))}))}}function Q(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var V=function(e){return e[e.Global=0]="Global",e[e.Space=1]="Space",e[e.Room=2]="Room",e[e.Topic=3]="Topic",e}({});class z{constructor(){Q(this,"value",void 0),Q(this,"maxLayer",void 0)}}class q{static getNames(){return Object.keys(this.list)}static getByName(e){return this.list[e]}static canBeDefinedOnLayer(e,t){if(!this.getByName(e))throw new Error("Invalid permission name: ".concat(e));return t<=this.getByName(e).maxLayer}}function K(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Y(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){K(s,i,o,n,a,"next",e)}function a(e){K(s,i,o,n,a,"throw",e)}n(void 0)}))}}function $(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Q(q,"list",{Root:{value:1,maxLayer:V.Room},CreateSpaces:{value:2,maxLayer:V.Global},ManageSpace:{value:4,maxLayer:V.Space},ManageSpaceRoles:{value:8,maxLayer:V.Space},ManageRoom:{value:16,maxLayer:V.Room},CreateTopics:{value:32,maxLayer:V.Room},ManageTopic:{value:64,maxLayer:V.Topic},ManageSpaceMembers:{value:128,maxLayer:V.Space},ManageRoomMembers:{value:256,maxLayer:V.Room},CreateMessages:{value:512,maxLayer:V.Topic},ManagePermissions:{value:1024,maxLayer:V.Topic},CreateSpaceRooms:{value:2048,maxLayer:V.Space},ManageSpaceRooms:{value:4096,maxLayer:V.Space},CreateEmoticons:{value:8192,maxLayer:V.Space},ManageEmoticon:{value:16384,maxLayer:V.Space},ManageBan:{value:32768,maxLayer:V.Room},Kick:{value:65536,maxLayer:V.Room},ChangeOwnNick:{value:1<<17,maxLayer:V.Space}});var X=(e,t)=>[e.spaceId,e.roomId,e.topicId,null==t?void 0:t.type,null==t?void 0:t.userId,null==t?void 0:t.roleId].filter(Boolean).join("/"),Z=e=>X(e.location,e.target);class ee extends i{constructor(e){super(),this.tracker=e,$(this,"overwrites",new a),$(this,"overwritesPromises",new m),this.tracker.client.on("PermissionOverwrites",(e=>this.handlePermissionOverwrites(e))),this.tracker.client.on("PermissionOverwritesUpdated",(e=>this.handlePermissionOverwrites(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.tracker.client.on("RoleDeleted",(e=>this.handleRoleDeleted(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("RoomMemberUpdated",(e=>this.handleRoomMemberUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}getOverwrites(e,t){var r=this;return Y((function*(){r.validateLocation(e);var i=X(e,t);return r.overwritesPromises.notExist(i)&&r.overwritesPromises.registerByFunction(Y((function*(){var i=yield r.tracker.client.send("GetPermissionOverwrites",{location:e,target:t});if(i.error)throw i.error;r.handlePermissionOverwrites(i.data)})),i),yield r.overwritesPromises.get(i),r.overwrites.get(i)}))()}on(e,t){return super.on(e,t)}check(e,t){var r=this;return Y((function*(){if(!e.length)throw new Error("Permission names array cannot be empty");var i=yield r.calculatePermissions(t),o=[];return e.forEach((e=>{~i&q.getByName(e).value&&o.push(e)})),{ok:0===o.length,hasAll:0===o.length,hasAny:o.length<e.length,missing:o}}))()}calculatePermissions(e){var t=this;return Y((function*(){var r,i,o,s,n;t.validateLocation(e);var a=(yield t.tracker.getMe()).id,[l,c]=yield t.fetchMembersOrFail(e),d=[...null!==(r=null==l?void 0:l.roles)&&void 0!==r?r:[],...null!==(i=null==c?void 0:c.roles)&&void 0!==i?i:[]],h=[t.getOverwrites({},{type:"User",userId:a}).then((e=>e.overwrites))];if(e.spaceId&&null!==(o=yield t.tracker.spaces.get())&&void 0!==o&&o.has(e.spaceId)){var u={spaceId:e.spaceId};h.push(t.collectRoleOverwrites(u,d)),h.push(t.getOverwrites(u,{type:"User",userId:a}).then((e=>e.overwrites)))}if(e.roomId&&null!==(s=yield t.tracker.rooms.get())&&void 0!==s&&s.has(e.roomId)){var m={spaceId:e.spaceId,roomId:e.roomId};d.length&&h.push(t.collectRoleOverwrites(m,d)),h.push(t.getOverwrites(m,{type:"User",userId:a}).then((e=>e.overwrites)))}return e.topicId&&null!==(n=yield t.tracker.rooms.getTopics(e.roomId))&&void 0!==n&&n.has(e.topicId)&&(d.length&&h.push(t.collectRoleOverwrites(e,d)),h.push(t.getOverwrites(e,{type:"User",userId:a}).then((e=>e.overwrites)))),t.resolveOverwritesHierarchy(yield Promise.all(h))}))()}handlePermissionOverwrites(e){this.overwrites.set([Z(e),e]),this.emit("change")}handleSpaceDeleted(e){var t=this.deleteOverwritesByIdPrefix(X({spaceId:e.id}));this.overwritesPromises.forget(...t)}handleRoomDeleted(e){var t=this;return Y((function*(){var r=(yield t.tracker.rooms.get()).get(e.id);if(r){var i=t.deleteOverwritesByIdPrefix(X({spaceId:r.spaceId,roomId:r.id}));t.overwritesPromises.forget(...i)}}))()}handleTopicDeleted(e){var t=this.deleteOverwritesByIdPrefix(X(e.location));this.overwritesPromises.forget(...t)}handleRoleDeleted(e){var t=this.deleteOverwritesByIdPrefix(X({spaceId:e.spaceId},{type:"Role",roleId:e.id}));this.overwritesPromises.forget(...t)}handleSpaceMemberUpdated(e){var t;e.userId===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)&&this.emit("change")}handleRoomMemberUpdated(e){var t;e.userId===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)&&this.emit("change")}deleteOverwritesByIdPrefix(e){var t=[];return this.overwrites.items.forEach((r=>{var i=Z(r);i.startsWith(e)&&(t.push(i),this.overwrites.delete(i))})),t}collectRoleOverwrites(e,t){var r=this;return Y((function*(){var i=yield Promise.all(t.map((t=>r.getOverwrites(e,{type:"Role",roleId:t}))));return r.resolveOverwritesFromRolesByOrder(e.spaceId,i)}))()}resolveOverwritesFromRolesByOrder(e,t){var r=this;return Y((function*(){var i=0,o=0,s=yield r.tracker.spaces.getRoles(e),n=t.sort(((e,t)=>s.get(e.target.roleId).priority-s.get(t.target.roleId).priority)),a=t.reduce(((e,t)=>{var r,i,o,s;return Math.max(e,null!==(r=null===(i=t.overwrites.allow)||void 0===i?void 0:i.toString(2).length)&&void 0!==r?r:0,null!==(o=null===(s=t.overwrites.deny)||void 0===s?void 0:s.toString(2).length)&&void 0!==o?o:0)}),0);return n.forEach((e=>{for(var t,r,s,n,l=e.overwrites,c=null!==(t=null===(r=l.deny)||void 0===r?void 0:r.toString(2).split("").reverse().join(""))&&void 0!==t?t:"",d=null!==(s=null===(n=l.allow)||void 0===n?void 0:n.toString(2).split("").reverse().join(""))&&void 0!==s?s:"",h=0;h<a;h++){var u,m,p=parseInt(null!==(u=c[h])&&void 0!==u?u:"0"),v=parseInt(null!==(m=d[h])&&void 0!==m?m:"0");p&&(o|=1<<h),v&&(i|=1<<h)}})),{allow:i,deny:o}}))()}resolveOverwritesHierarchy(e){var t=0;for(var r of e){if(r.allow&q.getByName("Root").value)return this.getRootAccessValue();t=t&~r.deny|r.allow}return t}getRootAccessValue(){var e=0;for(var t of q.getNames())e|=q.getByName(t).value;return e}fetchMembersOrFail(e){var t=this;return Y((function*(){var r=yield Promise.all([e.spaceId?t.tracker.spaces.getMe(e.spaceId):null,e.roomId?t.tracker.rooms.getMe(e.roomId):null]),i=e.spaceId&&!r[0],o=e.roomId&&!r[1];if(i||o){var s=i?"space (".concat(e.spaceId,")"):"room (".concat(e.roomId,")");throw new Error("Attempting to calculate permissions for a ".concat(s," that the user does not belong to"))}return r}))()}validateLocation(e){if(e.topicId&&!e.roomId)throw new Error("Corrupted arguments hierarchy")}handleSession(e){this.overwrites.deleteAll(),this.overwritesPromises.forgetAll()}}function te(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function re(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){te(s,i,o,n,a,"next",e)}function a(e){te(s,i,o,n,a,"throw",e)}n(void 0)}))}}function ie(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var oe="global";class se{constructor(e){this.tracker=e,ie(this,"list",new a),ie(this,"emoticonsPromises",new m),this.tracker.client.on("Emoticons",(e=>this.handleEmoticons(e))),this.tracker.client.on("NewEmoticon",(e=>this.handleNewEmoticon(e))),this.tracker.client.on("EmoticonDeleted",(e=>this.handleEmoticonDeleted(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("Session",(()=>this.handleSession()))}get(e){var t=this;return re((function*(){var r=null!=e?e:oe;return t.emoticonsPromises.notExist(r)&&t.emoticonsPromises.registerByFunction(re((function*(){var r=yield t.tracker.client.send("GetEmoticons",{spaceId:e});if(r.error)throw r.error;t.handleEmoticons(r.data)})),r),yield t.emoticonsPromises.get(r),t.list.get(r)}))()}handleEmoticons(e){var t,r=null!==(t=e.location.spaceId)&&void 0!==t?t:oe;this.list.has(r)||this.list.set([r,new d("id")]),this.list.get(r).set(...e.emoticons)}handleNewEmoticon(e){var t,r=this.list.get(null!==(t=e.emoticon.spaceId)&&void 0!==t?t:oe);null==r||r.set(e.emoticon)}handleEmoticonDeleted(e){var t,r=this.list.get(null!==(t=e.spaceId)&&void 0!==t?t:oe);null==r||r.delete(e.emoticonId)}handleSpaceDeleted(e){this.list.delete(e.id)}handleSession(){this.list.deleteAll(),this.emoticonsPromises.forgetAll()}}function ne(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function ae(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class le{constructor(e){this.tracker=e,ae(this,"onlineStatus",new i),ae(this,"users",new d("id")),e.client.on("UserUpdated",(e=>this.handleUsers([e.user]))),e.client.on("RoomMemberJoined",(e=>this.handleMembers([e.member]))),e.client.on("SpaceMemberJoined",(e=>this.handleMembers([e.member]))),e.client.on("SpaceMembers",(e=>this.handleMembers(e.members))),e.client.on("RoomMembers",(e=>this.handleMembers(e.members))),e.client.on("Messages",(e=>this.handleUsers(e.messages.map((e=>e.author.user))))),e.client.on("NewMessage",(e=>this.handleUsers([e.message.author.user]))),e.client.on("Session",(e=>this.handleSession(e)))}getAvailable(){var e,t=this;return(e=function*(){return t.users},function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ne(s,i,o,n,a,"next",e)}function a(e){ne(s,i,o,n,a,"throw",e)}n(void 0)}))})()}handleMembers(e){this.handleUsers(e.map(C))}handleSession(e){this.users.deleteAll(),this.handleUsers([e.user])}handleUsers(e){e.forEach((e=>{var t=this.users.get(e.id);t&&t.online!==e.online&&this.onlineStatus.emit("change",e)})),this.users.set(...e)}}function ce(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function de(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ce(s,i,o,n,a,"next",e)}function a(e){ce(s,i,o,n,a,"throw",e)}n(void 0)}))}}function he(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ue=(e,t)=>"".concat(e,"-").concat(t),me=e=>ue(e.refUser.id,e.type);class pe{constructor(e){this.tracker=e,he(this,"relationships",new d(me)),he(this,"promises",new m),this.tracker.client.on("Relationships",(e=>this.handleRelationships(e))),this.tracker.client.on("NewRelationship",(e=>this.handleNewRelationship(e))),this.tracker.client.on("RelationshipDeleted",(e=>this.handleRelationshipDeleted(e))),this.tracker.client.on("Session",(()=>this.handleSession()))}get(){var e=this;return de((function*(){return e.promises.notExist("all")&&e.promises.registerByFunction(de((function*(){var t=yield e.tracker.client.send("GetRelationships",{});if(t.error)throw t.error})),"all"),yield e.promises.get("all"),e.relationships}))()}exists(e,t){var r=this;return de((function*(){return yield r.get(),r.relationships.has(ue(e,t))}))()}handleRelationships(e){this.relationships.deleteAll(),e.relationships.forEach((e=>{this.relationships.set(e)}))}handleNewRelationship(e){this.promises.has("all")&&this.relationships.set(e.relationship)}handleRelationshipDeleted(e){this.promises.has("all")&&this.relationships.delete(me(e.relationship))}handleSession(){this.promises.forgetAll(),this.relationships.deleteAll()}}function ve(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function fe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ge{constructor(e){this.client=e,fe(this,"permissions",new ee(this)),fe(this,"rooms",new F(this)),fe(this,"spaces",new G(this)),fe(this,"emoticons",new se(this)),fe(this,"users",new le(this)),fe(this,"relationships",new pe(this)),fe(this,"_me",null),fe(this,"deferredSession",new u),this.client.on("Session",(e=>this.handleSession(e)))}get me(){return this._me}getMe(){var e,t=this;return(e=function*(){return yield t.deferredSession.promise,t._me},function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ve(s,i,o,n,a,"next",e)}function a(e){ve(s,i,o,n,a,"throw",e)}n(void 0)}))})()}handleSession(e){this._me=e.user,this.deferredSession.resolve()}}function ye(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function we(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ye(s,i,o,n,a,"next",e)}function a(e){ye(s,i,o,n,a,"throw",e)}n(void 0)}))}}function be(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Se=function(e){return e.connect="connect",e.disconnect="disconnect",e.message="message",e.error="error",e}(Se||{});class Te extends s{constructor(e){var t;super(),this.options=e,be(this,"Event",Se),be(this,"state",void 0),be(this,"ws",null),be(this,"sendQueue",[]),be(this,"connectingTimeoutId",void 0),be(this,"authenticated",void 0),be(this,"authenticatedResolvers",void 0),(null===(t=this.options.stateTracking)||void 0===t||t)&&(this.state=new ge(this))}connect(){var e=this;return we((function*(){var t,r,i=new URLSearchParams(null!==(t=e.options.queryParams)&&void 0!==t?t:{});return i.set("token",e.options.token),e.ws=new WebSocket("".concat(e.options.url,"?").concat(i)),e.ws.onclose=t=>e.onClose(t),e.ws.onmessage=t=>e.onMessage(t),e.connectingTimeoutId=setTimeout((()=>e.triggerConnectionTimeout()),null!==(r=e.options.connectingTimeoutMs)&&void 0!==r?r:1e4),e.authenticated=!1,new Promise((function(){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.authenticatedResolvers=r}))}))()}disconnect(){var e;this.sendQueue=[],null===(e=this.ws)||void 0===e||e.close(),this.ws=null}send(e,t){var r=this;return we((function*(){var i=r.createEnvelope(e,t),o=r.createPromiseFromCommandEnvelope(i);return r.isPendingReadyWsState()?(r.sendQueue.push(i),o):(r.sendEnvelope(i),o)}))()}sendEnvelope(e){var t,r;this.isReadyToSendWsState()?this.ws.send(JSON.stringify(e)):this.handleEnvelopeSendError(e,new Error("Cannot send; invalid websocket state=".concat(null!==(t=null===(r=this.ws)||void 0===r?void 0:r.readyState)&&void 0!==t?t:"[no connection]")))}onMessage(e){var t=JSON.parse(e.data);if(this.handleIncomingEnvelope(t),this.emit(t.type,t.data),this.emit(this.Event.message,t),!this.authenticated){var r="Bye"!==t.type;this.authenticated=r,r?(this.authenticatedResolvers[0](),this.emit(this.Event.connect),this.sendFromQueue()):this.authenticatedResolvers[1](t.data)}}onClose(e){clearTimeout(this.connectingTimeoutId);var t=1e3!==e.code;t&&this.connect(),this.emit(this.Event.disconnect,t)}sendFromQueue(){var e=this,t=0,r=function(r){var i,o=e.sendQueue[r];setTimeout((()=>e.sendEnvelope(o)),t),t+=null!==(i=e.options.awaitQueueSendDelayMs)&&void 0!==i?i:500};for(var i in this.sendQueue)r(i);this.sendQueue=[],clearTimeout(this.connectingTimeoutId)}triggerConnectionTimeout(){this.disconnect(),this.emit(this.Event.error,new Error("Connection timeout"))}isPendingReadyWsState(){return this.ws&&this.ws.readyState===this.ws.CONNECTING||!this.authenticated}isReadyToSendWsState(){return this.ws&&this.ws.readyState===this.ws.OPEN&&this.authenticated}}function Pe(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Ie(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){Pe(s,i,o,n,a,"next",e)}function a(e){Pe(s,i,o,n,a,"throw",e)}n(void 0)}))}}function ke(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Oe=function(e){return e.message="message",e.error="error",e.destroy="destroy",e}(Oe||{});class Re extends s{constructor(e){super(),this.options=e,ke(this,"Event",Oe),ke(this,"sendStack",void 0)}send(e,t){var r=this;return Ie((function*(){var i=r.createEnvelope(e,t);return r.sendStack.push({data:i,attempts:0,lastTimeoutId:null}),r.makeApiCall(r.sendStack.length-1),r.createPromiseFromCommandEnvelope(i)}))()}destroy(){this.sendStack.forEach((e=>{e.lastTimeoutId&&clearTimeout(e.lastTimeoutId),this.awaitingResponse.delete(e.data.ref)})),this.sendStack=[],this.emit(this.Event.destroy,!1)}onMessage(e,t){var r=this;return Ie((function*(){r.sendStack.splice(e,1);var i=yield t.json();r.handleIncomingEnvelope(i),r.emit(i.type,i.data),r.emit(r.Event.message,i)}))()}onError(e,t){var r,i;if(this.sendStack[e].attempts>=(null!==(r=this.options.attemptsToSend)&&void 0!==r?r:10))return this.sendStack.splice(e,1),void this.handleEnvelopeSendError(this.sendStack[e].data,new Error("Cannot send ".concat(t,"; aborting after reaching the maximum connection errors")));this.sendStack[e].lastTimeoutId=setTimeout((()=>this.makeApiCall(e)),null!==(i=this.options.attemptDelayMs)&&void 0!==i?i:3e3)}makeApiCall(e){var t;this.sendStack[e].attempts++;var r=JSON.stringify(this.sendStack[e].data),i={"Content-Type":"application/json",Accept:"application/json"};i.Authorization="Bearer ".concat(this.options.token);var o=new URLSearchParams(null!==(t=this.options.queryParams)&&void 0!==t?t:{}),s="".concat(this.options.url).concat(o?"?"+o:"");fetch(s,{headers:i,body:r,method:"POST"}).then((t=>this.onMessage(e,t))).catch((()=>this.onError(e,r)))}}function Ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function je(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Me(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){je(s,i,o,n,a,"next",e)}function a(e){je(s,i,o,n,a,"throw",e)}n(void 0)}))}}function Le(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Ae{constructor(e){this.options=e,Le(this,"defaultUrl",void 0)}send(e,t){var r=arguments,i=this;return Me((function*(){var o=r.length>2&&void 0!==r[2]?r[2]:void 0,s=i.getUrl(t),n=void 0;o&&(["GET","DELETE"].includes(e)?s+=new URLSearchParams(o).toString():n=JSON.stringify(o));var a=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(r),!0).forEach((function(t){Le(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ee(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({"Content-Type":"application/json",Accept:"application/json"},i.getAuthHeaders()),l=yield fetch(s,{method:e,body:n,headers:a});return i.convertFetchResponse(l)}))()}getAuthHeaders(){var e={};return this.options.token&&(e.Authorization="Bearer ".concat(this.options.token)),e}getUrl(e){var t;return this.removeEndingSlash(null!==(t=this.options.url)&&void 0!==t?t:this.defaultUrl)+"/"+this.removeStartingSlash(e)}convertFetchResponse(e){return Me((function*(){var t;return{ok:e.ok,status:e.status,data:null!==(t=e.headers.get("content-type"))&&void 0!==t&&t.includes("json")?yield e.json():yield e.text()}}))()}removeStartingSlash(e){return e.replace(/^\/+/,"")}removeEndingSlash(e){return e.replace(/\/+$/,"")}}function De(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Ue(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){De(s,i,o,n,a,"next",e)}function a(e){De(s,i,o,n,a,"throw",e)}n(void 0)}))}}function xe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Ne extends Ae{constructor(){super(...arguments),xe(this,"defaultUrl","https://polfan.pl/webservice/api")}static createToken(e,t){var r=arguments;return Ue((function*(){var i=r.length>2&&void 0!==r[2]?r[2]:"pserv-js-client",o=yield new Ne({token:null}).send("POST","auth/tokens",{login:e,password:t,client_name:i});if(o.ok)return o.data;throw new Error("Cannot create user token: ".concat(o.data.errors[0]))}))()}deleteToken(e){var t=this;return Ue((function*(){var r=yield t.send("DELETE","auth/tokens/".concat(e));if(!r.ok)throw new Error("Cannot delete access token: ".concat(r.data.errors[0]))}))()}getMe(){var e=this;return Ue((function*(){var t=yield e.send("GET","auth/me");if(t.ok)return t.data.id=t.data.id.toString(),t.data;throw new Error("Cannot get current user account: ".concat(t.data.errors[0]))}))()}}function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function Ce(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){Je(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Be(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function _e(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){Be(s,i,o,n,a,"next",e)}function a(e){Be(s,i,o,n,a,"throw",e)}n(void 0)}))}}function Je(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class He extends Ae{constructor(){super(...arguments),Je(this,"defaultUrl","https://files.devana.pl")}uploadFile(e){var t=this;return _e((function*(){var r,i=encodeURIComponent(null!==(r=e.name)&&void 0!==r?r:""),o=Ce(Ce({},t.getAuthHeaders()),{},{Accept:"application/json","Content-Disposition":'attachment; filename="'.concat(i,'"'),"Content-Length":e.size}),s=yield fetch(t.getUrl("files"),{method:"POST",body:e,headers:o});return t.convertFetchResponse(s)}))()}getFileMeta(e){var t=this;return _e((function*(){return t.send("GET","files/"+e)}))()}getFileMetaBulk(e){var t=this;return _e((function*(){var r=new URLSearchParams;return e.forEach((e=>r.append("id[]",e))),t.send("GET","files?"+r)}))()}}return t})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PservClient=t():e.PservClient=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};function r(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}e.r(t),e.d(t,{AuthClient:()=>Ne,FilesClient:()=>He,IndexedCollection:()=>a,IndexedObjectCollection:()=>l,Layer:()=>V,ObservableIndexedCollection:()=>c,ObservableIndexedObjectCollection:()=>d,PermissionDefinition:()=>z,Permissions:()=>q,WebApiChatClient:()=>Re,WebSocketChatClient:()=>Te,extractUserFromMember:()=>C});class i{constructor(){r(this,"events",new Map),r(this,"onceEvents",new Map)}on(e,t){return this.addHandler(this.events,e,t),this}once(e,t){return this.addHandler(this.onceEvents,e,t),this}off(e,t){var r,i=null===(r=this.events.get(e))||void 0===r?void 0:r.indexOf(t);return!i||i<0||this.events.get(e).splice(i,1),this}emit(e,t){return this.callHandlers(this.events,e,t),this.callHandlers(this.onceEvents,e,t),this.onceEvents.delete(e),this}addHandler(e,t,r){var i,o=null!==(i=e.get(t))&&void 0!==i?i:[];o.push(r),e.set(t,o)}callHandlers(e,t,r){var i;null===(i=e.get(t))||void 0===i||i.forEach((e=>e(r)))}}function o(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class s extends i{constructor(){super(...arguments),o(this,"awaitingResponse",new Map),o(this,"sentCounter",0)}on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}createEnvelope(e,t){return{type:e,data:t,ref:(++this.sentCounter).toString()}}createPromiseFromCommandEnvelope(e){var t=this;return new Promise((function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t.awaitingResponse.set(e.ref,i)}))}handleIncomingEnvelope(e){if(this.awaitingResponse.has(e.ref)){var t="Error"===e.type;this.awaitingResponse.get(e.ref)[0]({data:t?null:e.data,error:t?e.data:null}),this.awaitingResponse.delete(e.ref)}}handleEnvelopeSendError(e,t){this.awaitingResponse.has(e.ref)&&(this.awaitingResponse.get(e.ref)[1](t),this.awaitingResponse.delete(e.ref))}}function n(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class a{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];n(this,"_items",new Map),this.set(...e)}get items(){return this._items}get length(){return this._items.size}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)this._items.set(i[0],i[1])}get(e){return this.items.get(e)}has(e){return this.items.has(e)}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)this.items.delete(i)}deleteAll(){this.items.clear()}findBy(e,t){for(var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=new a;!((r=this.items.entries().next().value).done||i&&o.length===i);)r[1][e]===t&&o.set(r);return o}shallowCopy(){var e=new a;return e._items=this._items,e}}class l{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.id=e,n(this,"_items",void 0),this._items=new a,this.set(...t)}get items(){return Array.from(this._items.items.values())}get length(){return this._items.length}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this._items.set(...t.map((e=>[this.getId(e),e])))}get(e){return this._items.get(e)}getAt(e){return this.items[e]}has(e){return this._items.has(e)}delete(){this._items.delete(...arguments)}deleteAll(){this._items.deleteAll()}findBy(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new l(this.id);for(var o of this.items){if(r&&i.length===r)break;o[e]===t&&i.set(o)}return i}shallowCopy(){var e=new l(this.id);return e._items=this._items,e}getId(e){return"function"==typeof this.id?this.id(e):e[this.id]}}class c extends a{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(),n(this,"eventTarget",void 0),this.eventTarget=new i,this.set(...e)}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.set(...t),this.eventTarget.emit("change",{setItems:t.map((e=>e[0]))}))}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.delete(...t),this.eventTarget.emit("change",{deletedItems:t}))}deleteAll(){if(this.length){var e=this._items.keys();super.deleteAll(),this.eventTarget.emit("change",{deletedItems:Array.from(e)})}}shallowCopy(){var e=new c;return e.eventTarget=this.eventTarget,e._items=this._items,e}on(e,t){return this.eventTarget.on(e,t),this}once(e,t){return this.eventTarget.once(e,t),this}off(e,t){return this.eventTarget.off(e,t),this}}class d extends l{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];super(e),this.id=e,n(this,"eventTarget",void 0),this.eventTarget=new i,this.set(...t)}set(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.set(...t),this.eventTarget.emit("change",{setItems:t.map((e=>this.getId(e)))}))}delete(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t.length&&(super.delete(...t),this.eventTarget.emit("change",{deletedItems:t}))}deleteAll(){if(this.length){var e=this._items.items.keys();super.deleteAll(),this.eventTarget.emit("change",{deletedItems:Array.from(e)})}}shallowCopy(){var e=new d(this.id);return e.eventTarget=this.eventTarget,e._items=this._items,e}on(e,t){return this.eventTarget.on(e,t),this}once(e,t){return this.eventTarget.once(e,t),this}off(e,t){return this.eventTarget.off(e,t),this}}function h(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class u{constructor(){h(this,"promise",void 0),h(this,"resolve",void 0),this.promise=new Promise((e=>this.resolve=e))}}class m{constructor(){h(this,"promises",new a)}register(e,t){this.promises.set([t,e])}registerByFunction(e,t){this.register(e(),t)}get(e){return this.promises.get(e)}has(e){return this.promises.has(e)}notExist(e){return!this.has(e)}forget(){this.promises.delete(...arguments)}forgetAll(){this.promises.deleteAll()}}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function f(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function g(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){f(s,i,o,n,a,"next",e)}function a(e){f(s,i,o,n,a,"throw",e)}n(void 0)}))}}function y(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var w=function(e){return e[e.LIVE=0]="LIVE",e[e.LATEST=1]="LATEST",e[e.PAST=2]="PAST",e[e.OLDEST=3]="OLDEST",e}({});class b extends d{constructor(){super(...arguments),y(this,"limit",50),y(this,"oldestId",null),y(this,"currentState",w.LIVE),y(this,"fetchingState",void 0)}get state(){return this.currentState}get hasLatest(){return[w.LATEST,w.LIVE].includes(this.state)}get hasOldest(){return this.state===w.OLDEST||null!==this.oldestId&&this.has(this.oldestId)}resetToLatest(){var e=this;return g((function*(){if(!e.fetchingState&&e.currentState!==w.LATEST){var t;e.fetchingState=w.LATEST;try{t=yield e.fetchLatestItems()}finally{e.fetchingState=void 0}e.deleteAll(),e.addItems(t,"tail"),e.currentState=w.LATEST}}))()}fetchPrevious(){var e=this;return g((function*(){if(!e.fetchingState&&!e.hasOldest){var t;e.fetchingState=w.PAST;try{t=yield e.fetchItemsBefore()}finally{e.fetchingState=void 0}if(!t)return e.resetToLatest();if(!t.length){var r=e.getAt(0);return e.oldestId=r?e.getId(r):null,yield e.refreshFetchedState(),void(e.currentState===w.PAST&&(e.currentState=w.OLDEST))}e.addItems(t,"head"),yield e.refreshFetchedState()}}))()}fetchNext(){var e=this;return g((function*(){if(!e.fetchingState&&!e.hasLatest){var t;e.fetchingState=w.PAST;try{t=yield e.fetchItemsAfter()}finally{e.fetchingState=void 0}if(t)return t.length?(e.addItems(t,"tail"),void(yield e.refreshFetchedState())):void 0;yield e.resetToLatest()}}))()}refreshFetchedState(){var e=this;return g((function*(){e.currentState=(yield e.isLatestItemLoaded())?w.LATEST:w.PAST}))()}addItems(e,t){var r;"head"===t&&(r=this.trimItemsArrayToLimit([...e,...this.items],"tail")),"tail"===t&&(r=this.trimItemsArrayToLimit([...this.items,...e],"head")),this.deleteAll(),this.set(...r)}trimItemsArrayToLimit(e,t){return null===this.limit?e:"head"===t?e.slice(-this.limit):"tail"===t?e.slice(0,this.limit):void 0}}class S extends b{constructor(e,t,r){super("id"),this.roomId=e,this.topicId=t,this.tracker=r,y(this,"WindowState",w),y(this,"traverseLock",!1),this.tracker.client.on("Session",(e=>this.handleSession(e))),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e)))}shallowCopy(){var e=new S(this.roomId,this.topicId,this.tracker);return e._items=this._items,e.limit=this.limit,e.currentState=this.currentState,e.fetchingState=this.fetchingState,e.oldestId=this.oldestId,e}get isTraverseLocked(){return this.traverseLock}setTraverseLock(e){var t=()=>super.resetToLatest,r=this;return g((function*(){r.traverseLock=e,e&&r.state!==w.LIVE&&r.state!==w.LATEST&&(yield t().call(r))}))()}resetToLatest(){var e=()=>super.resetToLatest,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}fetchNext(){var e=()=>super.fetchNext,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}fetchPrevious(){var e=()=>super.fetchPrevious,t=this;return g((function*(){if(!t.traverseLock)return e().call(t)}))()}_updateMessageReference(e){var t=this.get(e.refMessage.id);t&&this.set(v(v({},t),{},{topicRef:e.id}))}handleNewMessage(e){var t=this;return g((function*(){[w.LATEST,w.LIVE].includes(t.state)&&e.message.location.roomId===t.roomId&&e.message.location.topicId===t.topicId&&t.addItems([e.message],"tail")}))()}handleSession(e){e.state.rooms.find((e=>e.id===this.roomId))?this.resetToLatest():this.deleteAll()}fetchItemsAfter(){var e=this;return g((function*(){var t,r=null===(t=e.getAt(e.length-1))||void 0===t?void 0:t.id;if(!r)return null;var i=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId},after:r});if(i.error)throw new Error("Cannot fetch messages: ".concat(i.error.message));return i.data.messages}))()}fetchItemsBefore(){var e=this;return g((function*(){var t,r=null===(t=e.getAt(0))||void 0===t?void 0:t.id;if(!r)return null;var i=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId},before:r});if(i.error)throw new Error("Cannot fetch messages: ".concat(i.error.message));return i.data.messages}))()}fetchLatestItems(){var e=this;return g((function*(){var t=yield e.tracker.client.send("GetMessages",{location:{roomId:e.roomId,topicId:e.topicId}});if(t.error)throw new Error("Cannot fetch messages: ".concat(t.error.message));return t.data.messages}))()}getTopic(){var e=this;return g((function*(){return(yield e.tracker.rooms.getTopics(e.roomId,[e.topicId])).get(e.topicId)}))()}getLatestMessageId(){var e=this;return g((function*(){var t,r;return null===(t=yield e.getTopic())||void 0===t||null===(r=t.lastMessage)||void 0===r?void 0:r.id}))()}isLatestItemLoaded(){var e=this;return g((function*(){var t=yield e.getLatestMessageId();return!t||e.has(t)}))()}}function T(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function P(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){T(s,i,o,n,a,"next",e)}function a(e){T(s,i,o,n,a,"throw",e)}n(void 0)}))}}function I(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class k{constructor(e,t){this.room=e,this.tracker=t,I(this,"historyWindows",new a),I(this,"traverseLock",!1),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.updateTraverseLock(this.room),this.room.defaultTopic&&this.createHistoryWindowForTopic(this.room.defaultTopic)}getMessagesWindow(e){var t=this;return P((function*(){if(!t.historyWindows.get(e)){var r=(yield t.tracker.rooms.getTopics(t.room.id,[e])).get(e);r&&t.createHistoryWindowForTopic(r)}return t.historyWindows.get(e)}))()}handleRoomUpdated(e){var t=this;return P((function*(){if(t.room.id===e.room.id)for(var[,r]of(t.room=e.room,t.updateTraverseLock(e.room),e.room.defaultTopic&&t.createHistoryWindowForTopic(e.room.defaultTopic),Array.from(t.historyWindows.items)))yield r.setTraverseLock(t.traverseLock)}))()}handleNewTopic(e){this.room.id===e.roomId&&this.createHistoryWindowForTopic(e.topic)}handleTopicDeleted(e){this.room.id===e.location.roomId&&this.historyWindows.delete(e.location.topicId)}createHistoryWindowForTopic(e){if(!this.historyWindows.has(e.id)){var t=new S(this.room.id,e.id,this.tracker);if(t.setTraverseLock(this.traverseLock),this.historyWindows.set([e.id,t]),e.refMessage){var r=this.historyWindows.get(e.refMessage.location.topicId);null==r||r._updateMessageReference(e)}}}updateTraverseLock(e){this.traverseLock="Ephemeral"===e.history.mode}}function O(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function R(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?O(Object(r),!0).forEach((function(t){M(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):O(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function E(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function j(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){E(s,i,o,n,a,"next",e)}function a(e){E(s,i,o,n,a,"throw",e)}n(void 0)}))}}function M(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class L{constructor(e){this.tracker=e,M(this,"roomHistories",new a),M(this,"followedTopics",new a),M(this,"followedTopicsPromises",new m),M(this,"deferredSession",new u),this.tracker.client.on("Session",(e=>this.handleSession(e))),this.tracker.client.on("RoomJoined",(e=>this.handleRoomJoin(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("FollowedTopicUpdated",(e=>this.handleFollowedTopicUpdated(e))),this.tracker.client.on("TopicFollowed",(e=>this.handleTopicFollowed(e))),this.tracker.client.on("TopicUnfollowed",(e=>this.handleTopicUnfollowed(e))),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomLeft(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e)))}getRoomHistory(e){var t=this;return j((function*(){return yield t.deferredSession.promise,t.roomHistories.get(e)}))()}cacheSpaceFollowedTopics(e){var t=this;return j((function*(){if(e&&!(yield t.tracker.spaces.get()).has(e))throw new Error("You are not in space ".concat(e));var r=(yield t.tracker.rooms.get()).findBy("spaceId",e).items.map((e=>e.id));if(r.length){var i=t.tracker.client.send("GetFollowedTopics",{location:{spaceId:e}});r.forEach((e=>t.followedTopicsPromises.register(i,e)));var o=yield i;if(o.error)throw o.error;t.setFollowedTopicsArray(r,o.data.followedTopics)}}))()}getRoomFollowedTopics(e){var t=this;return j((function*(){if((yield t.tracker.rooms.get()).has(e))return t.followedTopics.has(e)||(t.followedTopicsPromises.notExist(e)&&t.followedTopicsPromises.registerByFunction(j((function*(){var r=yield t.tracker.client.send("GetFollowedTopics",{location:{roomId:e}});if(r.error)throw r.error;t.setFollowedTopicsArray([e],r.data.followedTopics)})),e),yield t.followedTopicsPromises.get(e)),t.followedTopics.get(e)}))()}ackRoomFollowedTopics(e){var t=this;return j((function*(){var r=yield t.getRoomFollowedTopics(e);if(r)for(var i of r.items)i.missed&&(yield t.tracker.client.send("Ack",{location:i.location}))}))()}calculateRoomMissedMessages(e){var t=this;return j((function*(){var r=yield t.getRoomFollowedTopics(e);if(r)return r.items.reduce(((e,t)=>{var r;return e+(null!==(r=t.missed)&&void 0!==r?r:0)}),0)}))()}_deleteByTopicIds(e){for(var t,r=arguments.length,i=new Array(r>1?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];null===(t=this.followedTopics.get(e))||void 0===t||t.delete(...i)}createHistoryForNewRoom(e){this.roomHistories.set([e.id,new k(e,this.tracker)])}handleNewMessage(e){this.updateLocallyFollowedTopicOnNewMessage(e)}handleFollowedTopicUpdated(e){var t;null===(t=this.followedTopics.get(e.followedTopic.location.roomId))||void 0===t||t.set(e.followedTopic)}handleTopicFollowed(e){this.setFollowedTopicsArray([e.followedTopic.location.roomId],[e.followedTopic])}handleTopicUnfollowed(e){var t;null===(t=this.followedTopics.get(e.location.roomId))||void 0===t||t.delete(e.location.topicId)}handleRoomDeleted(e){this.roomHistories.delete(e.id),this.clearRoomFollowedTopicsStructures(e.id)}handleRoomJoin(e){this.createHistoryForNewRoom(e.room),this.clearRoomFollowedTopicsStructures(e.room.id)}handleRoomLeft(e){this.roomHistories.delete(e.id),this.clearRoomFollowedTopicsStructures(e.id)}handleNewTopic(e){var t=this;return j((function*(){if(t.followedTopics.has(e.roomId)){var r=(yield t.tracker.client.send("GetFollowedTopics",{location:{roomId:e.roomId,topicId:e.topic.id}})).data.followedTopics[0];r&&t.followedTopics.get(e.roomId).set(r)}}))()}handleTopicDeleted(e){var t;null===(t=this.followedTopics.get(e.location.roomId))||void 0===t||t.delete(e.location.topicId)}handleSession(e){this.followedTopics.deleteAll(),this.followedTopicsPromises.forgetAll(),this.roomHistories.deleteAll(),e.state.rooms.forEach((e=>this.createHistoryForNewRoom(e))),this.deferredSession.resolve()}updateLocallyFollowedTopicOnNewMessage(e){var t,r,i=this.followedTopics.get(e.message.location.roomId),o=null==i?void 0:i.get(e.message.location.topicId);i&&o&&"Ephemeral"!==e.message.type&&(r=e.message.author.user.id===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)?{missed:0,lastAckMessageId:e.message.id}:{missed:null===o.missed?null:o.missed+1},i.set(R(R({},o),r)))}setFollowedTopicsArray(e,t){var r={};t.forEach((e=>{var t,i;null!==(i=r[t=e.location.roomId])&&void 0!==i||(r[t]=[]),r[e.location.roomId].push(e)})),e.forEach((e=>{this.followedTopics.has(e)||this.followedTopics.set([e,new d((e=>e.location.topicId))]),r[e]&&this.followedTopics.get(e).set(...r[e])}))}clearRoomFollowedTopicsStructures(e){this.followedTopics.delete(e),this.followedTopicsPromises.forget(e)}}function A(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function D(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?A(Object(r),!0).forEach((function(t){N(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):A(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function U(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){U(s,i,o,n,a,"next",e)}function a(e){U(s,i,o,n,a,"throw",e)}n(void 0)}))}}function N(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class F{constructor(e){this.tracker=e,N(this,"messages",void 0),N(this,"list",new d("id")),N(this,"topics",new a),N(this,"members",new a),N(this,"deferredSession",new u),N(this,"membersPromises",new m),N(this,"topicsPromises",new m),this.messages=new L(e),this.tracker.client.on("NewMessage",(e=>this.handleNewMessage(e))),this.tracker.client.on("NewTopic",(e=>this.handleNewTopic(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.tracker.client.on("RoomJoined",(e=>this.handleRoomJoined(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomLeft(e))),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("TopicUpdated",(e=>this.handleTopicUpdated(e))),this.tracker.client.on("RoomMemberJoined",(e=>this.handleRoomMemberJoined(e))),this.tracker.client.on("RoomMemberLeft",(e=>this.handleRoomMemberLeft(e))),this.tracker.client.on("RoomMembers",(e=>this.handleRoomMembers(e))),this.tracker.client.on("RoomMemberUpdated",(e=>this.handleRoomMemberUpdated(e))),this.tracker.client.on("SpaceMemberLeft",(e=>this.handleSpaceMemberLeft(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("UserUpdated",(e=>this.handleUserUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}getMembers(e){var t=this;return x((function*(){return t.membersPromises.notExist(e)&&t.membersPromises.registerByFunction(x((function*(){var r=yield t.tracker.client.send("GetRoomMembers",{id:e});if(r.error)throw r.error;t.handleRoomMembers(r.data)})),e),yield t.membersPromises.get(e),t.members.get(e)}))()}getMe(e){var t=this;return x((function*(){var r=(yield t.tracker.getMe()).id;if(t.list.has(e)){var i=yield t.getMembers(e);return null==i?void 0:i.items.find((e=>{var t,i;return(null!==(t=null===(i=e.user)||void 0===i?void 0:i.id)&&void 0!==t?t:e.spaceMember.user.id)===r}))}}))()}get(){var e=this;return x((function*(){return yield e.deferredSession.promise,e.list}))()}getTopics(e,t){var r=this;return x((function*(){if(yield r.deferredSession.promise,null!=t&&t.length){var i=t.filter((t=>{var i;return!(null!==(i=r.topics.get(e))&&void 0!==i&&i.has(t)||r.topicsPromises.has(e+t))}));if(i.length){var o=r.tracker.client.send("GetTopics",{roomId:e,topicIds:i}).then((e=>{var t;return null===(t=r.topics.get(e.data.location.roomId))||void 0===t?void 0:t.set(...e.data.topics)}));i.forEach((t=>r.topicsPromises.register(o,e+t)))}for(var s of t)yield r.topicsPromises.get(e+s)}return r.topics.get(e)}))()}deleteRoom(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of(this.list.delete(...t),this.members.delete(...t),this.membersPromises.forget(...t),t)){var o,s,n=null!==(o=null===(s=this.topics.get(i))||void 0===s?void 0:s.items.map((e=>e.id)))&&void 0!==o?o:[];this.messages._deleteByTopicIds(i,...n)}this.topics.delete(...t)}deleteRoomsBySpaceId(e){this.deleteRoom(...this.list.findBy("spaceId",e).items.map((e=>e.id)))}handleSpaceMemberUpdated(e){for(var t of this.list.findBy("spaceId",e.spaceId).items){var r=this.members.get(t.id);if(r&&r.has(e.userId)){var i=r.get(e.userId),o=i.spaceMember.user;i.spaceMember=D(D({},e.member),{},{user:o}),r.set(i)}}}handleSpaceMemberLeft(e){this.list.findBy("spaceId",e.spaceId).items.forEach((t=>{var r;return null===(r=this.members.get(t.id))||void 0===r?void 0:r.delete(e.userId)}))}handleRoomMemberUpdated(e){var t,r;if(this.members.has(e.roomId)){var i=this.members.get(e.roomId),o=i.get(e.userId),s=e.member,n=null!==(t=null===(r=o.spaceMember)||void 0===r?void 0:r.user)&&void 0!==t?t:o.user;s.spaceMember?s.spaceMember.user=n:s.user=n,i.set(s)}}handleSpaceDeleted(e){this.deleteRoomsBySpaceId(e.id)}handleTopicDeleted(e){var t;this.topics.get(e.location.roomId).delete(e.location.topicId);var r=this.list.get(e.location.roomId);(null===(t=r.defaultTopic)||void 0===t?void 0:t.id)===e.location.topicId&&this.list.set(D(D({},r),{},{defaultTopic:null}))}handleNewTopic(e){this.addJoinedRoomTopics(e.roomId,e.topic)}addJoinedRoomTopics(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];this.topics.has(e)?this.topics.get(e).set(...r):this.topics.set([e,new d("id",r)])}handleRoomJoined(e){this.addJoinedRooms(e.room)}handleRoomUpdated(e){this.list.has(e.room.id)&&this.list.set(e.room)}handleRoomDeleted(e){this.deleteRoom(e.id)}handleTopicUpdated(e){var t,r=this.list.get(e.location.roomId);null!==(t=this.topics.get(e.location.roomId))&&void 0!==t&&t.has(e.topic.id)&&this.topics.get(e.location.roomId).set(e.topic),r.defaultTopic.id===e.topic.id&&(r.defaultTopic=e.topic,this.list.set(r))}addJoinedRooms(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var i of t)i.defaultTopic&&this.addJoinedRoomTopics(i.id,i.defaultTopic),"Pm"===i.type&&i.recipients&&(this.handleRoomMembers({id:i.id,members:i.recipients.map((e=>({user:e,spaceMember:null,roles:null})))}),this.membersPromises.register(Promise.resolve(),i.id));this.list.set(...t)}handleRoomLeft(e){this.deleteRoom(e.id)}handleRoomMemberJoined(e){this.members.has(e.roomId)&&this.members.get(e.roomId).set(e.member)}handleRoomMemberLeft(e){this.members.has(e.roomId)&&this.members.get(e.roomId).delete(e.userId)}handleRoomMembers(e){this.members.has(e.id)||this.members.set([e.id,new d((e=>{var t,r;return null!==(t=null===(r=e.user)||void 0===r?void 0:r.id)&&void 0!==t?t:e.spaceMember.user.id}),e.members)])}handleSession(e){this.list.deleteAll(),this.topics.deleteAll(),this.topicsPromises.forgetAll(),this.members.deleteAll(),this.membersPromises.forgetAll(),this.addJoinedRooms(...e.state.rooms),this.deferredSession.resolve()}handleUserUpdated(e){this.members.items.forEach((t=>{var r=t.get(e.user.id);if(r){var i=D({},r);r.user?i.user=e.user:i.spaceMember.user=e.user,t.set(i)}}));var t=[];this.list.items.forEach((r=>{var i;null!==(i=r.recipients)&&void 0!==i&&i.some((t=>t.id===e.user.id))&&(r.recipients=r.recipients.map((t=>t.id===e.user.id?e.user:t)),t.push(D({},r)))})),this.list.set(...t)}handleNewMessage(e){var t,r=this.topics.get(e.message.location.roomId),i=null==r?void 0:r.get(e.message.location.topicId);if(i){var o=D(D({},i),{},{messageCount:i.messageCount+1,lastMessage:e.message});r.set(o);var s=this.list.get(e.message.location.roomId);(null===(t=s.defaultTopic)||void 0===t?void 0:t.id)===e.message.location.topicId&&this.list.set(D(D({},s),{},{defaultTopic:o}))}}}function C(e){var t,r;return null!==(t=e.user)&&void 0!==t?t:null===(r=e.spaceMember)||void 0===r?void 0:r.user}function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function _(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){W(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function J(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function H(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){J(s,i,o,n,a,"next",e)}function a(e){J(s,i,o,n,a,"throw",e)}n(void 0)}))}}function W(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class G{constructor(e){this.tracker=e,W(this,"list",new d("id")),W(this,"roles",new a),W(this,"rooms",new a),W(this,"roomIdToSpaceId",new a),W(this,"members",new a),W(this,"deferredSession",new u),W(this,"roomsPromises",new m),W(this,"membersPromises",new m),this.tracker.client.on("NewRoom",(e=>this.handleNewRoom(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomUpdated",(e=>this.handleRoomUpdated(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceUpdated",(e=>this.handleSpaceUpdated(e))),this.tracker.client.on("SpaceJoined",(e=>this.handleSpaceJoined(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceMemberJoined",(e=>this.handleSpaceMemberJoined(e))),this.tracker.client.on("SpaceMemberLeft",(e=>this.handleSpaceMemberLeft(e))),this.tracker.client.on("SpaceMembers",(e=>this.handleSpaceMembers(e))),this.tracker.client.on("SpaceRooms",(e=>this.handleSpaceRooms(e))),this.tracker.client.on("RoomSummaryUpdated",(e=>this.handleRoomSummaryUpdated(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("UserUpdated",(e=>this.handleUserUpdated(e))),this.tracker.client.on("NewRole",(e=>this.handleNewRole(e))),this.tracker.client.on("RoleDeleted",(e=>this.handleRoleDeleted(e))),this.tracker.client.on("RoleUpdated",(e=>this.handleRoleUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}get(){var e=this;return H((function*(){return yield e.deferredSession.promise,e.list}))()}getRoles(e){var t=this;return H((function*(){return yield t.deferredSession.promise,t.roles.get(e)}))()}getRooms(e){var t=this;return H((function*(){return t.roomsPromises.notExist(e)&&t.roomsPromises.registerByFunction(H((function*(){var r=yield t.tracker.client.send("GetSpaceRooms",{id:e});if(r.error)throw r.error;t.handleSpaceRooms(r.data)})),e),yield t.roomsPromises.get(e),t.rooms.get(e)}))()}getMembers(e){var t=this;return H((function*(){return t.membersPromises.notExist(e)&&t.membersPromises.registerByFunction(H((function*(){var r=yield t.tracker.client.send("GetSpaceMembers",{id:e});if(r.error)throw r.error;t.handleSpaceMembers(r.data)})),e),yield t.membersPromises.get(e),t.members.get(e)}))()}getMe(e){var t=this;return H((function*(){var r=(yield t.tracker.getMe()).id;if(t.list.has(e)){var i=yield t.getMembers(e);return null==i?void 0:i.items.find((e=>e.user.id===r))}}))()}handleNewRole(e){var t=this.roles.get(e.spaceId);t.set(e.role),this.list.get(e.spaceId).roles=t.items}handleNewRoom(e){var t;null===(t=this.rooms.get(e.spaceId))||void 0===t||t.set(e.summary),this.roomIdToSpaceId.set([e.summary.id,e.spaceId])}handleRoomUpdated(e){if(e.room.spaceId&&this.rooms.has(e.room.spaceId)){var t=this.rooms.get(e.room.spaceId);t.set(_(_({},t.get(e.room.id)),{},{name:e.room.name,description:e.room.description}))}}handleRoomDeleted(e){var t=this;return H((function*(){var r,i=t.roomIdToSpaceId.get(e.id);if(t.roomIdToSpaceId.delete(e.id),i){var o=t.list.get(i),s=!1;null===(r=t.rooms.get(i))||void 0===r||r.delete(e.id),o.systemRoom===e.id&&(o.systemRoom=null,s=!0),o.defaultRooms.includes(e.id)&&(o.defaultRooms=o.defaultRooms.filter((t=>t!==e.id)),s=!0),s&&t.list.set(o)}}))()}handleRoleDeleted(e){var t=this.roles.get(e.spaceId);t.delete(e.id),this.list.get(e.spaceId).roles=t.items}handleSpaceUpdated(e){this.list.set(e.space)}handleSpaceDeleted(e){var t,r,i=null!==(t=null===(r=this.rooms.get(e.id))||void 0===r?void 0:r.items.map((e=>e.id)))&&void 0!==t?t:[];this.roomIdToSpaceId.delete(...i),this.roles.delete(e.id),this.members.delete(e.id),this.membersPromises.forget(e.id),this.rooms.delete(e.id),this.roomsPromises.forget(e.id),this.list.delete(e.id)}handleSpaceJoined(e){this.addJoinedSpaces(e.space)}addJoinedSpaces(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.roles.set(...t.map((e=>[e.id,new d("id",e.roles)]))),this.list.set(...t)}handleSpaceMemberJoined(e){this.members.has(e.spaceId)&&this.members.get(e.spaceId).set(e.member)}handleSpaceMemberLeft(e){this.members.has(e.spaceId)&&this.members.get(e.spaceId).delete(e.userId)}handleSpaceMembers(e){this.members.has(e.id)||this.members.set([e.id,new d((e=>null==e?void 0:e.user.id),e.members)])}handleSpaceRooms(e){this.rooms.has(e.id)||(this.rooms.set([e.id,new d("id",e.summaries)]),e.summaries.forEach((t=>this.roomIdToSpaceId.set([t.id,e.id]))))}handleRoomSummaryUpdated(e){var t=this;return H((function*(){var r=t.roomIdToSpaceId.get(e.summary.id),i=t.roomsPromises.get(r);if(r&&i){yield i;var o,s=t.rooms.get(r),n=s.get(e.summary.id);o=n?_(_({},n),e.summary):e.summary,s.set(o)}}))()}handleSpaceMemberUpdated(e){if(this.members.has(e.spaceId)){var t=this.members.get(e.spaceId),r=t.get(e.userId);t.set(_(_({},e.member),{},{user:r.user}))}}handleRoleUpdated(e){var t=this.roles.get(e.spaceId),r=t.get(e.role.id),i=e.role,o=[i];r.priority!==i.priority&&o.push(...function(e,t,r){var i=r.priority-t.priority>0,o=!i,s=[];return e.forEach((e=>{e.id!==r.id&&(i&&t.priority<=e.priority&&(e.priority--,s.push(e)),o&&r.priority<=e.priority&&(e.priority++,s.push(e)))})),s}(t.items,r,i)),this.roles.get(e.spaceId).set(...o)}handleSession(e){this.list.deleteAll(),this.roles.deleteAll(),this.rooms.deleteAll(),this.roomsPromises.forgetAll(),this.members.deleteAll(),this.membersPromises.forgetAll(),this.roomIdToSpaceId.deleteAll(),this.addJoinedSpaces(...e.state.spaces),this.deferredSession.resolve()}handleUserUpdated(e){this.members.items.forEach((t=>{var r=t.get(e.user.id);r&&t.set(_(_({},r),{},{user:e.user}))}))}}function Q(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var V=function(e){return e[e.Global=0]="Global",e[e.Space=1]="Space",e[e.Room=2]="Room",e[e.Topic=3]="Topic",e}({});class z{constructor(){Q(this,"value",void 0),Q(this,"maxLayer",void 0)}}class q{static getNames(){return Object.keys(this.list)}static getByName(e){return this.list[e]}static canBeDefinedOnLayer(e,t){if(!this.getByName(e))throw new Error("Invalid permission name: ".concat(e));return t<=this.getByName(e).maxLayer}}function K(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Y(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){K(s,i,o,n,a,"next",e)}function a(e){K(s,i,o,n,a,"throw",e)}n(void 0)}))}}function $(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}Q(q,"list",{Root:{value:1,maxLayer:V.Room},CreateSpaces:{value:2,maxLayer:V.Global},ManageSpace:{value:4,maxLayer:V.Space},ManageSpaceRoles:{value:8,maxLayer:V.Space},ManageRoom:{value:16,maxLayer:V.Room},CreateTopics:{value:32,maxLayer:V.Room},ManageTopic:{value:64,maxLayer:V.Topic},ManageSpaceMembers:{value:128,maxLayer:V.Space},ManageRoomMembers:{value:256,maxLayer:V.Room},CreateMessages:{value:512,maxLayer:V.Topic},ManagePermissions:{value:1024,maxLayer:V.Topic},CreateSpaceRooms:{value:2048,maxLayer:V.Space},ManageSpaceRooms:{value:4096,maxLayer:V.Space},CreateEmoticons:{value:8192,maxLayer:V.Space},ManageEmoticon:{value:16384,maxLayer:V.Space},ManageBan:{value:32768,maxLayer:V.Room},Kick:{value:65536,maxLayer:V.Room},ChangeOwnNick:{value:1<<17,maxLayer:V.Space}});var X=(e,t)=>[e.spaceId,e.roomId,e.topicId,null==t?void 0:t.type,null==t?void 0:t.userId,null==t?void 0:t.roleId].filter(Boolean).join("/"),Z=e=>X(e.location,e.target);class ee extends i{constructor(e){super(),this.tracker=e,$(this,"overwrites",new a),$(this,"overwritesPromises",new m),this.tracker.client.on("PermissionOverwrites",(e=>this.handlePermissionOverwrites(e))),this.tracker.client.on("PermissionOverwritesUpdated",(e=>this.handlePermissionOverwrites(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("SpaceLeft",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("RoomDeleted",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("RoomLeft",(e=>this.handleRoomDeleted(e))),this.tracker.client.on("TopicDeleted",(e=>this.handleTopicDeleted(e))),this.tracker.client.on("RoleDeleted",(e=>this.handleRoleDeleted(e))),this.tracker.client.on("SpaceMemberUpdated",(e=>this.handleSpaceMemberUpdated(e))),this.tracker.client.on("RoomMemberUpdated",(e=>this.handleRoomMemberUpdated(e))),this.tracker.client.on("Session",(e=>this.handleSession(e)))}getOverwrites(e,t){var r=this;return Y((function*(){r.validateLocation(e);var i=X(e,t);return r.overwritesPromises.notExist(i)&&r.overwritesPromises.registerByFunction(Y((function*(){var i=yield r.tracker.client.send("GetPermissionOverwrites",{location:e,target:t});if(i.error)throw i.error;r.handlePermissionOverwrites(i.data)})),i),yield r.overwritesPromises.get(i),r.overwrites.get(i)}))()}on(e,t){return super.on(e,t)}check(e,t){var r=this;return Y((function*(){if(!e.length)throw new Error("Permission names array cannot be empty");var i=yield r.calculatePermissions(t),o=[];return e.forEach((e=>{~i&q.getByName(e).value&&o.push(e)})),{ok:0===o.length,hasAll:0===o.length,hasAny:o.length<e.length,missing:o}}))()}calculatePermissions(e){var t=this;return Y((function*(){var r,i,o,s,n;t.validateLocation(e);var a=(yield t.tracker.getMe()).id,[l,c]=yield t.fetchMembersOrFail(e),d=[...null!==(r=null==l?void 0:l.roles)&&void 0!==r?r:[],...null!==(i=null==c?void 0:c.roles)&&void 0!==i?i:[]],h=[t.getOverwrites({},{type:"User",userId:a}).then((e=>e.overwrites))];if(e.spaceId&&null!==(o=yield t.tracker.spaces.get())&&void 0!==o&&o.has(e.spaceId)){var u={spaceId:e.spaceId};h.push(t.collectRoleOverwrites(u,d)),h.push(t.getOverwrites(u,{type:"User",userId:a}).then((e=>e.overwrites)))}if(e.roomId&&null!==(s=yield t.tracker.rooms.get())&&void 0!==s&&s.has(e.roomId)){var m={spaceId:e.spaceId,roomId:e.roomId};d.length&&h.push(t.collectRoleOverwrites(m,d)),h.push(t.getOverwrites(m,{type:"User",userId:a}).then((e=>e.overwrites)))}return e.topicId&&null!==(n=yield t.tracker.rooms.getTopics(e.roomId))&&void 0!==n&&n.has(e.topicId)&&(d.length&&h.push(t.collectRoleOverwrites(e,d)),h.push(t.getOverwrites(e,{type:"User",userId:a}).then((e=>e.overwrites)))),t.resolveOverwritesHierarchy(yield Promise.all(h))}))()}handlePermissionOverwrites(e){this.overwrites.set([Z(e),e]),this.emit("change")}handleSpaceDeleted(e){var t=this.deleteOverwritesByIdPrefix(X({spaceId:e.id}));this.overwritesPromises.forget(...t)}handleRoomDeleted(e){var t=this;return Y((function*(){var r=(yield t.tracker.rooms.get()).get(e.id);if(r){var i=t.deleteOverwritesByIdPrefix(X({spaceId:r.spaceId,roomId:r.id}));t.overwritesPromises.forget(...i)}}))()}handleTopicDeleted(e){var t=this.deleteOverwritesByIdPrefix(X(e.location));this.overwritesPromises.forget(...t)}handleRoleDeleted(e){var t=this.deleteOverwritesByIdPrefix(X({spaceId:e.spaceId},{type:"Role",roleId:e.id}));this.overwritesPromises.forget(...t)}handleSpaceMemberUpdated(e){var t;e.userId===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)&&this.emit("change")}handleRoomMemberUpdated(e){var t;e.userId===(null===(t=this.tracker.me)||void 0===t?void 0:t.id)&&this.emit("change")}deleteOverwritesByIdPrefix(e){var t=[];return this.overwrites.items.forEach((r=>{var i=Z(r);i.startsWith(e)&&(t.push(i),this.overwrites.delete(i))})),t}collectRoleOverwrites(e,t){var r=this;return Y((function*(){var i=yield Promise.all(t.map((t=>r.getOverwrites(e,{type:"Role",roleId:t}))));return r.resolveOverwritesFromRolesByOrder(e.spaceId,i)}))()}resolveOverwritesFromRolesByOrder(e,t){var r=this;return Y((function*(){var i=0,o=0,s=yield r.tracker.spaces.getRoles(e),n=t.sort(((e,t)=>s.get(e.target.roleId).priority-s.get(t.target.roleId).priority)),a=t.reduce(((e,t)=>{var r,i,o,s;return Math.max(e,null!==(r=null===(i=t.overwrites.allow)||void 0===i?void 0:i.toString(2).length)&&void 0!==r?r:0,null!==(o=null===(s=t.overwrites.deny)||void 0===s?void 0:s.toString(2).length)&&void 0!==o?o:0)}),0);return n.forEach((e=>{for(var t,r,s,n,l=e.overwrites,c=null!==(t=null===(r=l.deny)||void 0===r?void 0:r.toString(2).split("").reverse().join(""))&&void 0!==t?t:"",d=null!==(s=null===(n=l.allow)||void 0===n?void 0:n.toString(2).split("").reverse().join(""))&&void 0!==s?s:"",h=0;h<a;h++){var u,m,p=parseInt(null!==(u=c[h])&&void 0!==u?u:"0"),v=parseInt(null!==(m=d[h])&&void 0!==m?m:"0");p&&(o|=1<<h),v&&(i|=1<<h)}})),{allow:i,deny:o}}))()}resolveOverwritesHierarchy(e){var t=0;for(var r of e){if(r.allow&q.getByName("Root").value)return this.getRootAccessValue();t=t&~r.deny|r.allow}return t}getRootAccessValue(){var e=0;for(var t of q.getNames())e|=q.getByName(t).value;return e}fetchMembersOrFail(e){var t=this;return Y((function*(){var r=yield Promise.all([e.spaceId?t.tracker.spaces.getMe(e.spaceId):null,e.roomId?t.tracker.rooms.getMe(e.roomId):null]),i=e.spaceId&&!r[0],o=e.roomId&&!r[1];if(i||o){var s=i?"space (".concat(e.spaceId,")"):"room (".concat(e.roomId,")");throw new Error("Attempting to calculate permissions for a ".concat(s," that the user does not belong to"))}return r}))()}validateLocation(e){if(e.topicId&&!e.roomId)throw new Error("Corrupted arguments hierarchy")}handleSession(e){this.overwrites.deleteAll(),this.overwritesPromises.forgetAll()}}function te(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function re(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){te(s,i,o,n,a,"next",e)}function a(e){te(s,i,o,n,a,"throw",e)}n(void 0)}))}}function ie(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var oe="global";class se{constructor(e){this.tracker=e,ie(this,"list",new a),ie(this,"emoticonsPromises",new m),this.tracker.client.on("Emoticons",(e=>this.handleEmoticons(e))),this.tracker.client.on("NewEmoticon",(e=>this.handleNewEmoticon(e))),this.tracker.client.on("EmoticonDeleted",(e=>this.handleEmoticonDeleted(e))),this.tracker.client.on("SpaceDeleted",(e=>this.handleSpaceDeleted(e))),this.tracker.client.on("Session",(()=>this.handleSession()))}get(e){var t=this;return re((function*(){var r=null!=e?e:oe;return t.emoticonsPromises.notExist(r)&&t.emoticonsPromises.registerByFunction(re((function*(){var r=yield t.tracker.client.send("GetEmoticons",{spaceId:e});if(r.error)throw r.error;t.handleEmoticons(r.data)})),r),yield t.emoticonsPromises.get(r),t.list.get(r)}))()}handleEmoticons(e){var t,r=null!==(t=e.location.spaceId)&&void 0!==t?t:oe;this.list.has(r)||this.list.set([r,new d("id")]),this.list.get(r).set(...e.emoticons)}handleNewEmoticon(e){var t,r=this.list.get(null!==(t=e.emoticon.spaceId)&&void 0!==t?t:oe);null==r||r.set(e.emoticon)}handleEmoticonDeleted(e){var t,r=this.list.get(null!==(t=e.spaceId)&&void 0!==t?t:oe);null==r||r.delete(e.emoticonId)}handleSpaceDeleted(e){this.list.delete(e.id)}handleSession(){this.list.deleteAll(),this.emoticonsPromises.forgetAll()}}function ne(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function ae(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class le{constructor(e){this.tracker=e,ae(this,"onlineStatus",new i),ae(this,"users",new d("id")),e.client.on("UserUpdated",(e=>this.handleUsers([e.user]))),e.client.on("RoomMemberJoined",(e=>this.handleMembers([e.member]))),e.client.on("SpaceMemberJoined",(e=>this.handleMembers([e.member]))),e.client.on("SpaceMembers",(e=>this.handleMembers(e.members))),e.client.on("RoomMembers",(e=>this.handleMembers(e.members))),e.client.on("Messages",(e=>this.handleUsers(e.messages.map((e=>e.author.user))))),e.client.on("NewMessage",(e=>this.handleUsers([e.message.author.user]))),e.client.on("Session",(e=>this.handleSession(e)))}getAvailable(){var e,t=this;return(e=function*(){return t.users},function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ne(s,i,o,n,a,"next",e)}function a(e){ne(s,i,o,n,a,"throw",e)}n(void 0)}))})()}handleMembers(e){this.handleUsers(e.map(C))}handleSession(e){this.users.deleteAll(),this.handleUsers([e.user])}handleUsers(e){e.forEach((e=>{var t=this.users.get(e.id);t&&t.online!==e.online&&this.onlineStatus.emit("change",e)})),this.users.set(...e)}}function ce(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function de(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ce(s,i,o,n,a,"next",e)}function a(e){ce(s,i,o,n,a,"throw",e)}n(void 0)}))}}function he(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ue=(e,t)=>"".concat(e,"-").concat(t),me=e=>ue(e.refUser.id,e.type);class pe{constructor(e){this.tracker=e,he(this,"relationships",new d(me)),he(this,"promises",new m),this.tracker.client.on("Relationships",(e=>this.handleRelationships(e))),this.tracker.client.on("NewRelationship",(e=>this.handleNewRelationship(e))),this.tracker.client.on("RelationshipDeleted",(e=>this.handleRelationshipDeleted(e))),this.tracker.client.on("Session",(()=>this.handleSession()))}get(){var e=this;return de((function*(){return e.promises.notExist("all")&&e.promises.registerByFunction(de((function*(){var t=yield e.tracker.client.send("GetRelationships",{});if(t.error)throw t.error})),"all"),yield e.promises.get("all"),e.relationships}))()}exists(e,t){var r=this;return de((function*(){return yield r.get(),r.relationships.has(ue(e,t))}))()}handleRelationships(e){this.relationships.deleteAll(),e.relationships.forEach((e=>{this.relationships.set(e)}))}handleNewRelationship(e){this.promises.has("all")&&this.relationships.set(e.relationship)}handleRelationshipDeleted(e){this.promises.has("all")&&this.relationships.delete(me(e.relationship))}handleSession(){this.promises.forgetAll(),this.relationships.deleteAll()}}function ve(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function fe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class ge{constructor(e){this.client=e,fe(this,"permissions",new ee(this)),fe(this,"rooms",new F(this)),fe(this,"spaces",new G(this)),fe(this,"emoticons",new se(this)),fe(this,"users",new le(this)),fe(this,"relationships",new pe(this)),fe(this,"_me",null),fe(this,"deferredSession",new u),this.client.on("Session",(e=>this.handleSession(e)))}get me(){return this._me}getMe(){var e,t=this;return(e=function*(){return yield t.deferredSession.promise,t._me},function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ve(s,i,o,n,a,"next",e)}function a(e){ve(s,i,o,n,a,"throw",e)}n(void 0)}))})()}handleSession(e){this._me=e.user,this.deferredSession.resolve()}}function ye(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function we(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){ye(s,i,o,n,a,"next",e)}function a(e){ye(s,i,o,n,a,"throw",e)}n(void 0)}))}}function be(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Se=function(e){return e.connect="connect",e.disconnect="disconnect",e.message="message",e.error="error",e}(Se||{});class Te extends s{constructor(e){var t;super(),this.options=e,be(this,"Event",Se),be(this,"state",void 0),be(this,"ws",null),be(this,"sendQueue",[]),be(this,"connectingTimeoutId",void 0),be(this,"authenticated",void 0),be(this,"authenticatedResolvers",void 0),(null===(t=this.options.stateTracking)||void 0===t||t)&&(this.state=new ge(this))}connect(){var e=this;return we((function*(){var t,r,i=new URLSearchParams(null!==(t=e.options.queryParams)&&void 0!==t?t:{});return i.set("token",e.options.token),e.ws=new WebSocket("".concat(e.options.url,"?").concat(i)),e.ws.onclose=t=>e.onClose(t),e.ws.onmessage=t=>e.onMessage(t),e.connectingTimeoutId=setTimeout((()=>e.triggerConnectionTimeout()),null!==(r=e.options.connectingTimeoutMs)&&void 0!==r?r:1e4),e.authenticated=!1,new Promise((function(){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];return e.authenticatedResolvers=r}))}))()}disconnect(){var e;this.sendQueue=[],null===(e=this.ws)||void 0===e||e.close(),this.ws=null}send(e,t){var r=this;return we((function*(){var i=r.createEnvelope(e,t),o=r.createPromiseFromCommandEnvelope(i);return r.isPendingReadyWsState()?(r.sendQueue.push(i),o):(r.sendEnvelope(i),o)}))()}sendEnvelope(e){var t,r;this.isReadyToSendWsState()?this.ws.send(JSON.stringify(e)):this.handleEnvelopeSendError(e,new Error("Cannot send; invalid websocket state=".concat(null!==(t=null===(r=this.ws)||void 0===r?void 0:r.readyState)&&void 0!==t?t:"[no connection]")))}onMessage(e){var t=JSON.parse(e.data);if(this.handleIncomingEnvelope(t),this.emit(t.type,t.data),this.emit(this.Event.message,t),!this.authenticated){var r="Bye"!==t.type;this.authenticated=r,r?(this.authenticatedResolvers[0](),this.emit(this.Event.connect),this.sendFromQueue()):this.authenticatedResolvers[1](t.data)}}onClose(e){clearTimeout(this.connectingTimeoutId);var t=1e3!==e.code;t&&this.connect(),this.emit(this.Event.disconnect,t)}sendFromQueue(){var e=this,t=0,r=function(r){var i,o=e.sendQueue[r];setTimeout((()=>e.sendEnvelope(o)),t),t+=null!==(i=e.options.awaitQueueSendDelayMs)&&void 0!==i?i:500};for(var i in this.sendQueue)r(i);this.sendQueue=[],clearTimeout(this.connectingTimeoutId)}triggerConnectionTimeout(){this.disconnect(),this.emit(this.Event.error,new Error("Connection timeout"))}isPendingReadyWsState(){return this.ws&&this.ws.readyState===this.ws.CONNECTING||!this.authenticated}isReadyToSendWsState(){return this.ws&&this.ws.readyState===this.ws.OPEN&&this.authenticated}}function Pe(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Ie(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){Pe(s,i,o,n,a,"next",e)}function a(e){Pe(s,i,o,n,a,"throw",e)}n(void 0)}))}}function ke(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Oe=function(e){return e.message="message",e.error="error",e.destroy="destroy",e}(Oe||{});class Re extends s{constructor(e){super(),this.options=e,ke(this,"Event",Oe),ke(this,"sendStack",void 0)}send(e,t){var r=this;return Ie((function*(){var i=r.createEnvelope(e,t);return r.sendStack.push({data:i,attempts:0,lastTimeoutId:null}),r.makeApiCall(r.sendStack.length-1),r.createPromiseFromCommandEnvelope(i)}))()}destroy(){this.sendStack.forEach((e=>{e.lastTimeoutId&&clearTimeout(e.lastTimeoutId),this.awaitingResponse.delete(e.data.ref)})),this.sendStack=[],this.emit(this.Event.destroy,!1)}onMessage(e,t){var r=this;return Ie((function*(){r.sendStack.splice(e,1);var i=yield t.json();r.handleIncomingEnvelope(i),r.emit(i.type,i.data),r.emit(r.Event.message,i)}))()}onError(e,t){var r,i;if(this.sendStack[e].attempts>=(null!==(r=this.options.attemptsToSend)&&void 0!==r?r:10))return this.sendStack.splice(e,1),void this.handleEnvelopeSendError(this.sendStack[e].data,new Error("Cannot send ".concat(t,"; aborting after reaching the maximum connection errors")));this.sendStack[e].lastTimeoutId=setTimeout((()=>this.makeApiCall(e)),null!==(i=this.options.attemptDelayMs)&&void 0!==i?i:3e3)}makeApiCall(e){var t;this.sendStack[e].attempts++;var r=JSON.stringify(this.sendStack[e].data),i={"Content-Type":"application/json",Accept:"application/json"};i.Authorization="Bearer ".concat(this.options.token);var o=new URLSearchParams(null!==(t=this.options.queryParams)&&void 0!==t?t:{}),s="".concat(this.options.url).concat(o?"?"+o:"");fetch(s,{headers:i,body:r,method:"POST"}).then((t=>this.onMessage(e,t))).catch((()=>this.onError(e,r)))}}function Ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function je(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Me(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){je(s,i,o,n,a,"next",e)}function a(e){je(s,i,o,n,a,"throw",e)}n(void 0)}))}}function Le(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Ae{constructor(e){this.options=e,Le(this,"defaultUrl",void 0)}send(e,t){var r=arguments,i=this;return Me((function*(){var o=r.length>2&&void 0!==r[2]?r[2]:void 0,s=i.getUrl(t),n=void 0;o&&(["GET","DELETE"].includes(e)?s+=new URLSearchParams(o).toString():n=JSON.stringify(o));var a=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(r),!0).forEach((function(t){Le(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ee(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({"Content-Type":"application/json",Accept:"application/json"},i.getAuthHeaders()),l=yield fetch(s,{method:e,body:n,headers:a});return i.convertFetchResponse(l)}))()}getAuthHeaders(){var e={};return this.options.token&&(e.Authorization="Bearer ".concat(this.options.token)),e}getUrl(e){var t;return this.removeEndingSlash(null!==(t=this.options.url)&&void 0!==t?t:this.defaultUrl)+"/"+this.removeStartingSlash(e)}convertFetchResponse(e){return Me((function*(){var t;return{ok:e.ok,status:e.status,data:null!==(t=e.headers.get("content-type"))&&void 0!==t&&t.includes("json")?yield e.json():yield e.text()}}))()}removeStartingSlash(e){return e.replace(/^\/+/,"")}removeEndingSlash(e){return e.replace(/\/+$/,"")}}function De(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function Ue(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){De(s,i,o,n,a,"next",e)}function a(e){De(s,i,o,n,a,"throw",e)}n(void 0)}))}}function xe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class Ne extends Ae{constructor(){super(...arguments),xe(this,"defaultUrl","https://polfan.pl/webservice/api")}static createToken(e,t){var r=arguments;return Ue((function*(){var i=r.length>2&&void 0!==r[2]?r[2]:"pserv-js-client",o=yield new Ne({token:null}).send("POST","auth/tokens",{login:e,password:t,client_name:i});if(o.ok)return o.data;throw new Error("Cannot create user token: ".concat(o.data.errors[0]))}))()}deleteToken(e){var t=this;return Ue((function*(){var r=yield t.send("DELETE","auth/tokens/".concat(e));if(!r.ok)throw new Error("Cannot delete access token: ".concat(r.data.errors[0]))}))()}getMe(){var e=this;return Ue((function*(){var t=yield e.send("GET","auth/me");if(t.ok)return t.data.id=t.data.id.toString(),t.data;throw new Error("Cannot get current user account: ".concat(t.data.errors[0]))}))()}}function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function Ce(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){Je(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Be(e,t,r,i,o,s,n){try{var a=e[s](n),l=a.value}catch(e){return void r(e)}a.done?t(l):Promise.resolve(l).then(i,o)}function _e(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function n(e){Be(s,i,o,n,a,"next",e)}function a(e){Be(s,i,o,n,a,"throw",e)}n(void 0)}))}}function Je(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class He extends Ae{constructor(){super(...arguments),Je(this,"defaultUrl","https://files.devana.pl")}uploadFile(e){var t=this;return _e((function*(){var r,i=encodeURIComponent(null!==(r=e.name)&&void 0!==r?r:""),o=Ce(Ce({},t.getAuthHeaders()),{},{Accept:"application/json","Content-Disposition":'attachment; filename="'.concat(i,'"'),"Content-Length":e.size}),s=yield fetch(t.getUrl("files"),{method:"POST",body:e,headers:o});return t.convertFetchResponse(s)}))()}getFileMeta(e){var t=this;return _e((function*(){return t.send("GET","files/"+e)}))()}getFileMetaBulk(e){var t=this;return _e((function*(){var r=new URLSearchParams;return e.forEach((e=>r.append("id[]",e))),t.send("GET","files?"+r)}))()}}return t})()));
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|