polfan-server-js-client 0.1.11 → 0.1.12

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/build/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PServ=e():t.PServ=e()}(self,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function o(t,e,r){return(e=i(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){var e=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===r(e)?e:String(e)}t.r(e),t.d(e,{AuthClient:()=>zt,IndexedCollection:()=>D,IndexedObjectCollection:()=>F,ObservableIndexedCollection:()=>J,ObservableIndexedObjectCollection:()=>B,WebApiChatClient:()=>Lt,WebSocketChatClient:()=>dt});var a=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),o(this,"events",new Map),o(this,"onceEvents",new Map)}var e,r,i;return e=t,(r=[{key:"on",value:function(t,e){return this.addHandler(this.events,t,e),this}},{key:"once",value:function(t,e){return this.addHandler(this.onceEvents,t,e),this}},{key:"emit",value:function(t,e){return this.callHandlers(this.events,t,e),this.callHandlers(this.onceEvents,t,e),this.onceEvents.delete(t),this}},{key:"addHandler",value:function(t,e,r){var n,o=null!==(n=t.get(e))&&void 0!==n?n:[];o.push(r),t.set(e,o)}},{key:"callHandlers",value:function(t,e,r){var n;null===(n=t.get(e))||void 0===n||n.forEach((function(t){return t(r)}))}}])&&n(e.prototype,r),i&&n(e,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,g(n.key),n)}}function l(){return l="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=f(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},l.apply(this,arguments)}function f(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=v(t)););return t}function h(t,e){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},h(t,e)}function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=v(t);if(e){var o=v(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return d(this,r)}}function d(t,e){if(e&&("object"===c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return y(t)}function y(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}function m(t,e,r){return(e=g(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){var e=function(t,e){if("object"!==c(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===c(e)?e:String(e)}var b=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&h(t,e)}(i,t);var e,r,n,o=p(i);function i(){var t;u(this,i);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return m(y(t=o.call.apply(o,[this].concat(r))),"awaitingResponse",new Map),m(y(t),"sentCounter",0),t}return e=i,r=[{key:"on",value:function(t,e){return l(v(i.prototype),"on",this).call(this,t,e)}},{key:"once",value:function(t,e){return l(v(i.prototype),"once",this).call(this,t,e)}},{key:"createEnvelope",value:function(t,e){return{type:t,data:e,ref:(++this.sentCounter).toString()}}},{key:"createPromiseFromCommandEnvelope",value:function(t){var e=this;return new Promise((function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return e.awaitingResponse.set(t.ref,n)}))}},{key:"handleIncomingEnvelope",value:function(t){if(this.awaitingResponse.has(t.ref)){var e="Error"===t.type;this.awaitingResponse.get(t.ref)[0]({data:e?null:t.data,error:e?t.data:null}),this.awaitingResponse.delete(t.ref)}}},{key:"handleEnvelopeSendError",value:function(t,e){this.awaitingResponse.has(t.ref)&&(this.awaitingResponse.get(t.ref)[0](e),this.awaitingResponse.delete(t.ref))}}],r&&s(e.prototype,r),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),i}(a);function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function k(){return k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=S(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},k.apply(this,arguments)}function S(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=P(t)););return t}function E(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&j(t,e)}function j(t,e){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},j(t,e)}function x(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=P(t);if(e){var o=P(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return O(this,r)}}function O(t,e){if(e&&("object"===w(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return L(t)}function L(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function P(t){return P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},P(t)}function _(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=T(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function R(t){return function(t){if(Array.isArray(t))return I(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||T(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(t,e){if(t){if("string"==typeof t)return I(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(t,e):void 0}}function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function M(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function N(t,e,r){return e&&A(t.prototype,e),r&&A(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function G(t,e,r){return(e=C(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function C(t){var e=function(t,e){if("object"!==w(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===w(e)?e:String(e)}var D=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];M(this,t),G(this,"_items",new Map),this.set.apply(this,R(e))}return N(t,[{key:"items",get:function(){return this._items}},{key:"length",get:function(){return this._items.size}},{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this._items.set(i[0],i[1])}}},{key:"get",value:function(t){return this.items.get(t)}},{key:"has",value:function(t){return this.items.has(t)}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this.items.delete(i)}}},{key:"deleteAll",value:function(){this.items.clear()}},{key:"findBy",value:function(e,r){for(var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t;!((n=this.items.entries().next().value).done||o&&i.length===o);)n[1][e]===r&&i.set(n);return i}},{key:"map",value:function(t){return Array.from(this.items.entries()).map((function(e){return t(e[1],e[0])}))}}]),t}(),F=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];M(this,t),this.id=e,G(this,"_items",void 0),this._items=new D,this.set.apply(this,R(r))}return N(t,[{key:"items",get:function(){return Array.from(this._items.items.values())}},{key:"length",get:function(){return this._items.length}},{key:"set",value:function(){for(var t,e=this,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this._items).set.apply(t,R(n.map((function(t){return[e.getId(t),t]}))))}},{key:"get",value:function(t){return this._items.get(t)}},{key:"getAt",value:function(t){return this.items[t]}},{key:"has",value:function(t){return this._items.has(t)}},{key:"delete",value:function(){var t;(t=this._items).delete.apply(t,arguments)}},{key:"deleteAll",value:function(){this._items.deleteAll()}},{key:"findBy",value:function(e,r){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t(this.id),a=_(this.items);try{for(a.s();!(n=a.n()).done;){var c=n.value;if(o&&i.length===o)break;c[e]===r&&i.set(c)}}catch(t){a.e(t)}finally{a.f()}return i}},{key:"map",value:function(t){return this.items.map(t)}},{key:"getId",value:function(t){return"function"==typeof this.id?this.id(t):t[this.id]}}]),t}(),J=function(t){E(r,t);var e=x(r);function r(){var t;M(this,r);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return G(L(t=e.call.apply(e,[this].concat(o))),"eventTarget",void 0),t}return N(r,[{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"set",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{setItems:e.map((function(t){return t[0]}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(D),B=function(t){E(r,t);var e=x(r);function r(t){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return M(this,r),(n=e.call(this,t,o)).id=t,G(L(n),"eventTarget",void 0),n.eventTarget=new a,n}return N(r,[{key:"set",value:function(){for(var t,e=this,n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];o.length&&((t=k(P(r.prototype),"set",this)).call.apply(t,[this].concat(o)),this.eventTarget.emit("change",{setItems:o.map((function(t){return e.getId(t)}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(F);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function Y(t){return function(t){if(Array.isArray(t))return Q(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Q(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function H(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */H=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==U(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function z(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function $(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){z(i,n,o,a,c,"next",t)}function c(t){z(i,n,o,a,c,"throw",t)}a(void 0)}))}}function W(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function q(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t,e){if("object"!==U(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===U(e)?e:String(e)}var V,X=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.client=e,q(this,"joinedSpaces",new B("id")),q(this,"joinedRooms",new B("id")),q(this,"spacesRoles",new D),q(this,"roomsTopics",new D),q(this,"topicsMessages",new D),q(this,"spacesRooms",new D),q(this,"spacesMembers",new D),q(this,"roomsMembers",new D),q(this,"deferredGetters",new D),q(this,"reconnecting",!1),q(this,"me",null),this.bind()}var e,r,n,o,i,a,c,u,s,l,f,h,p;return e=t,r=[{key:"getMe",value:(p=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.me);case 3:case"end":return t.stop()}}),t,this)}))),function(){return p.apply(this,arguments)})},{key:"getJoinedSpaces",value:(h=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedSpaces);case 3:case"end":return t.stop()}}),t,this)}))),function(){return h.apply(this,arguments)})},{key:"getJoinedRooms",value:(f=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedRooms);case 3:case"end":return t.stop()}}),t,this)}))),function(){return f.apply(this,arguments)})},{key:"getSpaceRoles",value:(l=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.spacesRoles.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)})},{key:"getRoomTopics",value:(s=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.roomsTopics.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return s.apply(this,arguments)})},{key:"getTopicMessages",value:(u=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.topicsMessages.get(e));case 1:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)})},{key:"getSpaceRooms",value:(c=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-rooms-".concat(e),this.spacesRooms.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceRooms",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesRooms.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)})},{key:"getSpaceMembers",value:(a=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-members-".concat(e),this.spacesMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getRoomMembers",value:(i=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="rooms-members-".concat(e),this.roomsMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetRoomMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.roomsMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return i.apply(this,arguments)})},{key:"deferredGetterReadiness",value:(o=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.deferredGetters.has(e)){t.next=3;break}return t.next=3,null===(r=this.deferredGetters.get(e))||void 0===r?void 0:r.promise;case 3:case"end":return t.stop()}}),t,this)}))),function(t){return o.apply(this,arguments)})},{key:"bind",value:function(){var t=this;this.client.on(this.client.Event.disconnect,(function(e){return t.handleDisconnect(e)})),this.client.on("NewMessage",(function(e){return t.handleNewMessage(e)})),this.client.on("NewRole",(function(e){return t.handleNewRole(e)})),this.client.on("NewRoom",(function(e){return t.handleNewRoom(e)})),this.client.on("NewTopic",(function(e){return t.handleNewTopic(e)})),this.client.on("RoleDeleted",(function(e){return t.handleRoleDeleted(e)})),this.client.on("RoomDeleted",(function(e){return t.handleRoomDeleted(e)})),this.client.on("RoomJoined",(function(e){return t.handleRoomJoined(e)})),this.client.on("RoomLeft",(function(e){return t.handleRoomLeft(e)})),this.client.on("RoomMemberJoined",(function(e){return t.handleRoomMemberJoined(e)})),this.client.on("RoomMemberLeft",(function(e){return t.handleRoomMemberLeft(e)})),this.client.on("RoomMembers",(function(e){return t.handleRoomMembers(e)})),this.client.on("Session",(function(e){return t.handleSession(e)})),this.client.on("SpaceDeleted",(function(e){return t.handleSpaceDeleted(e)})),this.client.on("SpaceJoined",(function(e){return t.handleSpaceJoined(e)})),this.client.on("SpaceLeft",(function(e){return t.handleSpaceLeft(e)})),this.client.on("SpaceMemberJoined",(function(e){return t.handleSpaceMemberJoined(e)})),this.client.on("SpaceMemberLeft",(function(e){return t.handleSpaceMemberLeft(e)})),this.client.on("SpaceMembers",(function(e){return t.handleSpaceMembers(e)})),this.client.on("SpaceRooms",(function(e){return t.handleSpaceRooms(e)})),this.client.on("SpaceMemberUpdate",(function(e){return t.handleSpaceMemberUpdate(e)})),this.client.on("TopicDeleted",(function(e){return t.handleTopicDeleted(e)}))}},{key:"createDeferredGetter",value:function(t){if(!this.deferredGetters.has(t)){var e={promise:void 0,resolver:void 0};e.promise=new Promise((function(t){return e.resolver=t})),this.deferredGetters.set([t,e])}}},{key:"handleDisconnect",value:function(t){t&&(this.reconnecting=!0)}},{key:"handleNewMessage",value:function(t){this.topicsMessages.get(t.topicId).set(t.message)}},{key:"handleNewRole",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.set(t.role),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleNewRoom",value:function(t){var e;null===(e=this.spacesRooms.get(t.spaceId))||void 0===e||e.set(t.summary)}},{key:"handleNewTopic",value:function(t){var e=this.roomsTopics.get(t.roomId);e.set(t.topic),this.joinedRooms.get(t.roomId).topics=e.items}},{key:"handleRoleDeleted",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.delete(t.id),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleRoomDeleted",value:function(t){t.spaceId&&this.spacesRooms.get(t.spaceId).delete(t.id),this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomJoined",value:function(t){this.addJoinedRooms(t.room)}},{key:"addJoinedRooms",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.roomsTopics).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.topics)]})))),(e=this.joinedRooms).set.apply(e,n)}},{key:"handleRoomLeft",value:function(t){this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomMemberJoined",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).set(t.member)}},{key:"handleRoomMemberLeft",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).delete(t.userId)}},{key:"handleRoomMembers",value:function(t){var e;this.roomsMembers.has(t.id)||(this.roomsMembers.set([t.id,new B((function(t){var e;return null!==(e=null==t?void 0:t.user.id)&&void 0!==e?e:t.spaceMember.user.id}),t.members)]),null===(e=this.deferredGetters.get("rooms-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSession",value:function(t){var e;this.me=t.user,this.me&&!this.reconnecting||(this.reconnecting=!1,this.joinedRooms.deleteAll(),this.roomsTopics.deleteAll(),this.roomsMembers.deleteAll(),this.joinedSpaces.deleteAll(),this.spacesRoles.deleteAll(),this.spacesRooms.deleteAll(),this.spacesMembers.deleteAll(),this.addJoinedRooms.apply(this,Y(t.state.rooms)),this.addJoinedSpaces.apply(this,Y(t.state.spaces)),null===(e=this.deferredGetters.get("session"))||void 0===e||e.resolver())}},{key:"handleSpaceDeleted",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceJoined",value:function(t){this.addJoinedSpaces(t.space)}},{key:"addJoinedSpaces",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.spacesRoles).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.roles)]})))),(e=this.joinedSpaces).set.apply(e,n)}},{key:"handleSpaceLeft",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceMemberJoined",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleSpaceMemberLeft",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).delete(t.userId)}},{key:"handleSpaceMembers",value:function(t){var e;this.spacesMembers.has(t.id)||(this.spacesMembers.set([t.id,new B((function(t){return null==t?void 0:t.user.id}),t.members)]),null===(e=this.deferredGetters.get("spaces-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceRooms",value:function(t){var e;this.spacesRooms.has(t.id)||(this.spacesRooms.set([t.id,new B("id",t.summaries)]),null===(e=this.deferredGetters.get("spaces-rooms-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceMemberUpdate",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleTopicDeleted",value:function(t){var e=this.roomsTopics.get(t.roomId);e.delete(t.id),this.joinedRooms.get(t.roomId).topics=e.items}}],r&&W(e.prototype,r),n&&W(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function tt(t){return function(t){if(Array.isArray(t))return et(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return et(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return et(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function et(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function rt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */rt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Z(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function ot(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){nt(i,n,o,a,c,"next",t)}function c(t){nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function it(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,ht(n.key),n)}}function at(t,e){return at=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},at(t,e)}function ct(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=lt(t);if(e){var o=lt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return ut(this,r)}}function ut(t,e){if(e&&("object"===Z(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return st(t)}function st(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function lt(t){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},lt(t)}function ft(t,e,r){return(e=ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ht(t){var e=function(t,e){if("object"!==Z(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Z(e)?e:String(e)}!function(t){t.connect="connect",t.disconnect="disconnect",t.message="message",t.error="error"}(V||(V={}));var pt,dt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&at(t,e)}(c,t);var e,r,n,o,i,a=ct(c);function c(t){var e,r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(r=a.call(this)).options=t,ft(st(r),"Event",V),ft(st(r),"state",void 0),ft(st(r),"ws",null),ft(st(r),"sendQueue",[]),ft(st(r),"connectingTimeoutId",void 0),ft(st(r),"authenticated",void 0),ft(st(r),"authenticatedResolvers",void 0),!r.options.token&&!r.options.temporaryNick)throw new Error("Token or temporary nick is required");return(null===(e=r.options.stateTracking)||void 0===e||e)&&(r.state=new X(st(r))),r}return e=c,r=[{key:"connect",value:(i=ot(rt().mark((function t(){var e,r,n=this;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.options.token?"token=".concat(this.options.token):"nick=".concat(this.options.temporaryNick),this.ws=new WebSocket("".concat(this.options.url,"?").concat(r)),this.ws.onclose=function(t){return n.onClose(t)},this.ws.onmessage=function(t){return n.onMessage(t)},this.connectingTimeoutId=setTimeout((function(){return n.triggerConnectionTimeout()}),null!==(e=this.options.connectingTimeoutMs)&&void 0!==e?e:1e4),this.authenticated=!1,t.abrupt("return",new Promise((function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return n.authenticatedResolvers=e})));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"disconnect",value:function(){var t;this.sendQueue=[],null===(t=this.ws)||void 0===t||t.close(),this.ws=null}},{key:"send",value:(o=ot(rt().mark((function t(e,r){var n;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.ws&&![this.ws.CLOSED,this.ws.CLOSING].includes(this.ws.readyState)){t.next=2;break}throw new Error("Cannot send; close or closing connection state");case 2:if(this.ws.readyState!==this.ws.CONNECTING&&this.authenticated){t.next=5;break}return this.sendQueue.push([e,r]),t.abrupt("return");case 5:if(this.ws.readyState===this.ws.OPEN){t.next=7;break}throw new Error("Invalid websocket state=".concat(this.ws.readyState));case 7:return n=this.createEnvelope(e,r),this.ws.send(JSON.stringify(n)),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 10:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onMessage",value:function(t){var e=JSON.parse(t.data);if(!this.authenticated){var r="Error"!==e.type;this.authenticated=r,r?(this.authenticatedResolvers[0](),this.emit(this.Event.connect),this.sendFromQueue()):this.authenticatedResolvers[1](e.data)}this.handleIncomingEnvelope(e),this.emit(e.type,e),this.emit(this.Event.message,e)}},{key:"onClose",value:function(t){clearTimeout(this.connectingTimeoutId);var e=1e3!==t.code;e&&this.connect(),this.emit(this.Event.disconnect,e)}},{key:"sendFromQueue",value:function(){var t=this,e=0,r=function(r){var n,o=t.sendQueue[r];setTimeout((function(){return t.send.apply(t,tt(o))}),e),e+=null!==(n=t.options.awaitQueueSendDelayMs)&&void 0!==n?n:500};for(var n in this.sendQueue)r(n);this.sendQueue=[],clearTimeout(this.connectingTimeoutId)}},{key:"triggerConnectionTimeout",value:function(){this.disconnect(),this.emit(this.Event.error,new Error("Connection timeout"))}}],r&&it(e.prototype,r),n&&it(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function vt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */vt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==yt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function mt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){mt(i,n,o,a,c,"next",t)}function c(t){mt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function bt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ot(n.key),n)}}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function kt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=jt(t);if(e){var o=jt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return St(this,r)}}function St(t,e){if(e&&("object"===yt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Et(t)}function Et(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function jt(t){return jt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},jt(t)}function xt(t,e,r){return(e=Ot(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ot(t){var e=function(t,e){if("object"!==yt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===yt(e)?e:String(e)}!function(t){t.message="message",t.error="error",t.destroy="destroy"}(pt||(pt={}));var Lt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(c,t);var e,r,n,o,i,a=kt(c);function c(t){var e;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=a.call(this)).options=t,xt(Et(e),"Event",pt),xt(Et(e),"sendStack",void 0),!e.options.token&&!e.options.temporaryNick)throw new Error("Token or temporary nick is required");return e}return e=c,r=[{key:"send",value:(i=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.createEnvelope(e,r),this.sendStack.push({data:n,attempts:0,lastTimeoutId:null}),this.makeApiCall(this.sendStack.length-1),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 4:case"end":return t.stop()}}),t,this)}))),function(t,e){return i.apply(this,arguments)})},{key:"destroy",value:function(){var t=this;this.sendStack.forEach((function(e){e.lastTimeoutId&&clearTimeout(e.lastTimeoutId),t.awaitingResponse.delete(e.data.ref)})),this.sendStack=[],this.emit(this.Event.destroy,!1)}},{key:"onMessage",value:(o=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.sendStack.splice(e,1),t.next=3,r.json();case 3:n=t.sent,this.handleIncomingEnvelope(n),this.emit(n.type,n),this.emit(this.Event.message,n);case 7:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onError",value:function(t,e){var r,n,o=this;if(this.sendStack[t].attempts>=(null!==(r=this.options.attemptsToSend)&&void 0!==r?r:10))return this.sendStack.splice(t,1),void this.handleEnvelopeSendError(this.sendStack[t].data,new Error("Cannot send ".concat(e,"; aborting after reaching the maximum connection errors")));this.sendStack[t].lastTimeoutId=setTimeout((function(){return o.makeApiCall(t)}),null!==(n=this.options.attemptDelayMs)&&void 0!==n?n:3e3)}},{key:"makeApiCall",value:function(t){var e=this;this.sendStack[t].attempts++;var r=JSON.stringify(this.sendStack[t].data),n={"Content-Type":"application/json",Accept:"application/json"};this.options.token?n.Authorization="Bearer ".concat(this.options.token):this.options.temporaryNick&&(n.Authorization="Temp ".concat(this.options.temporaryNick)),fetch(this.options.url,{headers:n,body:r,method:"POST"}).then((function(r){return e.onMessage(t,r)})).catch((function(){return e.onError(t,r)}))}}],r&&bt(e.prototype,r),n&&bt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}function _t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_t=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Pt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Rt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Tt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,It(n.key),n)}}function It(t){var e=function(t,e){if("object"!==Pt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Pt(e)?e:String(e)}function Mt(t){return Mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mt(t)}function At(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */At=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Mt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){Nt(i,n,o,a,c,"next",t)}function c(t){Nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function Ct(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ht(n.key),n)}}function Ft(t,e){return Ft=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ft(t,e)}function Jt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=Yt(t);if(e){var o=Yt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return Bt(this,r)}}function Bt(t,e){if(e&&("object"===Mt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Ut(t)}function Ut(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Yt(t){return Yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Yt(t)}function Qt(t,e,r){return(e=Ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ht(t){var e=function(t,e){if("object"!==Mt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Mt(e)?e:String(e)}var zt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ft(t,e)}(u,t);var e,r,n,o,i,a,c=Jt(u);function u(){var t;Ct(this,u);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return Qt(Ut(t=c.call.apply(c,[this].concat(r))),"defaultUrl","https://polfan.pl/webservice"),t}return e=u,r=[{key:"deleteToken",value:(a=Gt(At().mark((function t(e){var r;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("DELETE","auth/tokens/".concat(e));case 2:if((r=t.sent).ok){t.next=5;break}throw new Error("Cannot delete access token: ".concat(r.data.errors[0]));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getMe",value:(i=Gt(At().mark((function t(){var e;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("GET","auth/me");case 2:if(!(e=t.sent).ok){t.next=6;break}return e.data.id=e.data.id.toString(),t.abrupt("return",e.data);case 6:throw new Error("Cannot get current user account: ".concat(e.data.errors[0]));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})}],n=[{key:"createToken",value:(o=Gt(At().mark((function t(e,r){var n,o,i=arguments;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=i.length>2&&void 0!==i[2]?i[2]:"pserv-js-client",t.next=3,new u({token:null}).send("POST","auth/tokens",{login:e,password:r,client_name:n});case 3:if(!(o=t.sent).ok){t.next=6;break}return t.abrupt("return",o.data);case 6:throw new Error("Cannot create user token: ".concat(o.data.errors[0]));case 7:case"end":return t.stop()}}),t)}))),function(t,e){return o.apply(this,arguments)})}],r&&Dt(e.prototype,r),n&&Dt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(function(){function t(e){var r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=e,r=this,o=void 0,(n=It(n="defaultUrl"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o}var e,r,n,o,i;return e=t,r=[{key:"send",value:(o=_t().mark((function t(e,r){var n,o,i,a,c,u=arguments;return _t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.length>2&&void 0!==u[2]?u[2]:void 0,o={"Content-Type":"application/json",Accept:"application/json"},this.options.token&&(o.Authorization="Bearer ".concat(this.options.token)),i=this.getUrl(r),a=void 0,n&&(["GET","DELETE"].includes(e)?i+=new URLSearchParams(n).toString():a=JSON.stringify(n)),t.next=8,fetch(i,{method:e,body:a,headers:o});case 8:return c=t.sent,t.t0=c.ok,t.t1=c.status,t.next=13,c.json();case 13:return t.t2=t.sent,t.abrupt("return",{ok:t.t0,status:t.t1,data:t.t2});case 15:case"end":return t.stop()}}),t,this)})),i=function(){var t=this,e=arguments;return new Promise((function(r,n){var i=o.apply(t,e);function a(t){Rt(i,r,n,a,c,"next",t)}function c(t){Rt(i,r,n,a,c,"throw",t)}a(void 0)}))},function(t,e){return i.apply(this,arguments)})},{key:"getUrl",value:function(t){var e;return this.removeEndingSlash(null!==(e=this.options.url)&&void 0!==e?e:this.defaultUrl)+"/"+this.removeStartingSlash(t)}},{key:"removeStartingSlash",value:function(t){return t.replace(/^\/+/,"")}},{key:"removeEndingSlash",value:function(t){return t.replace(/\/+$/,"")}}],r&&Tt(e.prototype,r),n&&Tt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}());return e})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PServ=e():t.PServ=e()}(self,(()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function n(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function o(t,e,r){return(e=i(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){var e=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===r(e)?e:String(e)}t.r(e),t.d(e,{AuthClient:()=>zt,IndexedCollection:()=>D,IndexedObjectCollection:()=>F,ObservableIndexedCollection:()=>J,ObservableIndexedObjectCollection:()=>B,WebApiChatClient:()=>Lt,WebSocketChatClient:()=>dt});var a=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),o(this,"events",new Map),o(this,"onceEvents",new Map)}var e,r,i;return e=t,(r=[{key:"on",value:function(t,e){return this.addHandler(this.events,t,e),this}},{key:"once",value:function(t,e){return this.addHandler(this.onceEvents,t,e),this}},{key:"emit",value:function(t,e){return this.callHandlers(this.events,t,e),this.callHandlers(this.onceEvents,t,e),this.onceEvents.delete(t),this}},{key:"addHandler",value:function(t,e,r){var n,o=null!==(n=t.get(e))&&void 0!==n?n:[];o.push(r),t.set(e,o)}},{key:"callHandlers",value:function(t,e,r){var n;null===(n=t.get(e))||void 0===n||n.forEach((function(t){return t(r)}))}}])&&n(e.prototype,r),i&&n(e,i),Object.defineProperty(e,"prototype",{writable:!1}),t}();function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,g(n.key),n)}}function l(){return l="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=f(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},l.apply(this,arguments)}function f(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=v(t)););return t}function h(t,e){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},h(t,e)}function p(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=v(t);if(e){var o=v(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return d(this,r)}}function d(t,e){if(e&&("object"===c(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return y(t)}function y(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}function m(t,e,r){return(e=g(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function g(t){var e=function(t,e){if("object"!==c(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===c(e)?e:String(e)}var b=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&h(t,e)}(i,t);var e,r,n,o=p(i);function i(){var t;u(this,i);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return m(y(t=o.call.apply(o,[this].concat(r))),"awaitingResponse",new Map),m(y(t),"sentCounter",0),t}return e=i,r=[{key:"on",value:function(t,e){return l(v(i.prototype),"on",this).call(this,t,e)}},{key:"once",value:function(t,e){return l(v(i.prototype),"once",this).call(this,t,e)}},{key:"createEnvelope",value:function(t,e){return{type:t,data:e,ref:(++this.sentCounter).toString()}}},{key:"createPromiseFromCommandEnvelope",value:function(t){var e=this;return new Promise((function(){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return e.awaitingResponse.set(t.ref,n)}))}},{key:"handleIncomingEnvelope",value:function(t){if(this.awaitingResponse.has(t.ref)){var e="Error"===t.type;this.awaitingResponse.get(t.ref)[0]({data:e?null:t.data,error:e?t.data:null}),this.awaitingResponse.delete(t.ref)}}},{key:"handleEnvelopeSendError",value:function(t,e){this.awaitingResponse.has(t.ref)&&(this.awaitingResponse.get(t.ref)[0](e),this.awaitingResponse.delete(t.ref))}}],r&&s(e.prototype,r),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),i}(a);function w(t){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},w(t)}function k(){return k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=S(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},k.apply(this,arguments)}function S(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=P(t)););return t}function E(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&j(t,e)}function j(t,e){return j=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},j(t,e)}function x(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=P(t);if(e){var o=P(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return O(this,r)}}function O(t,e){if(e&&("object"===w(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return L(t)}function L(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function P(t){return P=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},P(t)}function _(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=T(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function R(t){return function(t){if(Array.isArray(t))return I(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||T(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(t,e){if(t){if("string"==typeof t)return I(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(t,e):void 0}}function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function M(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function A(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,C(n.key),n)}}function N(t,e,r){return e&&A(t.prototype,e),r&&A(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function G(t,e,r){return(e=C(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function C(t){var e=function(t,e){if("object"!==w(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===w(e)?e:String(e)}var D=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];M(this,t),G(this,"_items",new Map),this.set.apply(this,R(e))}return N(t,[{key:"items",get:function(){return this._items}},{key:"length",get:function(){return this._items.size}},{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this._items.set(i[0],i[1])}}},{key:"get",value:function(t){return this.items.get(t)}},{key:"has",value:function(t){return this.items.has(t)}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];for(var n=0,o=e;n<o.length;n++){var i=o[n];this.items.delete(i)}}},{key:"deleteAll",value:function(){this.items.clear()}},{key:"findBy",value:function(e,r){for(var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t;!((n=this.items.entries().next().value).done||o&&i.length===o);)n[1][e]===r&&i.set(n);return i}},{key:"map",value:function(t){return Array.from(this.items.entries()).map((function(e){return t(e[1],e[0])}))}}]),t}(),F=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];M(this,t),this.id=e,G(this,"_items",void 0),this._items=new D,this.set.apply(this,R(r))}return N(t,[{key:"items",get:function(){return Array.from(this._items.items.values())}},{key:"length",get:function(){return this._items.length}},{key:"set",value:function(){for(var t,e=this,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this._items).set.apply(t,R(n.map((function(t){return[e.getId(t),t]}))))}},{key:"get",value:function(t){return this._items.get(t)}},{key:"getAt",value:function(t){return this.items[t]}},{key:"has",value:function(t){return this._items.has(t)}},{key:"delete",value:function(){var t;(t=this._items).delete.apply(t,arguments)}},{key:"deleteAll",value:function(){this._items.deleteAll()}},{key:"findBy",value:function(e,r){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=new t(this.id),a=_(this.items);try{for(a.s();!(n=a.n()).done;){var c=n.value;if(o&&i.length===o)break;c[e]===r&&i.set(c)}}catch(t){a.e(t)}finally{a.f()}return i}},{key:"map",value:function(t){return this.items.map(t)}},{key:"getId",value:function(t){return"function"==typeof this.id?this.id(t):t[this.id]}}]),t}(),J=function(t){E(r,t);var e=x(r);function r(){var t;M(this,r);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return G(L(t=e.call.apply(e,[this].concat(o))),"eventTarget",void 0),t}return N(r,[{key:"set",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"set",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{setItems:e.map((function(t){return t[0]}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(D),B=function(t){E(r,t);var e=x(r);function r(t){var n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return M(this,r),(n=e.call(this,t,o)).id=t,G(L(n),"eventTarget",void 0),n.eventTarget=new a,n}return N(r,[{key:"set",value:function(){for(var t,e=this,n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];o.length&&((t=k(P(r.prototype),"set",this)).call.apply(t,[this].concat(o)),this.eventTarget.emit("change",{setItems:o.map((function(t){return e.getId(t)}))}))}},{key:"delete",value:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o;e.length&&((o=k(P(r.prototype),"delete",this)).call.apply(o,[this].concat(e)),this.eventTarget.emit("change",{deletedItems:e}))}},{key:"deleteAll",value:function(){if(this.length){var t=this._items.items.keys();k(P(r.prototype),"deleteAll",this).call(this),this.eventTarget.emit("change",{deletedItems:Array.from(t)})}}},{key:"on",value:function(t,e){return this.eventTarget.on(t,e),this}},{key:"once",value:function(t,e){return this.eventTarget.once(t,e),this}}]),r}(F);function U(t){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(t)}function Y(t){return function(t){if(Array.isArray(t))return Q(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Q(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Q(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function H(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */H=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==U(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function z(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function $(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){z(i,n,o,a,c,"next",t)}function c(t){z(i,n,o,a,c,"throw",t)}a(void 0)}))}}function W(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,K(n.key),n)}}function q(t,e,r){return(e=K(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function K(t){var e=function(t,e){if("object"!==U(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===U(e)?e:String(e)}var V,X=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.client=e,q(this,"joinedSpaces",new B("id")),q(this,"joinedRooms",new B("id")),q(this,"spacesRoles",new D),q(this,"roomsTopics",new D),q(this,"topicsMessages",new D),q(this,"spacesRooms",new D),q(this,"spacesMembers",new D),q(this,"roomsMembers",new D),q(this,"deferredGetters",new D),q(this,"reconnecting",!1),q(this,"me",null),this.bind()}var e,r,n,o,i,a,c,u,s,l,f,h,p;return e=t,r=[{key:"getMe",value:(p=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.me);case 3:case"end":return t.stop()}}),t,this)}))),function(){return p.apply(this,arguments)})},{key:"getJoinedSpaces",value:(h=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedSpaces);case 3:case"end":return t.stop()}}),t,this)}))),function(){return h.apply(this,arguments)})},{key:"getJoinedRooms",value:(f=$(H().mark((function t(){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.joinedRooms);case 3:case"end":return t.stop()}}),t,this)}))),function(){return f.apply(this,arguments)})},{key:"getSpaceRoles",value:(l=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.spacesRoles.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)})},{key:"getRoomTopics",value:(s=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deferredGetterReadiness("session");case 2:return t.abrupt("return",this.roomsTopics.get(e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return s.apply(this,arguments)})},{key:"getTopicMessages",value:(u=$(H().mark((function t(e){return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.topicsMessages.get(e));case 1:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)})},{key:"getSpaceRooms",value:(c=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-rooms-".concat(e),this.spacesRooms.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceRooms",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesRooms.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)})},{key:"getSpaceMembers",value:(a=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="spaces-members-".concat(e),this.spacesMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetSpaceMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.spacesMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getRoomMembers",value:(i=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="rooms-members-".concat(e),this.roomsMembers.has(e)||this.deferredGetters.has(r)||(this.createDeferredGetter(r),this.client.send("GetRoomMembers",{id:e})),t.next=4,this.deferredGetterReadiness(r);case 4:return t.abrupt("return",this.roomsMembers.get(e));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return i.apply(this,arguments)})},{key:"deferredGetterReadiness",value:(o=$(H().mark((function t(e){var r;return H().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.deferredGetters.has(e)){t.next=3;break}return t.next=3,null===(r=this.deferredGetters.get(e))||void 0===r?void 0:r.promise;case 3:case"end":return t.stop()}}),t,this)}))),function(t){return o.apply(this,arguments)})},{key:"bind",value:function(){var t=this;this.client.on(this.client.Event.disconnect,(function(e){return t.handleDisconnect(e)})),this.client.on("NewMessage",(function(e){return t.handleNewMessage(e)})),this.client.on("NewRole",(function(e){return t.handleNewRole(e)})),this.client.on("NewRoom",(function(e){return t.handleNewRoom(e)})),this.client.on("NewTopic",(function(e){return t.handleNewTopic(e)})),this.client.on("RoleDeleted",(function(e){return t.handleRoleDeleted(e)})),this.client.on("RoomDeleted",(function(e){return t.handleRoomDeleted(e)})),this.client.on("RoomJoined",(function(e){return t.handleRoomJoined(e)})),this.client.on("RoomLeft",(function(e){return t.handleRoomLeft(e)})),this.client.on("RoomMemberJoined",(function(e){return t.handleRoomMemberJoined(e)})),this.client.on("RoomMemberLeft",(function(e){return t.handleRoomMemberLeft(e)})),this.client.on("RoomMembers",(function(e){return t.handleRoomMembers(e)})),this.client.on("Session",(function(e){return t.handleSession(e)})),this.client.on("SpaceDeleted",(function(e){return t.handleSpaceDeleted(e)})),this.client.on("SpaceJoined",(function(e){return t.handleSpaceJoined(e)})),this.client.on("SpaceLeft",(function(e){return t.handleSpaceLeft(e)})),this.client.on("SpaceMemberJoined",(function(e){return t.handleSpaceMemberJoined(e)})),this.client.on("SpaceMemberLeft",(function(e){return t.handleSpaceMemberLeft(e)})),this.client.on("SpaceMembers",(function(e){return t.handleSpaceMembers(e)})),this.client.on("SpaceRooms",(function(e){return t.handleSpaceRooms(e)})),this.client.on("SpaceMemberUpdate",(function(e){return t.handleSpaceMemberUpdate(e)})),this.client.on("TopicDeleted",(function(e){return t.handleTopicDeleted(e)}))}},{key:"createDeferredGetter",value:function(t){if(!this.deferredGetters.has(t)){var e={promise:void 0,resolver:void 0};e.promise=new Promise((function(t){return e.resolver=t})),this.deferredGetters.set([t,e])}}},{key:"handleDisconnect",value:function(t){t&&(this.reconnecting=!0)}},{key:"handleNewMessage",value:function(t){this.topicsMessages.get(t.topicId).set(t.message)}},{key:"handleNewRole",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.set(t.role),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleNewRoom",value:function(t){var e;null===(e=this.spacesRooms.get(t.spaceId))||void 0===e||e.set(t.summary)}},{key:"handleNewTopic",value:function(t){var e=this.roomsTopics.get(t.roomId);e.set(t.topic),this.joinedRooms.get(t.roomId).topics=e.items}},{key:"handleRoleDeleted",value:function(t){var e=this.spacesRoles.get(t.spaceId);e.delete(t.id),this.joinedSpaces.get(t.spaceId).roles=e.items}},{key:"handleRoomDeleted",value:function(t){t.spaceId&&this.spacesRooms.get(t.spaceId).delete(t.id),this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomJoined",value:function(t){this.addJoinedRooms(t.room)}},{key:"addJoinedRooms",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.roomsTopics).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.topics)]})))),(e=this.joinedRooms).set.apply(e,n)}},{key:"handleRoomLeft",value:function(t){this.joinedRooms.delete(t.id),this.roomsMembers.delete(t.id),this.roomsTopics.delete(t.id)}},{key:"handleRoomMemberJoined",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).set(t.member)}},{key:"handleRoomMemberLeft",value:function(t){this.roomsMembers.has(t.roomId)&&this.roomsMembers.get(t.roomId).delete(t.userId)}},{key:"handleRoomMembers",value:function(t){var e;this.roomsMembers.has(t.id)||(this.roomsMembers.set([t.id,new B((function(t){var e;return null!==(e=null==t?void 0:t.user.id)&&void 0!==e?e:t.spaceMember.user.id}),t.members)]),null===(e=this.deferredGetters.get("rooms-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSession",value:function(t){var e;this.me=t.user,this.me&&!this.reconnecting||(this.reconnecting=!1,this.joinedRooms.deleteAll(),this.roomsTopics.deleteAll(),this.roomsMembers.deleteAll(),this.joinedSpaces.deleteAll(),this.spacesRoles.deleteAll(),this.spacesRooms.deleteAll(),this.spacesMembers.deleteAll(),this.addJoinedRooms.apply(this,Y(t.state.rooms)),this.addJoinedSpaces.apply(this,Y(t.state.spaces)),null===(e=this.deferredGetters.get("session"))||void 0===e||e.resolver())}},{key:"handleSpaceDeleted",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceJoined",value:function(t){this.addJoinedSpaces(t.space)}},{key:"addJoinedSpaces",value:function(){for(var t,e,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(t=this.spacesRoles).set.apply(t,Y(n.map((function(t){return[t.id,new B("id",t.roles)]})))),(e=this.joinedSpaces).set.apply(e,n)}},{key:"handleSpaceLeft",value:function(t){this.spacesRoles.delete(t.id),this.spacesMembers.delete(t.id),this.spacesRooms.delete(t.id),this.joinedSpaces.delete(t.id)}},{key:"handleSpaceMemberJoined",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleSpaceMemberLeft",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).delete(t.userId)}},{key:"handleSpaceMembers",value:function(t){var e;this.spacesMembers.has(t.id)||(this.spacesMembers.set([t.id,new B((function(t){return null==t?void 0:t.user.id}),t.members)]),null===(e=this.deferredGetters.get("spaces-members-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceRooms",value:function(t){var e;this.spacesRooms.has(t.id)||(this.spacesRooms.set([t.id,new B("id",t.summaries)]),null===(e=this.deferredGetters.get("spaces-rooms-".concat(t.id)))||void 0===e||e.resolver())}},{key:"handleSpaceMemberUpdate",value:function(t){this.spacesMembers.has(t.spaceId)&&this.spacesMembers.get(t.spaceId).set(t.member)}},{key:"handleTopicDeleted",value:function(t){var e=this.roomsTopics.get(t.roomId);e.delete(t.id),this.joinedRooms.get(t.roomId).topics=e.items}}],r&&W(e.prototype,r),n&&W(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function tt(t){return function(t){if(Array.isArray(t))return et(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return et(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return et(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function et(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function rt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */rt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Z(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function ot(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){nt(i,n,o,a,c,"next",t)}function c(t){nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function it(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,ht(n.key),n)}}function at(t,e){return at=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},at(t,e)}function ct(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=lt(t);if(e){var o=lt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return ut(this,r)}}function ut(t,e){if(e&&("object"===Z(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return st(t)}function st(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function lt(t){return lt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},lt(t)}function ft(t,e,r){return(e=ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function ht(t){var e=function(t,e){if("object"!==Z(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Z(e)?e:String(e)}!function(t){t.connect="connect",t.disconnect="disconnect",t.message="message",t.error="error"}(V||(V={}));var pt,dt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&at(t,e)}(c,t);var e,r,n,o,i,a=ct(c);function c(t){var e,r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(r=a.call(this)).options=t,ft(st(r),"Event",V),ft(st(r),"state",void 0),ft(st(r),"ws",null),ft(st(r),"sendQueue",[]),ft(st(r),"connectingTimeoutId",void 0),ft(st(r),"authenticated",void 0),ft(st(r),"authenticatedResolvers",void 0),!r.options.token&&!r.options.temporaryNick)throw new Error("Token or temporary nick is required");return(null===(e=r.options.stateTracking)||void 0===e||e)&&(r.state=new X(st(r))),r}return e=c,r=[{key:"connect",value:(i=ot(rt().mark((function t(){var e,r,n=this;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.options.token?"token=".concat(this.options.token):"nick=".concat(this.options.temporaryNick),this.ws=new WebSocket("".concat(this.options.url,"?").concat(r)),this.ws.onclose=function(t){return n.onClose(t)},this.ws.onmessage=function(t){return n.onMessage(t)},this.connectingTimeoutId=setTimeout((function(){return n.triggerConnectionTimeout()}),null!==(e=this.options.connectingTimeoutMs)&&void 0!==e?e:1e4),this.authenticated=!1,t.abrupt("return",new Promise((function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return n.authenticatedResolvers=e})));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"disconnect",value:function(){var t;this.sendQueue=[],null===(t=this.ws)||void 0===t||t.close(),this.ws=null}},{key:"send",value:(o=ot(rt().mark((function t(e,r){var n;return rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.ws&&![this.ws.CLOSED,this.ws.CLOSING].includes(this.ws.readyState)){t.next=2;break}throw new Error("Cannot send; close or closing connection state");case 2:if(this.ws.readyState!==this.ws.CONNECTING&&this.authenticated){t.next=5;break}return this.sendQueue.push([e,r]),t.abrupt("return");case 5:if(this.ws.readyState===this.ws.OPEN){t.next=7;break}throw new Error("Invalid websocket state=".concat(this.ws.readyState));case 7:return n=this.createEnvelope(e,r),this.ws.send(JSON.stringify(n)),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 10:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onMessage",value:function(t){var e=JSON.parse(t.data);if(this.handleIncomingEnvelope(e),this.emit(e.type,e),this.emit(this.Event.message,e),!this.authenticated){var r="Error"!==e.type;this.authenticated=r,r?(this.authenticatedResolvers[0](),this.emit(this.Event.connect),this.sendFromQueue()):this.authenticatedResolvers[1](e.data)}}},{key:"onClose",value:function(t){clearTimeout(this.connectingTimeoutId);var e=1e3!==t.code;e&&this.connect(),this.emit(this.Event.disconnect,e)}},{key:"sendFromQueue",value:function(){var t=this,e=0,r=function(r){var n,o=t.sendQueue[r];setTimeout((function(){return t.send.apply(t,tt(o))}),e),e+=null!==(n=t.options.awaitQueueSendDelayMs)&&void 0!==n?n:500};for(var n in this.sendQueue)r(n);this.sendQueue=[],clearTimeout(this.connectingTimeoutId)}},{key:"triggerConnectionTimeout",value:function(){this.disconnect(),this.emit(this.Event.error,new Error("Connection timeout"))}}],r&&it(e.prototype,r),n&&it(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function yt(t){return yt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yt(t)}function vt(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */vt=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==yt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function mt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){mt(i,n,o,a,c,"next",t)}function c(t){mt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function bt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ot(n.key),n)}}function wt(t,e){return wt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},wt(t,e)}function kt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=jt(t);if(e){var o=jt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return St(this,r)}}function St(t,e){if(e&&("object"===yt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Et(t)}function Et(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function jt(t){return jt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},jt(t)}function xt(t,e,r){return(e=Ot(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ot(t){var e=function(t,e){if("object"!==yt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===yt(e)?e:String(e)}!function(t){t.message="message",t.error="error",t.destroy="destroy"}(pt||(pt={}));var Lt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(c,t);var e,r,n,o,i,a=kt(c);function c(t){var e;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=a.call(this)).options=t,xt(Et(e),"Event",pt),xt(Et(e),"sendStack",void 0),!e.options.token&&!e.options.temporaryNick)throw new Error("Token or temporary nick is required");return e}return e=c,r=[{key:"send",value:(i=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.createEnvelope(e,r),this.sendStack.push({data:n,attempts:0,lastTimeoutId:null}),this.makeApiCall(this.sendStack.length-1),t.abrupt("return",this.createPromiseFromCommandEnvelope(n));case 4:case"end":return t.stop()}}),t,this)}))),function(t,e){return i.apply(this,arguments)})},{key:"destroy",value:function(){var t=this;this.sendStack.forEach((function(e){e.lastTimeoutId&&clearTimeout(e.lastTimeoutId),t.awaitingResponse.delete(e.data.ref)})),this.sendStack=[],this.emit(this.Event.destroy,!1)}},{key:"onMessage",value:(o=gt(vt().mark((function t(e,r){var n;return vt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.sendStack.splice(e,1),t.next=3,r.json();case 3:n=t.sent,this.handleIncomingEnvelope(n),this.emit(n.type,n),this.emit(this.Event.message,n);case 7:case"end":return t.stop()}}),t,this)}))),function(t,e){return o.apply(this,arguments)})},{key:"onError",value:function(t,e){var r,n,o=this;if(this.sendStack[t].attempts>=(null!==(r=this.options.attemptsToSend)&&void 0!==r?r:10))return this.sendStack.splice(t,1),void this.handleEnvelopeSendError(this.sendStack[t].data,new Error("Cannot send ".concat(e,"; aborting after reaching the maximum connection errors")));this.sendStack[t].lastTimeoutId=setTimeout((function(){return o.makeApiCall(t)}),null!==(n=this.options.attemptDelayMs)&&void 0!==n?n:3e3)}},{key:"makeApiCall",value:function(t){var e=this;this.sendStack[t].attempts++;var r=JSON.stringify(this.sendStack[t].data),n={"Content-Type":"application/json",Accept:"application/json"};this.options.token?n.Authorization="Bearer ".concat(this.options.token):this.options.temporaryNick&&(n.Authorization="Temp ".concat(this.options.temporaryNick)),fetch(this.options.url,{headers:n,body:r,method:"POST"}).then((function(r){return e.onMessage(t,r)})).catch((function(){return e.onError(t,r)}))}}],r&&bt(e.prototype,r),n&&bt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),c}(b);function Pt(t){return Pt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Pt(t)}function _t(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_t=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Pt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Rt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Tt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,It(n.key),n)}}function It(t){var e=function(t,e){if("object"!==Pt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Pt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Pt(e)?e:String(e)}function Mt(t){return Mt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mt(t)}function At(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */At=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function s(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new x(o||[]);return n(a,"_invoke",{value:k(t,r,c)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=s;var f={};function h(){}function p(){}function d(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==e&&r.call(m,i)&&(y=m);var g=d.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){function o(n,i,a,c){var u=l(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==Mt(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function k(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return L()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=S(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=l(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===f)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function S(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=l(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function x(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function O(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=d,n(g,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:p,configurable:!0}),p.displayName=u(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,u(t,c,"GeneratorFunction")),t.prototype=Object.create(g),t},t.awrap=function(t){return{__await:t}},b(w.prototype),u(w.prototype,a,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new w(s(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(g),u(g,c,"Generator"),u(g,i,(function(){return this})),u(g,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=O,x.prototype={constructor:x,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(j),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),j(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function Nt(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function Gt(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){Nt(i,n,o,a,c,"next",t)}function c(t){Nt(i,n,o,a,c,"throw",t)}a(void 0)}))}}function Ct(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Dt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ht(n.key),n)}}function Ft(t,e){return Ft=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ft(t,e)}function Jt(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=Yt(t);if(e){var o=Yt(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return Bt(this,r)}}function Bt(t,e){if(e&&("object"===Mt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return Ut(t)}function Ut(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Yt(t){return Yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Yt(t)}function Qt(t,e,r){return(e=Ht(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ht(t){var e=function(t,e){if("object"!==Mt(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!==Mt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"===Mt(e)?e:String(e)}var zt=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ft(t,e)}(u,t);var e,r,n,o,i,a,c=Jt(u);function u(){var t;Ct(this,u);for(var e=arguments.length,r=new Array(e),n=0;n<e;n++)r[n]=arguments[n];return Qt(Ut(t=c.call.apply(c,[this].concat(r))),"defaultUrl","https://polfan.pl/webservice"),t}return e=u,r=[{key:"deleteToken",value:(a=Gt(At().mark((function t(e){var r;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("DELETE","auth/tokens/".concat(e));case 2:if((r=t.sent).ok){t.next=5;break}throw new Error("Cannot delete access token: ".concat(r.data.errors[0]));case 5:case"end":return t.stop()}}),t,this)}))),function(t){return a.apply(this,arguments)})},{key:"getMe",value:(i=Gt(At().mark((function t(){var e;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.send("GET","auth/me");case 2:if(!(e=t.sent).ok){t.next=6;break}return e.data.id=e.data.id.toString(),t.abrupt("return",e.data);case 6:throw new Error("Cannot get current user account: ".concat(e.data.errors[0]));case 7:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})}],n=[{key:"createToken",value:(o=Gt(At().mark((function t(e,r){var n,o,i=arguments;return At().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=i.length>2&&void 0!==i[2]?i[2]:"pserv-js-client",t.next=3,new u({token:null}).send("POST","auth/tokens",{login:e,password:r,client_name:n});case 3:if(!(o=t.sent).ok){t.next=6;break}return t.abrupt("return",o.data);case 6:throw new Error("Cannot create user token: ".concat(o.data.errors[0]));case 7:case"end":return t.stop()}}),t)}))),function(t,e){return o.apply(this,arguments)})}],r&&Dt(e.prototype,r),n&&Dt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),u}(function(){function t(e){var r,n,o;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=e,r=this,o=void 0,(n=It(n="defaultUrl"))in r?Object.defineProperty(r,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[n]=o}var e,r,n,o,i;return e=t,r=[{key:"send",value:(o=_t().mark((function t(e,r){var n,o,i,a,c,u=arguments;return _t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=u.length>2&&void 0!==u[2]?u[2]:void 0,o={"Content-Type":"application/json",Accept:"application/json"},this.options.token&&(o.Authorization="Bearer ".concat(this.options.token)),i=this.getUrl(r),a=void 0,n&&(["GET","DELETE"].includes(e)?i+=new URLSearchParams(n).toString():a=JSON.stringify(n)),t.next=8,fetch(i,{method:e,body:a,headers:o});case 8:return c=t.sent,t.t0=c.ok,t.t1=c.status,t.next=13,c.json();case 13:return t.t2=t.sent,t.abrupt("return",{ok:t.t0,status:t.t1,data:t.t2});case 15:case"end":return t.stop()}}),t,this)})),i=function(){var t=this,e=arguments;return new Promise((function(r,n){var i=o.apply(t,e);function a(t){Rt(i,r,n,a,c,"next",t)}function c(t){Rt(i,r,n,a,c,"throw",t)}a(void 0)}))},function(t,e){return i.apply(this,arguments)})},{key:"getUrl",value:function(t){var e;return this.removeEndingSlash(null!==(e=this.options.url)&&void 0!==e?e:this.defaultUrl)+"/"+this.removeStartingSlash(t)}},{key:"removeStartingSlash",value:function(t){return t.replace(/^\/+/,"")}},{key:"removeEndingSlash",value:function(t){return t.replace(/\/+$/,"")}}],r&&Tt(e.prototype,r),n&&Tt(e,n),Object.defineProperty(e,"prototype",{writable:!1}),t}());return e})()));
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAe,MAAID,IAEnBD,EAAY,MAAIC,GACjB,CATD,CASGK,MAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,GAAO,G,2iCCGvD,IAAMC,EAAW,yB,4FAAA,yBACoB,IAAIC,KAAqC,oBACrC,IAAIA,IAAqC,C,UA2BpF,O,EA3BoF,G,EAAA,iBAErF,SAAUC,EAAmBC,GAEzB,OADAC,KAAKC,WAAWD,KAAKE,OAAQJ,EAAWC,GACjCC,IACX,GAAC,kBAED,SAAYF,EAAmBC,GAE3B,OADAC,KAAKC,WAAWD,KAAKG,WAAYL,EAAWC,GACrCC,IACX,GAAC,kBAED,SAAYF,EAAmBM,GAI3B,OAHAJ,KAAKK,aAAaL,KAAKE,OAAQJ,EAAWM,GAC1CJ,KAAKK,aAAaL,KAAKG,WAAYL,EAAWM,GAC9CJ,KAAKG,WAAU,OAAQL,GAChBE,IACX,GAAC,wBAED,SAAmBM,EAA0BR,EAAmBC,GAAqC,MAC3FQ,EAA6B,QAArB,EAAGD,EAAInB,IAAIW,UAAU,QAAI,GACvCS,EAASC,KAAKT,GACdO,EAAIG,IAAIX,EAAWS,EACvB,GAAC,0BAED,SAAqBD,EAA0BR,EAAmBM,GAAqB,MACjE,QAAlB,EAAAE,EAAInB,IAAIW,UAAU,OAAlB,EAAoBY,SAAQ,SAAAC,GAAQ,OAAIA,EAASP,EAAM,GAC3D,M,8EAAC,EA7BmB,G,ktEC6CjB,IAAeQ,EAAkB,a,qRAAA,U,MAAA,4GAEH,OAFG,2DAC+B,IAAIf,KAAsC,qBAC7E,GAAC,EA8ChC,O,EA9CgC,E,EAAA,iBAKjC,SACKC,EAA+BC,GAChC,OAAO,EAAP,oCAAgBD,EAAWC,EAC/B,GAAC,kBAED,SACKD,EAAsBC,GACvB,OAAO,EAAP,sCAAkBD,EAAWC,EACjC,GAAC,4BAED,SAAmCc,EAAcC,GAC7C,MAAO,CACHD,KAAAA,EAAMC,KAAAA,EAAMC,OAAQf,KAAKgB,aAAaC,WAE9C,GAAC,8CAED,SACyCC,GACY,WACjD,OAAO,IAAIC,SAAQ,sCAAIC,EAAI,yBAAJA,EAAI,uBACvB,EAAKC,iBAAiBZ,IAAIS,EAASH,IAAeK,EAAK,GAC/D,GAAC,oCAED,SAAiCF,GAC7B,GAAKlB,KAAKqB,iBAAiBC,IAAIJ,EAASH,KAAxC,CAGA,IAAMQ,EAA4B,UAAlBL,EAASL,KACzBb,KAAKqB,iBAAiBlC,IAAI+B,EAASH,KAAK,GAAG,CACvCD,KAAMS,EAAU,KAAOL,EAASJ,KAChCU,MAAOD,EAAUL,EAASJ,KAAO,OAErCd,KAAKqB,iBAAgB,OAAQH,EAASH,IANtC,CAOJ,GAAC,qCAED,SAAkCG,EAAoBM,GAC7CxB,KAAKqB,iBAAiBC,IAAIJ,EAASH,OAGxCf,KAAKqB,iBAAiBlC,IAAI+B,EAASH,KAAK,GAAGS,GAC3CxB,KAAKqB,iBAAgB,OAAQH,EAASH,KAC1C,I,iFAAC,EAhDmC,CAASnB,G,08HCnD1C,IAAM6B,EAAiB,WAG1B,aAA6D,IAA1CC,EAAsC,UAAH,6CAAG,GAAE,0BAFrB,IAAI7B,KAGtCG,KAAKS,IAAG,MAART,KAAI,EAAQ0B,GAChB,CAkDC,OAlDA,sBAED,WACI,OAAO1B,KAAK2B,MAChB,GAAC,kBAED,WACI,OAAO3B,KAAK2B,OAAOC,IACvB,GAAC,iBAED,WAA6C,2BAA/BF,EAAK,yBAALA,EAAK,gBACf,IAAK,IAAL,MAAmBA,EAAK,eAAE,CAArB,IAAMG,EAAI,KACX7B,KAAK2B,OAAOlB,IAAIoB,EAAK,GAAIA,EAAK,GAClC,CACJ,GAAC,iBAED,SAAWC,GACP,OAAO9B,KAAK0B,MAAMvC,IAAI2C,EAC1B,GAAC,iBAED,SAAWA,GACP,OAAO9B,KAAK0B,MAAMJ,IAAIQ,EAC1B,GAAC,oBAED,WAAoC,2BAAnBC,EAAG,yBAAHA,EAAG,gBAChB,IAAK,IAAL,MAAiBA,EAAG,eAAE,CAAjB,IAAMD,EAAE,KACT9B,KAAK0B,MAAK,OAAQI,EACtB,CACJ,GAAC,uBAED,WACI9B,KAAK0B,MAAMM,OACf,GAAC,oBAED,SAAcC,EAAqBC,GAG/B,IAHwG,IAEpGL,EAF6CM,EAAgB,UAAH,6CAAG,KAC3DC,EAAS,IAAIX,KAEVI,EAAO7B,KAAK0B,MAAMW,UAAUC,OAAO3C,OAAO4C,MAC3CJ,GAASC,EAAOI,SAAWL,IAG3BN,EAAK,GAAGI,KAAWC,GACnBE,EAAO3B,IAAIoB,GAGnB,OAAOO,CACX,GAAC,iBAED,SAAuBzB,GACnB,OAAO8B,MAAMC,KAAK1C,KAAK0B,MAAMW,WAAW/B,KAAI,SAACqC,GAAK,OAAKhC,EAASgC,EAAM,GAAIA,EAAM,GAAG,GACvF,KAAC,EAvDyB,GA0DjBC,EAAuB,WAGhC,WACoBd,GAElB,IADEJ,EAAa,UAAH,6CAAG,GAAE,eADCI,GAAAA,EAAgC,wBAGhD9B,KAAK2B,OAAS,IAAIF,EAClBzB,KAAKS,IAAG,MAART,KAAI,EAAQ0B,GAChB,CAqDC,OArDA,sBAED,WACI,OAAOe,MAAMC,KAAK1C,KAAK2B,OAAOD,MAAMmB,SACxC,GAAC,kBAED,WACI,OAAO7C,KAAK2B,OAAOa,MACvB,GAAC,iBAED,WAAgC,oCAAlBd,EAAK,yBAALA,EAAK,iBACf,EAAA1B,KAAK2B,QAAOlB,IAAG,UAAKiB,EAAMpB,KAAI,SAAAuB,GAAI,MAAI,CAAC,EAAKiB,MAAMjB,GAAOA,EAAK,KAClE,GAAC,iBAED,SAAWC,GACP,OAAO9B,KAAK2B,OAAOxC,IAAI2C,EAC3B,GAAC,mBAED,SAAaiB,GACT,OAAO/C,KAAK0B,MAAMqB,EACtB,GAAC,iBAED,SAAWjB,GACP,OAAO9B,KAAK2B,OAAOL,IAAIQ,EAC3B,GAAC,oBAED,WAAmC,OAC/B,EAAA9B,KAAK2B,QAAM,OAAO,kBACtB,GAAC,uBAED,WACI3B,KAAK2B,OAAOqB,WAChB,GAAC,oBAED,SAAcf,EAAgBC,GAAoE,IAEhE,EAFcC,EAAgB,UAAH,6CAAG,KACtDC,EAAS,IAAIQ,EAA2B5C,KAAK8B,IAAI,IACnC9B,KAAK0B,OAAK,IAA9B,IAAK,EAAL,qBAAgC,KAArB/B,EAAK,QACZ,GAAIwC,GAASC,EAAOI,SAAWL,EAC3B,MAEAxC,EAAMsC,KAAWC,GACjBE,EAAO3B,IAAId,EAEnB,CAAC,+BACD,OAAOyC,CACX,GAAC,iBAED,SAAuBzB,GACnB,OAAOX,KAAK0B,MAAMpB,IAAIK,EAC1B,GAAC,mBAED,SAAgBkB,GACZ,MAA0B,mBAAZ7B,KAAK8B,GAAoB9B,KAAK8B,GAAGD,GAAQA,EAAK7B,KAAK8B,GACrE,KAAC,EA9D+B,GAsEvBmB,EAA2B,0MAiCnC,OAjCmC,sBAGpC,WAAuC,2BAAzBvB,EAAK,yBAALA,EAAK,gBACG,MAAdA,EAAMc,UACN,2DAAad,IACb1B,KAAKkD,YAAYC,KAAK,SAAU,CAACC,SAAU1B,EAAMpB,KAAI,SAAAuB,GAAI,OAAIA,EAAK,EAAE,MAE5E,GAAC,oBAED,WAA8B,2BAAbE,EAAG,yBAAHA,EAAG,gBACA,MAAZA,EAAIS,UACJ,8DAAgBT,IAChB/B,KAAKkD,YAAYC,KAAK,SAAU,CAACE,aAActB,IAEvD,GAAC,uBAED,WACI,GAAI/B,KAAKwC,OAAQ,CACb,IAAMT,EAAM/B,KAAK2B,OAAO2B,OACxB,8CACAtD,KAAKkD,YAAYC,KAAK,SAAU,CAACE,aAAcZ,MAAMC,KAAKX,IAC9D,CACJ,GAAC,gBAED,SAAUjC,EAAqBC,GAE3B,OADAC,KAAKkD,YAAYK,GAAGzD,EAAWC,GACxBC,IACX,GAAC,kBAED,SAAYF,EAAqBC,GAE7B,OADAC,KAAKkD,YAAYM,KAAK1D,EAAWC,GAC1BC,IACX,KAAC,EAjCmC,CAAuByB,GAoClDgC,EAAiC,8BAG1C,WACoB3B,GAElB,MADEJ,EAAa,UAAH,6CAAG,GAGwB,OAHtB,WAEf,cAAMI,EAAIJ,IAHMI,GAAAA,EAAmC,6BAInD,EAAKoB,YAAc,IAAItD,EAAc,CACzC,CAgCC,OAhCA,sBAED,WAA0B,QACJ,EADI,0BAAZ8B,EAAK,yBAALA,EAAK,gBACXA,EAAMc,UACN,2DAAad,IACb1B,KAAKkD,YAAYC,KAAK,SAAU,CAACC,SAAU1B,EAAMpB,KAAI,SAAAuB,GAAI,OAAI,EAAKiB,MAAMjB,EAAK,MAErF,GAAC,oBAED,WAAgC,2BAAfE,EAAG,yBAAHA,EAAG,gBACA,MAAZA,EAAIS,UACJ,8DAAgBT,IAChB/B,KAAKkD,YAAYC,KAAK,SAAU,CAACE,aAActB,IAEvD,GAAC,uBAED,WACI,GAAI/B,KAAKwC,OAAQ,CACb,IAAMT,EAAM/B,KAAK2B,OAAOD,MAAM4B,OAC9B,8CACAtD,KAAKkD,YAAYC,KAAK,SAAU,CAACE,aAAcZ,MAAMC,KAAKX,IAC9D,CACJ,GAAC,gBAED,SAAUjC,EAAqBC,GAE3B,OADAC,KAAKkD,YAAYK,GAAGzD,EAAWC,GACxBC,IACX,GAAC,kBAED,SAAYF,EAAqBC,GAE7B,OADAC,KAAKkD,YAAYM,KAAK1D,EAAWC,GAC1BC,IACX,KAAC,EAzCyC,CAAY4C,G,ooCCrK1D,8lGAAAc,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,0lBAAAA,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,ojBA8BO,ICjBFC,EDiBQC,EAAgB,WAiBzB,WAAoCC,IA/CxC,4FA+CqE,cAA7BA,OAAAA,EAA2B,sBAhB/B,IAAIJ,EAAyC,OAAK,qBACnD,IAAIA,EAAwC,OAAK,qBACjD,IAAIhC,GAAoE,qBACxE,IAAIA,GAAqE,wBAEtE,IAAIA,GAAuE,qBAG9E,IAAIA,GAA2E,uBAC7E,IAAIA,GAA2E,sBAChF,IAAIA,GAA0E,yBAC3E,IAAIA,GAAqC,uBAE5C,GAAK,YAClB,MAGfzB,KAAK8D,MACT,CAjDJ,UA4GK,EAVA,EAVA,EAVA,EAJA,EALA,EALA,EALA,EALA,EALA,EAkRA,OAnUL,EAiDK,EAjDL,EAiDK,mCAED,8FACU9D,KAAK+D,wBAAwB,WAAU,gCACtC/D,KAAKgE,IAAE,gDACjB,yFAED,8FACUhE,KAAK+D,wBAAwB,WAAU,gCACtC/D,KAAKiE,cAAY,gDAC3B,wFAED,8FACUjE,KAAK+D,wBAAwB,WAAU,gCACtC/D,KAAKkE,aAAW,gDAC1B,uFAED,WAA2BC,GAAe,iFAChCnE,KAAK+D,wBAAwB,WAAU,gCACtC/D,KAAKoE,YAAYjF,IAAIgF,IAAQ,gDACvC,wFAED,WAA2BE,GAAc,iFAC/BrE,KAAK+D,wBAAwB,WAAU,gCACtC/D,KAAKsE,YAAYnF,IAAIkF,IAAO,gDACtC,2FAED,WAA8BE,GAAe,0FAClCvE,KAAKwE,eAAerF,IAAIoF,IAAQ,gDAC1C,wFAED,WAA2BJ,GAAe,uEAKrC,OAJKM,EAAqB,gBAAH,OAAmBN,GACtCnE,KAAK0E,YAAYpD,IAAI6C,IAAanE,KAAK2E,gBAAgBrD,IAAImD,KAC5DzE,KAAK4E,qBAAqBH,GAC1BzE,KAAK6D,OAAOgB,KAAK,gBAAiB,CAAC/C,GAAIqC,KAC1C,SACKnE,KAAK+D,wBAAwBU,GAAmB,gCAC/CzE,KAAK0E,YAAYvF,IAAIgF,IAAQ,gDACvC,0FAED,WAA6BA,GAAe,uEAKvC,OAJKM,EAAqB,kBAAH,OAAqBN,GACxCnE,KAAK8E,cAAcxD,IAAI6C,IAAanE,KAAK2E,gBAAgBrD,IAAImD,KAC9DzE,KAAK4E,qBAAqBH,GAC1BzE,KAAK6D,OAAOgB,KAAK,kBAAmB,CAAC/C,GAAIqC,KAC5C,SACKnE,KAAK+D,wBAAwBU,GAAmB,gCAC/CzE,KAAK8E,cAAc3F,IAAIgF,IAAQ,gDACzC,yFAED,WAA4BE,GAAc,uEAKrC,OAJKI,EAAqB,iBAAH,OAAoBJ,GACvCrE,KAAK+E,aAAazD,IAAI+C,IAAYrE,KAAK2E,gBAAgBrD,IAAImD,KAC5DzE,KAAK4E,qBAAqBH,GAC1BzE,KAAK6D,OAAOgB,KAAK,iBAAkB,CAAC/C,GAAIuC,KAC3C,SACKrE,KAAK+D,wBAAwBU,GAAmB,gCAC/CzE,KAAK+E,aAAa5F,IAAIkF,IAAO,gDACvC,kGAED,WAAsCW,GAAY,2EAC1ChF,KAAK2E,gBAAgBrD,IAAI0D,GAAO,CAAF,+BACM,QADN,EACxBhF,KAAK2E,gBAAgBxF,IAAI6F,UAAK,aAA9B,EAAgCC,QAAO,gDAEpD,gEAED,WAAqB,WACjBjF,KAAK6D,OAAON,GAAGvD,KAAK6D,OAAOqB,MAAMC,YAAY,SAAAC,GAAE,OAAI,EAAKC,iBAAiBD,EAAqB,IAC9FpF,KAAK6D,OAAON,GAAG,cAAc,SAAA6B,GAAE,OAAI,EAAKE,iBAAiBF,EAAG,IAC5DpF,KAAK6D,OAAON,GAAG,WAAW,SAAA6B,GAAE,OAAI,EAAKG,cAAcH,EAAG,IACtDpF,KAAK6D,OAAON,GAAG,WAAW,SAAA6B,GAAE,OAAI,EAAKI,cAAcJ,EAAG,IACtDpF,KAAK6D,OAAON,GAAG,YAAY,SAAA6B,GAAE,OAAI,EAAKK,eAAeL,EAAG,IACxDpF,KAAK6D,OAAON,GAAG,eAAe,SAAA6B,GAAE,OAAI,EAAKM,kBAAkBN,EAAG,IAC9DpF,KAAK6D,OAAON,GAAG,eAAe,SAAA6B,GAAE,OAAI,EAAKO,kBAAkBP,EAAG,IAC9DpF,KAAK6D,OAAON,GAAG,cAAc,SAAA6B,GAAE,OAAI,EAAKQ,iBAAiBR,EAAG,IAC5DpF,KAAK6D,OAAON,GAAG,YAAY,SAAA6B,GAAE,OAAI,EAAKS,eAAeT,EAAG,IACxDpF,KAAK6D,OAAON,GAAG,oBAAoB,SAAA6B,GAAE,OAAI,EAAKU,uBAAuBV,EAAG,IACxEpF,KAAK6D,OAAON,GAAG,kBAAkB,SAAA6B,GAAE,OAAI,EAAKW,qBAAqBX,EAAG,IACpEpF,KAAK6D,OAAON,GAAG,eAAe,SAAA6B,GAAE,OAAI,EAAKY,kBAAkBZ,EAAG,IAC9DpF,KAAK6D,OAAON,GAAG,WAAW,SAAA6B,GAAE,OAAI,EAAKa,cAAcb,EAAG,IACtDpF,KAAK6D,OAAON,GAAG,gBAAgB,SAAA6B,GAAE,OAAI,EAAKc,mBAAmBd,EAAG,IAChEpF,KAAK6D,OAAON,GAAG,eAAe,SAAA6B,GAAE,OAAI,EAAKe,kBAAkBf,EAAG,IAC9DpF,KAAK6D,OAAON,GAAG,aAAa,SAAA6B,GAAE,OAAI,EAAKgB,gBAAgBhB,EAAG,IAC1DpF,KAAK6D,OAAON,GAAG,qBAAqB,SAAA6B,GAAE,OAAI,EAAKiB,wBAAwBjB,EAAG,IAC1EpF,KAAK6D,OAAON,GAAG,mBAAmB,SAAA6B,GAAE,OAAI,EAAKkB,sBAAsBlB,EAAG,IACtEpF,KAAK6D,OAAON,GAAG,gBAAgB,SAAA6B,GAAE,OAAI,EAAKmB,mBAAmBnB,EAAG,IAChEpF,KAAK6D,OAAON,GAAG,cAAc,SAAA6B,GAAE,OAAI,EAAKoB,iBAAiBpB,EAAG,IAC5DpF,KAAK6D,OAAON,GAAG,qBAAqB,SAAA6B,GAAE,OAAI,EAAKqB,wBAAwBrB,EAAG,IAC1EpF,KAAK6D,OAAON,GAAG,gBAAgB,SAAA6B,GAAE,OAAI,EAAKsB,mBAAmBtB,EAAG,GACpE,GAAC,kCAED,SAA6BJ,GACzB,IAAIhF,KAAK2E,gBAAgBrD,IAAI0D,GAA7B,CAGA,IAAM2B,EAAqB,CAAC1B,aAAS2B,EAAWC,cAAUD,GAC1DD,EAAS1B,QAAU,IAAI9D,SAAQ,SAAA2F,GAAO,OAAIH,EAASE,SAAWC,CAAO,IACrE9G,KAAK2E,gBAAgBlE,IAAI,CAACuE,EAAM2B,GAHhC,CAIJ,GAAC,8BAED,SAAyBI,GACjBA,IACA/G,KAAKgH,cAAe,EAG5B,GAAC,8BAED,SAAyB5B,GACrBpF,KAAKwE,eAAerF,IAAIiG,EAAGb,SAAS9D,IAAI2E,EAAG6B,QAC/C,GAAC,2BAED,SAAsB7B,GAClB,IAAM8B,EAAalH,KAAKoE,YAAYjF,IAAIiG,EAAGjB,SAC3C+C,EAAWzG,IAAI2E,EAAG+B,MAClBnH,KAAKiE,aAAa9E,IAAIiG,EAAGjB,SAASiD,MAAQF,EAAWxF,KACzD,GAAC,2BAED,SAAsB0D,GAAmB,MACL,QAAhC,EAAApF,KAAK0E,YAAYvF,IAAIiG,EAAGjB,gBAAQ,OAAhC,EAAkC1D,IAAI2E,EAAGiC,QAC7C,GAAC,4BAED,SAAuBjC,GACnB,IAAM8B,EAAalH,KAAKsE,YAAYnF,IAAIiG,EAAGf,QAC3C6C,EAAWzG,IAAI2E,EAAGkC,OAClBtH,KAAKkE,YAAY/E,IAAIiG,EAAGf,QAAQkD,OAASL,EAAWxF,KACxD,GAAC,+BAED,SAA0B0D,GACtB,IAAM8B,EAAalH,KAAKoE,YAAYjF,IAAIiG,EAAGjB,SAC3C+C,EAAU,OAAQ9B,EAAGtD,IACrB9B,KAAKiE,aAAa9E,IAAIiG,EAAGjB,SAASiD,MAAQF,EAAWxF,KACzD,GAAC,+BAED,SAA0B0D,GAClBA,EAAGjB,SACHnE,KAAK0E,YAAYvF,IAAIiG,EAAGjB,SAAQ,OAAQiB,EAAGtD,IAE/C9B,KAAKkE,YAAW,OAAQkB,EAAGtD,IAC3B9B,KAAK+E,aAAY,OAAQK,EAAGtD,IAC5B9B,KAAKsE,YAAW,OAAQc,EAAGtD,GAC/B,GAAC,8BAED,SAAyBsD,GACrBpF,KAAKwH,eAAepC,EAAGqC,KAC3B,GAAC,4BAED,WAA+C,+BAArBC,EAAK,yBAALA,EAAK,iBAC3B,EAAA1H,KAAKsE,aAAY7D,IAAG,UAAIiH,EAAMpH,KAAwD,SAAAmH,GAAI,MAAI,CAC1FA,EAAK3F,GACL,IAAI2B,EAAyC,KAAMgE,EAAKF,QAC3D,OACD,EAAAvH,KAAKkE,aAAYzD,IAAG,QAAIiH,EAC5B,GAAC,4BAED,SAAuBtC,GACnBpF,KAAKkE,YAAW,OAAQkB,EAAGtD,IAC3B9B,KAAK+E,aAAY,OAAQK,EAAGtD,IAC5B9B,KAAKsE,YAAW,OAAQc,EAAGtD,GAC/B,GAAC,oCAED,SAA+BsD,GACvBpF,KAAK+E,aAAazD,IAAI8D,EAAGf,SACzBrE,KAAK+E,aAAa5F,IAAIiG,EAAGf,QAAQ5D,IAAI2E,EAAGuC,OAEhD,GAAC,kCAED,SAA6BvC,GACrBpF,KAAK+E,aAAazD,IAAI8D,EAAGf,SACzBrE,KAAK+E,aAAa5F,IAAIiG,EAAGf,QAAO,OAAQe,EAAGwC,OAEnD,GAAC,+BAED,SAA0BxC,GACa,MAA9BpF,KAAK+E,aAAazD,IAAI8D,EAAGtD,MAC1B9B,KAAK+E,aAAatE,IAAI,CAClB2E,EAAGtD,GACH,IAAI2B,GACA,SAAAkE,GAAM,aAAmB,QAAnB,EAAIA,aAAM,EAANA,EAAQE,KAAK/F,UAAE,QAAI6F,EAAOG,YAAYD,KAAK/F,EAAE,GACvDsD,EAAG2C,WAGuC,QAAlD,EAAA/H,KAAK2E,gBAAgBxF,IAAI,iBAAD,OAAkBiG,EAAGtD,YAAK,OAAlD,EAAoD+E,WAE5D,GAAC,2BAED,SAAsBzB,GAAmB,MACrCpF,KAAKgE,GAAKoB,EAAGyC,KAET7H,KAAKgE,KAAOhE,KAAKgH,eAIrBhH,KAAKgH,cAAe,EAEpBhH,KAAKkE,YAAYlB,YACjBhD,KAAKsE,YAAYtB,YACjBhD,KAAK+E,aAAa/B,YAClBhD,KAAKiE,aAAajB,YAClBhD,KAAKoE,YAAYpB,YACjBhD,KAAK0E,YAAY1B,YACjBhD,KAAK8E,cAAc9B,YAEnBhD,KAAKwH,eAAc,MAAnBxH,KAAI,EAAmBoF,EAAG4C,MAAMN,QAChC1H,KAAKiI,gBAAe,MAApBjI,KAAI,EAAoBoF,EAAG4C,MAAME,SAEE,QAAnC,EAAAlI,KAAK2E,gBAAgBxF,IAAI,kBAAU,OAAnC,EAAqC0H,WACzC,GAAC,gCAED,SAA2BzB,GACvBpF,KAAKoE,YAAW,OAAQgB,EAAGtD,IAC3B9B,KAAK8E,cAAa,OAAQM,EAAGtD,IAC7B9B,KAAK0E,YAAW,OAAQU,EAAGtD,IAC3B9B,KAAKiE,aAAY,OAAQmB,EAAGtD,GAChC,GAAC,+BAED,SAA0BsD,GACtBpF,KAAKiI,gBAAgB7C,EAAG+C,MAC5B,GAAC,6BAED,WAAkD,+BAAvBD,EAAM,yBAANA,EAAM,iBAC7B,EAAAlI,KAAKoE,aAAY3D,IAAG,UAAKyH,EAAO5H,KAAI,SAAA6H,GAAK,MAAI,CACzCA,EAAMrG,GACN,IAAI2B,EAAwC,KAAM0E,EAAMf,OAC3D,OACD,EAAApH,KAAKiE,cAAaxD,IAAG,QAAIyH,EAC7B,GAAC,6BAED,SAAwB9C,GACpBpF,KAAKoE,YAAW,OAAQgB,EAAGtD,IAC3B9B,KAAK8E,cAAa,OAAQM,EAAGtD,IAC7B9B,KAAK0E,YAAW,OAAQU,EAAGtD,IAC3B9B,KAAKiE,aAAY,OAAQmB,EAAGtD,GAChC,GAAC,qCAED,SAAgCsD,GACxBpF,KAAK8E,cAAcxD,IAAI8D,EAAGjB,UAC1BnE,KAAK8E,cAAc3F,IAAIiG,EAAGjB,SAAS1D,IAAI2E,EAAGuC,OAElD,GAAC,mCAED,SAA8BvC,GACtBpF,KAAK8E,cAAcxD,IAAI8D,EAAGjB,UAC1BnE,KAAK8E,cAAc3F,IAAIiG,EAAGjB,SAAQ,OAAQiB,EAAGwC,OAErD,GAAC,gCAED,SAA2BxC,GACa,MAA/BpF,KAAK8E,cAAcxD,IAAI8D,EAAGtD,MAC3B9B,KAAK8E,cAAcrE,IAAI,CACnB2E,EAAGtD,GACH,IAAI2B,GAAkC,SAAAkE,GAAM,OAAIA,aAAM,EAANA,EAAQE,KAAK/F,EAAE,GAAEsD,EAAG2C,WAErB,QAAnD,EAAA/H,KAAK2E,gBAAgBxF,IAAI,kBAAD,OAAmBiG,EAAGtD,YAAK,OAAnD,EAAqD+E,WAE7D,GAAC,8BAED,SAAyBzB,GACa,MAA7BpF,KAAK0E,YAAYpD,IAAI8D,EAAGtD,MACzB9B,KAAK0E,YAAYjE,IAAI,CAAC2E,EAAGtD,GAAI,IAAI2B,EAAkC,KAAM2B,EAAGgD,aAC3B,QAAjD,EAAApI,KAAK2E,gBAAgBxF,IAAI,gBAAD,OAAiBiG,EAAGtD,YAAK,OAAjD,EAAmD+E,WAE3D,GAAC,qCAED,SAAgCzB,GACxBpF,KAAK8E,cAAcxD,IAAI8D,EAAGjB,UAC1BnE,KAAK8E,cAAc3F,IAAIiG,EAAGjB,SAAS1D,IAAI2E,EAAGuC,OAElD,GAAC,gCAED,SAA2BvC,GACvB,IAAM8B,EAAalH,KAAKsE,YAAYnF,IAAIiG,EAAGf,QAC3C6C,EAAU,OAAQ9B,EAAGtD,IACrB9B,KAAKkE,YAAY/E,IAAIiG,EAAGf,QAAQkD,OAASL,EAAWxF,KACxD,IAnUJ,iFAmUK,EArSwB,G,0oCC9B7B,+lGAAAgC,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,+lBAAAA,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,2hDAa6B,SAAxBC,GAAAA,EAAwB,kBAAxBA,EAAwB,wBAAxBA,EAAwB,kBAAxBA,EAAwB,eAAxBA,IAAAA,EAAwB,KAOtB,ICTF0E,GDSQC,GAAmB,aApBhC,sRAoBgC,UApBhC,MAyDK,EAnBA,EAlB2B,QAU5B,WAAoCC,GAAiC,QAEjE,GAhCR,4FA8ByE,UACjE,gBADgCA,QAAAA,EAA+B,iBAT3C5E,GAAwB,uCAGjB,MAAI,qBACyC,IAAE,mHAOrE,EAAK4E,QAAQC,QAAU,EAAKD,QAAQE,cACrC,MAAM,IAAIC,MAAM,uCAInB,OAF6B,QAA9B,EAAI,EAAKH,QAAQI,qBAAa,YAC1B,EAAKX,MAAQ,IAAIpE,EAAiB,QACrC,CACL,CAoFC,OA1HL,EAsCK,EAtCL,EAsCK,uCAED,8FAS+B,OARrBgF,EAAa5I,KAAKuI,QAAQC,MAAQ,SAAH,OAAYxI,KAAKuI,QAAQC,OAAK,eAAaxI,KAAKuI,QAAQE,eAC7FzI,KAAK6I,GAAK,IAAIC,UAAU,GAAD,OAAI9I,KAAKuI,QAAQQ,IAAG,YAAIH,IAC/C5I,KAAK6I,GAAGG,QAAU,SAAA5D,GAAE,OAAI,EAAK6D,QAAQ7D,EAAG,EACxCpF,KAAK6I,GAAGK,UAAY,SAAA9D,GAAE,OAAI,EAAK+D,UAAU/D,EAAG,EAC5CpF,KAAKoJ,oBAAsBC,YACvB,kBAAM,EAAKC,0BAA0B,GACL,QADK,EACrCtJ,KAAKuI,QAAQgB,2BAAmB,QAAI,KAExCvJ,KAAKwJ,eAAgB,EAAM,kBACpB,IAAIrI,SAAQ,sCAAIC,EAAI,yBAAJA,EAAI,uBAAK,EAAKqI,uBAAyBrI,CAAI,KAAC,gDACtE,qEAED,WAA0B,MACtBpB,KAAK0J,UAAY,GACV,QAAP,EAAA1J,KAAK6I,UAAE,OAAP,EAASc,QACT3J,KAAK6I,GAAK,IACd,GAAC,mCAED,WAAyDe,EAA0BC,GAAwC,2EAElH7J,KAAK6I,KAAM,CAAC7I,KAAK6I,GAAGiB,OAAQ9J,KAAK6I,GAAGkB,SAASC,SAAShK,KAAK6I,GAAGoB,YAAW,sBACpE,IAAIvB,MAAM,kDAAiD,UAGjE1I,KAAK6I,GAAGoB,aAAejK,KAAK6I,GAAGqB,YAAelK,KAAKwJ,cAAa,gBACT,OAAvDxJ,KAAK0J,UAAUlJ,KAAK,CAACoJ,EAAaC,IAAqB,6BAIvD7J,KAAK6I,GAAGoB,aAAejK,KAAK6I,GAAGsB,KAAI,sBAC7B,IAAIzB,MAAM,2BAAD,OAA4B1I,KAAK6I,GAAGoB,aAAa,OAI7B,OADjC/I,EAAWlB,KAAKoK,eAA4CR,EAAaC,GAC/E7J,KAAK6I,GAAGhE,KAAKwF,KAAKC,UAAUpJ,IAAW,kBAChClB,KAAKuK,iCAA8CrJ,IAAS,iDACtE,uEAED,SAAkBd,GACd,IAAMc,EAAqBmJ,KAAKG,MAAMpK,EAAMU,MAE5C,IAAKd,KAAKwJ,cAAe,CACrB,IAAMiB,EAAoC,UAAlBvJ,EAASL,KACjCb,KAAKwJ,cAAgBiB,EACjBA,GACAzK,KAAKyJ,uBAAuB,KAC5BzJ,KAAKmD,KAAKnD,KAAKkF,MAAMwF,SACrB1K,KAAK2K,iBAEL3K,KAAKyJ,uBAAuB,GAAGvI,EAASJ,KAEhD,CACAd,KAAK4K,uBAAuB1J,GAC5BlB,KAAKmD,KAAKjC,EAASL,KAAMK,GACzBlB,KAAKmD,KAAKnD,KAAKkF,MAAM+B,QAAS/F,EAClC,GAAC,qBAED,SAAgBd,GACZyK,aAAa7K,KAAKoJ,qBAClB,IAAMrC,EAA2B,MAAf3G,EAAM0K,KACpB/D,GACA/G,KAAK0K,UAET1K,KAAKmD,KAAKnD,KAAKkF,MAAMC,WAAY4B,EACrC,GAAC,2BAED,WAA8B,WAEtBgE,EAAY,EAAE,WACPC,GAAS,MACVlK,EAAO,EAAK4I,UAAUsB,GAC5B3B,YAAW,kBAAM,EAAKxE,KAAI,MAAT,EAAI,GAAS/D,GAAK,GAAEiK,GACrCA,GAA+C,QAAtC,EAAI,EAAKxC,QAAQ0C,6BAAqB,QAAI,GAAI,EAH3D,IAAK,IAAMD,KAAahL,KAAK0J,UAAW,EAA7BsB,GAKXhL,KAAK0J,UAAY,GACjBmB,aAAa7K,KAAKoJ,oBACtB,GAAC,sCAED,WACIpJ,KAAKmF,aACLnF,KAAKmD,KAAKnD,KAAKkF,MAAM1D,MAAO,IAAIkH,MAAM,sBAC1C,IA1HJ,mFA0HK,EAtG2B,CAAS9H,G,2YCpBzC,gmGAAA8C,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,+lBAAAA,EAAA,EAAAA,EAAA,SAAAA,IAAA,SAAAA,GAAA,+hDAW0B,SAArB2E,GAAAA,EAAqB,kBAArBA,EAAqB,cAArBA,EAAqB,mBAArBA,KAAAA,GAAqB,KAMnB,IAAM6C,GAAgB,aAjB7B,sRAiB6B,UAjB7B,MA+CK,EApBA,EAVwB,QAKzB,WAAoC3C,GAAkC,MAElE,GAxBR,4FAsB0E,UAClE,gBADgCA,QAAAA,EAAgC,iBAJ5CF,IAAqB,8BAMpC,EAAKE,QAAQC,QAAU,EAAKD,QAAQE,cACrC,MAAM,IAAIC,MAAM,uCACnB,QACL,CAiEC,OA5FL,EA2BK,EA3BL,EA2BK,oCAED,WAAyDkB,EAA0BC,GAAwC,wEAI3E,OAFtC3I,EAAWlB,KAAKoK,eAAeR,EAAaC,GAClD7J,KAAKmL,UAAU3K,KAAK,CAACM,KAAMI,EAAUkK,SAAU,EAAGC,cAAe,OACjErL,KAAKsL,YAAYtL,KAAKmL,UAAU3I,OAAS,GAAG,kBACrCxC,KAAKuK,iCAAiCrJ,IAAS,gDACzD,qEAED,WAAuB,WAEnBlB,KAAKmL,UAAUzK,SAAQ,SAAAmB,GACfA,EAAKwJ,eACLR,aAAahJ,EAAKwJ,eAEtB,EAAKhK,iBAAgB,OAAQQ,EAAKf,KAAKC,IAC3C,IACAf,KAAKmL,UAAY,GACjBnL,KAAKmD,KAAKnD,KAAKkF,MAAMqG,SAAS,EAClC,GAAC,wCAED,WAA0BC,EAAeC,GAAkB,wEACvB,OAAhCzL,KAAKmL,UAAUO,OAAOF,EAAO,GAAG,SACCC,EAASE,OAAM,OAA1CzK,EAAqB,EAAH,KACxBlB,KAAK4K,uBAAuB1J,GAC5BlB,KAAKmD,KAAKjC,EAASL,KAAMK,GACzBlB,KAAKmD,KAAKnD,KAAKkF,MAAM+B,QAAS/F,GAAU,gDAC3C,qEAED,SAAkBsK,EAAeI,GAAoB,eACjD,GAAI5L,KAAKmL,UAAUK,GAAOJ,WAAwC,QAAhC,EAAKpL,KAAKuI,QAAQsD,sBAAc,QAAI,IAKlE,OAJA7L,KAAKmL,UAAUO,OAAOF,EAAO,QAC7BxL,KAAK8L,wBAAwB9L,KAAKmL,UAAUK,GAAO1K,KAAM,IAAI4H,MAAM,eAAD,OAC/CkD,EAAI,6DAI3B5L,KAAKmL,UAAUK,GAAOH,cAAgBhC,YAClC,kBAAM,EAAKiC,YAAYE,EAAM,GACF,QADE,EAC7BxL,KAAKuI,QAAQwD,sBAAc,QAAI,IAEvC,GAAC,yBAED,SAAsBP,GAAqB,WACvCxL,KAAKmL,UAAUK,GAAOJ,WACtB,IAAMY,EAAW3B,KAAKC,UAAUtK,KAAKmL,UAAUK,GAAO1K,MAChDmL,EAAe,CACjB,eAAgB,mBAChBC,OAAQ,oBAGRlM,KAAKuI,QAAQC,MACbyD,EAAQE,cAAgB,UAAH,OAAanM,KAAKuI,QAAQC,OACxCxI,KAAKuI,QAAQE,gBACpBwD,EAAQE,cAAgB,QAAH,OAAWnM,KAAKuI,QAAQE,gBAGjD2D,MAAMpM,KAAKuI,QAAQQ,IAAK,CACpBkD,QAAAA,EACAL,KAAMI,EACNK,OAAQ,SAEPC,MAAK,SAAAb,GAAQ,OAAI,EAAKtC,UAAUqC,EAAOC,EAAS,IAAC,OAC3C,kBAAM,EAAKc,QAAQf,EAAOQ,EAAS,GAClD,IA5FJ,mFA4FK,EA3EwB,CAASpL,G,2YCjBtC,shO,2YCAA,65QAYO,IAAM4L,GAAU,aAZvB,sRAYuB,UAZvB,MA2CK,EATA,EArB4D,EAD1C,8GAC0C,OAD1C,uDACY,gCAA8B,EAc5D,OA3BL,EAaiE,EAbjE,EAaiE,2CAgB7D,WAAyBhE,GAAa,wFACXxI,KAAK6E,KAAK,SAAU,eAAF,OAAiB2D,IAAQ,OAApD,IAARiD,EAAW,EAAH,MACAgB,GAAI,CAAF,qBACN,IAAI/D,MAAM,+BAAD,OAAgC+C,EAAS3K,KAAK4L,OAAO,KAAK,gDAEhF,kFAED,qGAC2B1M,KAAK6E,KAAK,MAAO,WAAU,OAApC,KAAR4G,EAAW,EAAH,MACDgB,GAAI,CAAF,eACoC,OAA/ChB,EAAS3K,KAAKgB,GAAK2J,EAAS3K,KAAKgB,GAAGb,WAAW,kBACxCwK,EAAS3K,MAAI,aAElB,IAAI4H,MAAM,oCAAD,OAAqC+C,EAAS3K,KAAK4L,OAAO,KAAK,gDACjF,8CA3CL,EA2CK,2CA5BD,WACIC,EACAC,GAAgB,sFACsB,OAAtCC,EAAqB,EAAH,6BAAG,kBAAiB,SAEf,IAAIL,EAAW,CAAChE,MAAO,OAAO3D,KAAK,OAAQ,cAAe,CAC7E8H,MAAAA,EAAOC,SAAAA,EAAUE,YAAaD,IAChC,OAFY,KAARpB,EAAW,EAAH,MAGDgB,GAAI,CAAF,wCACJhB,EAAS3K,MAAI,aAElB,IAAI4H,MAAM,6BAAD,OAA8B+C,EAAS3K,KAAK4L,OAAO,KAAK,2CAC1E,iDA3BL,mFA2BK,EAfkB,CDAiB,WAGpC,WACqBnE,GAhBzB,uGAiBM,cADmBA,QAAAA,EAhBzB,EAgBmD,KAhBnD,OAgBmD,GAhBnD,OAgBmD,iBAhBnD,uFAiBO,CAjBP,YAiBQ,EA8CH,OA/DL,EAiBQ,EAjBR,EAiBQ,oBAjBR,EAiBQ,WAEJ,WACI8D,EACAU,GAAW,4FAqBV,OApBDjM,EAAY,EAAH,kCAAG8F,EAENqF,EAAe,CACjB,eAAgB,mBAChBC,OAAQ,oBAGRlM,KAAKuI,QAAQC,QACbyD,EAAQE,cAAgB,UAAH,OAAanM,KAAKuI,QAAQC,QAG/CO,EAAM/I,KAAKgN,OAAOD,GAClBnB,OAAOhF,EAEP9F,IACI,CAAC,MAAO,UAAUkJ,SAASqC,GAC3BtD,GAAO,IAAIkE,gBAAgBnM,GAAMG,WAEjC2K,EAAOvB,KAAKC,UAAUxJ,IAE7B,SAEoBsL,MAAMrD,EAAK,CAACsD,OAAAA,EAAQT,KAAAA,EAAMK,QAAAA,IAAS,OAI/B,OAJnB7J,EAAS,EAAH,UAGJA,EAAOqK,GAAE,KACLrK,EAAO8K,OAAM,UACT9K,EAAOuJ,OAAM,8CAFzBc,GAAI,EAAF,GACFS,OAAQ,EAAF,GACNpM,KAAM,EAAF,qDAhCR,EAjBR,gLAmDK,oEAED,SAAiBiM,GAAqB,MAClC,OAAO/M,KAAKmN,kBAAkC,QAAjB,EAACnN,KAAKuI,QAAQQ,WAAG,QAAI/I,KAAKoN,YAAc,IAAMpN,KAAKqN,oBAAoBN,EACxG,GAAC,iCAED,SAA4BO,GACxB,OAAOA,EAAKC,QAAQ,OAAQ,GAChC,GAAC,+BAED,SAA0BD,GACtB,OAAOA,EAAKC,QAAQ,OAAQ,GAChC,IA/DJ,mFA+DK,EAnDmC,I","sources":["webpack://PServ/webpack/universalModuleDefinition","webpack://PServ/webpack/bootstrap","webpack://PServ/webpack/runtime/define property getters","webpack://PServ/webpack/runtime/hasOwnProperty shorthand","webpack://PServ/webpack/runtime/make namespace object","webpack://PServ/./src/EventTarget.ts","webpack://PServ/./src/AbstractChatClient.ts","webpack://PServ/./src/IndexedObjectCollection.ts","webpack://PServ/./src/ChatStateTracker.ts","webpack://PServ/./src/WebSocketChatClient.ts","webpack://PServ/./src/WebApiChatClient.ts","webpack://PServ/./src/AbstractRestClient.ts","webpack://PServ/./src/AuthClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PServ\"] = factory();\n\telse\n\t\troot[\"PServ\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\n\nexport interface ObservableInterface<EventT = any> {\n on(eventName: string, handler: EventHandler<EventT>): this;\n once(eventName: string, handler: EventHandler<EventT>): this;\n}\n\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n\n public on(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public emit(eventName: string, event?: EventT): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Ok,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdate,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetUserPermissions,\n SetUserPermissions,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetRolePermissions,\n GetRolePermissions,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage, Envelope,\n} from \"pserv-ts-types\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\n\nexport abstract class AbstractChatClient extends EventTarget {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\n\n public on<EventName extends keyof EventsMap>\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\n return super.on(eventName, handler);\n }\n\n public once<EventName extends keyof EventsMap>\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\n return super.once(eventName, handler);\n }\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[0](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: Error};\n\n/**\n * Map of incoming events.\n */\nexport type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdate: SpaceMemberUpdate,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: [GetSession, EventsMap['Session']],\n SetUserPermissions: [SetUserPermissions, EventsMap['Permissions']],\n GetUserPermissions: [GetUserPermissions, EventsMap['Permissions']],\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\n // Space commands\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\n CreateRole: [CreateRole, EventsMap['NewRole']],\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdate']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdate']],\n SetRolePermissions: [SetRolePermissions, EventsMap['Permissions']],\n GetRolePermissions: [GetRolePermissions, EventsMap['Permissions']],\n // Room commands\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\n CreateRoom: [CreateRoom, EventsMap['NewRoom']],\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\n // Topic commands\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | null {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n let item;\n while (!(item = this.items.entries().next().value).done) {\n if (limit && result.length === limit) {\n break;\n }\n if (item[1][field] === valueToFind) {\n result.set(item);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: ValueT, index: KeyT) => MapT): MapT[] {\n return Array.from(this.items.entries()).map((entry) => callback(entry[1], entry[0]));\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | null {\n return this._items.get(id);\n }\n\n public getAt(index: number): T|null {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: T, index: number, array: T[]) => MapT): MapT[] {\n return this.items.map(callback);\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\ninterface ObservableCollectionEvent<KeyT> {\n setItems?: KeyT[],\n deletedItems?: KeyT[],\n}\n\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => string),\n items: T[] = [],\n ) {\n super(id, items);\n this.eventTarget = new EventTarget();\n }\n\n public set(...items: T[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"./IndexedObjectCollection\";\nimport {\n Message,\n NewMessage,\n NewRole,\n NewRoom,\n NewTopic, Role,\n RoleDeleted,\n Room,\n RoomDeleted,\n RoomJoined,\n RoomLeft, RoomMember,\n RoomMemberJoined,\n RoomMemberLeft,\n RoomMembers, RoomSummary,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft, SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdate,\n SpaceRooms, Topic,\n TopicDeleted, User\n} from \"pserv-ts-types\";\n\ntype Deferred = {resolver: () => void, promise: Promise<void>};\n\nexport class ChatStateTracker {\n private readonly joinedSpaces = new ObservableIndexedObjectCollection<Space>('id');\n private readonly joinedRooms = new ObservableIndexedObjectCollection<Room>('id');\n private readonly spacesRoles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly roomsTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\n\n // lazy loaded collections\n private readonly spacesRooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly spacesMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly roomsMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredGetters = new IndexedCollection<string, Deferred>();\n\n private reconnecting: boolean = false;\n private me: User = null;\n\n public constructor(private readonly client: WebSocketChatClient) {\n this.bind();\n }\n\n public async getMe(): Promise<User> {\n await this.deferredGetterReadiness('session');\n return this.me;\n }\n\n public async getJoinedSpaces(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredGetterReadiness('session');\n return this.joinedSpaces;\n }\n\n public async getJoinedRooms(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredGetterReadiness('session');\n return this.joinedRooms;\n }\n\n public async getSpaceRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null> {\n await this.deferredGetterReadiness('session');\n return this.spacesRoles.get(spaceId);\n }\n\n public async getRoomTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {\n await this.deferredGetterReadiness('session');\n return this.roomsTopics.get(roomId);\n }\n\n public async getTopicMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {\n return this.topicsMessages.get(topicId);\n }\n\n public async getSpaceRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null> {\n const deferredGetterName = `spaces-rooms-${spaceId}`;\n if (!this.spacesRooms.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceRooms', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesRooms.get(spaceId);\n }\n\n public async getSpaceMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null> {\n const deferredGetterName = `spaces-members-${spaceId}`;\n if (!this.spacesMembers.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceMembers', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesMembers.get(spaceId);\n }\n\n public async getRoomMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null> {\n const deferredGetterName = `rooms-members-${roomId}`;\n if (!this.roomsMembers.has(roomId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetRoomMembers', {id: roomId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.roomsMembers.get(roomId);\n }\n\n private async deferredGetterReadiness(name: string): Promise<void> {\n if (this.deferredGetters.has(name)) {\n await this.deferredGetters.get(name)?.promise;\n }\n }\n\n private bind(): void {\n this.client.on(this.client.Event.disconnect, ev => this.handleDisconnect(ev as any as boolean));\n this.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.client.on('NewRole', ev => this.handleNewRole(ev));\n this.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.client.on('Session', ev => this.handleSession(ev));\n this.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\n this.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.client.on('SpaceMemberUpdate', ev => this.handleSpaceMemberUpdate(ev));\n this.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n private createDeferredGetter(name: string): void {\n if (this.deferredGetters.has(name)) {\n return;\n }\n const deferred: Deferred = {promise: undefined, resolver: undefined};\n deferred.promise = new Promise(resolve => deferred.resolver = resolve);\n this.deferredGetters.set([name, deferred]);\n }\n\n private handleDisconnect(reconnect: boolean): void {\n if (reconnect) {\n this.reconnecting = true;\n return;\n }\n }\n\n private handleNewMessage(ev: NewMessage): void {\n this.topicsMessages.get(ev.topicId).set(ev.message);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.set(ev.role);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.spacesRooms.get(ev.spaceId)?.set(ev.summary);\n }\n\n private handleNewTopic(ev: NewTopic): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.set(ev.topic);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.delete(ev.id);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n if (ev.spaceId) {\n this.spacesRooms.get(ev.spaceId).delete(ev.id);\n }\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n this.roomsTopics.set(...rooms.map<[string, ObservableIndexedObjectCollection<Topic>]>(room => [\n room.id,\n new ObservableIndexedObjectCollection<Topic>('id', room.topics)\n ]));\n this.joinedRooms.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (!this.roomsMembers.has(ev.id)) {\n this.roomsMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member?.user.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n this.deferredGetters.get(`rooms-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSession(ev: Session): void {\n this.me = ev.user;\n\n if (this.me && !this.reconnecting) {\n return;\n }\n\n this.reconnecting = false;\n\n this.joinedRooms.deleteAll();\n this.roomsTopics.deleteAll();\n this.roomsMembers.deleteAll();\n this.joinedSpaces.deleteAll();\n this.spacesRoles.deleteAll();\n this.spacesRooms.deleteAll();\n this.spacesMembers.deleteAll();\n\n this.addJoinedRooms(...ev.state.rooms);\n this.addJoinedSpaces(...ev.state.spaces);\n\n this.deferredGetters.get('session')?.resolver();\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n \n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.spacesRoles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.joinedSpaces.set(...spaces);\n }\n\n private handleSpaceLeft(ev: SpaceLeft): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (!this.spacesMembers.has(ev.id)) {\n this.spacesMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n this.deferredGetters.get(`spaces-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (!this.spacesRooms.has(ev.id)) {\n this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n this.deferredGetters.get(`spaces-rooms-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceMemberUpdate(ev: SpaceMemberUpdate): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.delete(ev.id);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: [commandType: keyof CommandsMap, commandData: any][] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void];\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n }\n\n public async connect(): Promise<void> {\n const authString = this.options.token ? `token=${this.options.token}` : `nick=${this.options.temporaryNick}`;\n this.ws = new WebSocket(`${this.options.url}?${authString}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n return new Promise((...args) => this.authenticatedResolvers = args);\n }\n\n public disconnect(): void {\n this.sendQueue = [];\n this.ws?.close();\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n if (!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState)) {\n throw new Error('Cannot send; close or closing connection state');\n }\n\n if (this.ws.readyState === this.ws.CONNECTING || !this.authenticated) {\n this.sendQueue.push([commandType, commandData] as any);\n return;\n }\n\n if (this.ws.readyState !== this.ws.OPEN) {\n throw new Error(`Invalid websocket state=${this.ws.readyState}`);\n }\n\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\n this.ws.send(JSON.stringify(envelope));\n return this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n }\n\n private onMessage(event: MessageEvent): void {\n const envelope: Envelope = JSON.parse(event.data);\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Error';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.authenticatedResolvers[0]();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.authenticatedResolvers[1](envelope.data);\n }\n }\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope);\n this.emit(this.Event.message, envelope);\n }\n\n private onClose(event: CloseEvent): void {\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n if (reconnect) {\n this.connect();\n }\n this.emit(this.Event.disconnect, reconnect);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const data = this.sendQueue[dataIndex];\n setTimeout(() => this.send(...data), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"pserv-ts-types\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n const envelope = this.createEnvelope(commandType, commandData);\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\n this.makeApiCall(this.sendStack.length - 1);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests\n this.sendStack.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.awaitingResponse.delete(item.data.ref);\n });\n this.sendStack = [];\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(reqId: number, response: Response): Promise<void> {\n this.sendStack.splice(reqId, 1);\n const envelope: Envelope = await response.json();\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(reqId: number, body: string): void {\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\n this.sendStack.splice(reqId, 1);\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n this.sendStack[reqId].lastTimeoutId = setTimeout(\n () => this.makeApiCall(reqId),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(reqId: number): void {\n this.sendStack[reqId].attempts++;\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n } else if (this.options.temporaryNick) {\n headers.Authorization = `Temp ${this.options.temporaryNick}`;\n }\n\n fetch(this.options.url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(reqId, response))\n .catch(() => this.onError(reqId, bodyJson));\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined\n ): Promise<RestClientResponse<ResponseT>> {\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const result = await fetch(url, {method, body, headers});\n\n return {\n ok: result.ok,\n status: result.status,\n data: await result.json(),\n };\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\n\nexport interface TokenInterface {\n token: string,\n expiration: string\n}\n\nexport interface MyAccountInterface {\n id: string;\n nick: string;\n avatar: string;\n}\n\nexport class AuthClient extends AbstractRestClient {\n protected defaultUrl: string = 'https://polfan.pl/webservice';\n\n public static async createToken(\n login: string,\n password: string,\n clientName: string = 'pserv-js-client'\n ): Promise<TokenInterface> {\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\n login, password, client_name: clientName\n });\n if (response.ok) {\n return response.data;\n }\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\n }\n\n public async deleteToken(token: string): Promise<void> {\n const response = await this.send('DELETE', `auth/tokens/${token}`);\n if (!response.ok) {\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\n }\n }\n\n public async getMe(): Promise<MyAccountInterface> {\n const response = await this.send('GET', 'auth/me');\n if (response.ok) {\n response.data.id = response.data.id.toString();\n return response.data;\n }\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\n }\n}"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","Map","eventName","handler","this","addHandler","events","onceEvents","event","callHandlers","map","handlers","push","set","forEach","callback","AbstractChatClient","type","data","ref","sentCounter","toString","envelope","Promise","args","awaitingResponse","has","isError","error","IndexedCollection","items","_items","size","item","id","ids","clear","field","valueToFind","limit","result","entries","next","done","length","Array","from","entry","IndexedObjectCollection","values","getId","index","deleteAll","ObservableIndexedCollection","eventTarget","emit","setItems","deletedItems","keys","on","once","ObservableIndexedObjectCollection","i","WebSocketChatClientEvent","ChatStateTracker","client","bind","deferredGetterReadiness","me","joinedSpaces","joinedRooms","spaceId","spacesRoles","roomId","roomsTopics","topicId","topicsMessages","deferredGetterName","spacesRooms","deferredGetters","createDeferredGetter","send","spacesMembers","roomsMembers","name","promise","Event","disconnect","ev","handleDisconnect","handleNewMessage","handleNewRole","handleNewRoom","handleNewTopic","handleRoleDeleted","handleRoomDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleSession","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdate","handleTopicDeleted","deferred","undefined","resolver","resolve","reconnect","reconnecting","message","collection","role","roles","summary","topic","topics","addJoinedRooms","room","rooms","member","userId","user","spaceMember","members","state","addJoinedSpaces","spaces","space","summaries","WebApiChatClientEvent","WebSocketChatClient","options","token","temporaryNick","Error","stateTracking","authString","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","sendQueue","close","commandType","commandData","CLOSED","CLOSING","includes","readyState","CONNECTING","OPEN","createEnvelope","JSON","stringify","createPromiseFromCommandEnvelope","parse","isAuthenticated","connect","sendFromQueue","handleIncomingEnvelope","clearTimeout","code","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","splice","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","then","onError","AuthClient","ok","errors","login","password","clientName","client_name","uri","getUrl","URLSearchParams","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://PServ/webpack/universalModuleDefinition","webpack://PServ/webpack/bootstrap","webpack://PServ/webpack/runtime/define property getters","webpack://PServ/webpack/runtime/hasOwnProperty shorthand","webpack://PServ/webpack/runtime/make namespace object","webpack://PServ/./src/EventTarget.ts","webpack://PServ/./src/AbstractChatClient.ts","webpack://PServ/./src/IndexedObjectCollection.ts","webpack://PServ/./src/ChatStateTracker.ts","webpack://PServ/./src/WebSocketChatClient.ts","webpack://PServ/./src/WebApiChatClient.ts","webpack://PServ/./src/AbstractRestClient.ts","webpack://PServ/./src/AuthClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PServ\"] = factory();\n\telse\n\t\troot[\"PServ\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap<EventT> = Map<string, EventHandler<EventT>[]>;\n\nexport interface ObservableInterface<EventT = any> {\n on(eventName: string, handler: EventHandler<EventT>): this;\n once(eventName: string, handler: EventHandler<EventT>): this;\n}\n\nexport class EventTarget<EventT = any> implements ObservableInterface<EventT> {\n protected events: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n protected onceEvents: HandlersMap<EventT> = new Map<string, EventHandler<EventT>[]>();\n\n public on(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once(eventName: string, handler: EventHandler<EventT>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public emit(eventName: string, event?: EventT): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap<EventT>, eventName: string, handler: EventHandler<EventT>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap<EventT>, eventName: string, event: EventT): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Ok,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdate,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetUserPermissions,\n SetUserPermissions,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetRolePermissions,\n GetRolePermissions,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage, Envelope,\n} from \"pserv-ts-types\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\n\nexport abstract class AbstractChatClient extends EventTarget {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandsMap[CommandType][0]): Promise<CommandResult<CommandsMap[CommandType][1]>>;\n\n public on<EventName extends keyof EventsMap>\n (eventName: EventName | string, handler: (event: EventsMap[EventName]) => void): this {\n return super.on(eventName, handler);\n }\n\n public once<EventName extends keyof EventsMap>\n (eventName: EventName, handler: (event: EventsMap[EventName]) => void): this {\n return super.once(eventName, handler);\n }\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandsMap[CommandT][0]>):\n Promise<CommandResult<CommandsMap[CommandT][1]>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[0](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: Error};\n\n/**\n * Map of incoming events.\n */\nexport type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n // Space events\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdate: SpaceMemberUpdate,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoomDeleted,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: [GetSession, EventsMap['Session']],\n SetUserPermissions: [SetUserPermissions, EventsMap['Permissions']],\n GetUserPermissions: [GetUserPermissions, EventsMap['Permissions']],\n GetComputedPermissions: [GetComputedPermissions, EventsMap['Permissions']],\n // Space commands\n JoinSpace: [JoinSpace, EventsMap['SpaceJoined']],\n LeaveSpace: [LeaveSpace, EventsMap['SpaceLeft']],\n CreateSpace: [CreateSpace, EventsMap['SpaceJoined']],\n DeleteSpace: [DeleteSpace, EventsMap['SpaceDeleted']],\n GetSpaceMembers: [GetSpaceMembers, EventsMap['SpaceMembers']],\n GetSpaceRooms: [GetSpaceRooms, EventsMap['SpaceRooms']],\n CreateRole: [CreateRole, EventsMap['NewRole']],\n DeleteRole: [DeleteRole, EventsMap['RoleDeleted']],\n AssignRole: [AssignRole, EventsMap['SpaceMemberUpdate']],\n DeassignRole: [DeassignRole, EventsMap['SpaceMemberUpdate']],\n SetRolePermissions: [SetRolePermissions, EventsMap['Permissions']],\n GetRolePermissions: [GetRolePermissions, EventsMap['Permissions']],\n // Room commands\n JoinRoom: [JoinRoom, EventsMap['RoomJoined']],\n LeaveRoom: [LeaveRoom, EventsMap['RoomLeft']],\n CreateRoom: [CreateRoom, EventsMap['NewRoom']],\n DeleteRoom: [DeleteRoom, EventsMap['RoomDeleted']],\n GetRoomMembers: [GetRoomMembers, EventsMap['RoomMembers']],\n // Topic commands\n CreateTopic: [CreateTopic, EventsMap['NewTopic']],\n DeleteTopic: [DeleteTopic, EventsMap['TopicDeleted']],\n CreateMessage: [CreateMessage, EventsMap['NewMessage']],\n}","import {EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | null {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = null): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n let item;\n while (!(item = this.items.entries().next().value).done) {\n if (limit && result.length === limit) {\n break;\n }\n if (item[1][field] === valueToFind) {\n result.set(item);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: ValueT, index: KeyT) => MapT): MapT[] {\n return Array.from(this.items.entries()).map((entry) => callback(entry[1], entry[0]));\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | null {\n return this._items.get(id);\n }\n\n public getAt(index: number): T|null {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public map<MapT = any>(callback: (item: T, index: number, array: T[]) => MapT): MapT[] {\n return this.items.map(callback);\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\ninterface ObservableCollectionEvent<KeyT> {\n setItems?: KeyT[],\n deletedItems?: KeyT[],\n}\n\nexport class ObservableIndexedCollection<KeyT, ValueT> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<KeyT>>;\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => item[0])});\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<KeyT>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<T> extends IndexedObjectCollection<T> implements ObservableInterface {\n protected eventTarget: EventTarget<ObservableCollectionEvent<string>>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => string),\n items: T[] = [],\n ) {\n super(id, items);\n this.eventTarget = new EventTarget();\n }\n\n public set(...items: T[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', {setItems: items.map(item => this.getId(item))});\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', {deletedItems: ids});\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this._items.items.keys();\n super.deleteAll();\n this.eventTarget.emit('change', {deletedItems: Array.from(ids)});\n }\n }\n\n public on(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once(eventName: 'change', handler: (ev?: ObservableCollectionEvent<string>) => void): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n}","import {WebSocketChatClient} from \"./WebSocketChatClient\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"./IndexedObjectCollection\";\nimport {\n Message,\n NewMessage,\n NewRole,\n NewRoom,\n NewTopic, Role,\n RoleDeleted,\n Room,\n RoomDeleted,\n RoomJoined,\n RoomLeft, RoomMember,\n RoomMemberJoined,\n RoomMemberLeft,\n RoomMembers, RoomSummary,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft, SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdate,\n SpaceRooms, Topic,\n TopicDeleted, User\n} from \"pserv-ts-types\";\n\ntype Deferred = {resolver: () => void, promise: Promise<void>};\n\nexport class ChatStateTracker {\n private readonly joinedSpaces = new ObservableIndexedObjectCollection<Space>('id');\n private readonly joinedRooms = new ObservableIndexedObjectCollection<Room>('id');\n private readonly spacesRoles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly roomsTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n // Temporary not lazy loaded; server must implement GetTopicMessages command.\n private readonly topicsMessages = new IndexedCollection<string, ObservableIndexedObjectCollection<Message>>();\n\n // lazy loaded collections\n private readonly spacesRooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly spacesMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly roomsMembers = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredGetters = new IndexedCollection<string, Deferred>();\n\n private reconnecting: boolean = false;\n private me: User = null;\n\n public constructor(private readonly client: WebSocketChatClient) {\n this.bind();\n }\n\n public async getMe(): Promise<User> {\n await this.deferredGetterReadiness('session');\n return this.me;\n }\n\n public async getJoinedSpaces(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredGetterReadiness('session');\n return this.joinedSpaces;\n }\n\n public async getJoinedRooms(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredGetterReadiness('session');\n return this.joinedRooms;\n }\n\n public async getSpaceRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | null> {\n await this.deferredGetterReadiness('session');\n return this.spacesRoles.get(spaceId);\n }\n\n public async getRoomTopics(roomId: string): Promise<ObservableIndexedObjectCollection<Topic> | null> {\n await this.deferredGetterReadiness('session');\n return this.roomsTopics.get(roomId);\n }\n\n public async getTopicMessages(topicId: string): Promise<ObservableIndexedObjectCollection<Message> | null> {\n return this.topicsMessages.get(topicId);\n }\n\n public async getSpaceRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | null> {\n const deferredGetterName = `spaces-rooms-${spaceId}`;\n if (!this.spacesRooms.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceRooms', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesRooms.get(spaceId);\n }\n\n public async getSpaceMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | null> {\n const deferredGetterName = `spaces-members-${spaceId}`;\n if (!this.spacesMembers.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetSpaceMembers', {id: spaceId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.spacesMembers.get(spaceId);\n }\n\n public async getRoomMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | null> {\n const deferredGetterName = `rooms-members-${roomId}`;\n if (!this.roomsMembers.has(roomId) && !this.deferredGetters.has(deferredGetterName)) {\n this.createDeferredGetter(deferredGetterName);\n this.client.send('GetRoomMembers', {id: roomId});\n }\n await this.deferredGetterReadiness(deferredGetterName);\n return this.roomsMembers.get(roomId);\n }\n\n private async deferredGetterReadiness(name: string): Promise<void> {\n if (this.deferredGetters.has(name)) {\n await this.deferredGetters.get(name)?.promise;\n }\n }\n\n private bind(): void {\n this.client.on(this.client.Event.disconnect, ev => this.handleDisconnect(ev as any as boolean));\n this.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.client.on('NewRole', ev => this.handleNewRole(ev));\n this.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.client.on('Session', ev => this.handleSession(ev));\n this.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.client.on('SpaceLeft', ev => this.handleSpaceLeft(ev));\n this.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.client.on('SpaceMemberUpdate', ev => this.handleSpaceMemberUpdate(ev));\n this.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n private createDeferredGetter(name: string): void {\n if (this.deferredGetters.has(name)) {\n return;\n }\n const deferred: Deferred = {promise: undefined, resolver: undefined};\n deferred.promise = new Promise(resolve => deferred.resolver = resolve);\n this.deferredGetters.set([name, deferred]);\n }\n\n private handleDisconnect(reconnect: boolean): void {\n if (reconnect) {\n this.reconnecting = true;\n return;\n }\n }\n\n private handleNewMessage(ev: NewMessage): void {\n this.topicsMessages.get(ev.topicId).set(ev.message);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.set(ev.role);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.spacesRooms.get(ev.spaceId)?.set(ev.summary);\n }\n\n private handleNewTopic(ev: NewTopic): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.set(ev.topic);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.spacesRoles.get(ev.spaceId);\n collection.delete(ev.id);\n this.joinedSpaces.get(ev.spaceId).roles = collection.items;\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n if (ev.spaceId) {\n this.spacesRooms.get(ev.spaceId).delete(ev.id);\n }\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n this.roomsTopics.set(...rooms.map<[string, ObservableIndexedObjectCollection<Topic>]>(room => [\n room.id,\n new ObservableIndexedObjectCollection<Topic>('id', room.topics)\n ]));\n this.joinedRooms.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.joinedRooms.delete(ev.id);\n this.roomsMembers.delete(ev.id);\n this.roomsTopics.delete(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.roomsMembers.has(ev.roomId)) {\n this.roomsMembers.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (!this.roomsMembers.has(ev.id)) {\n this.roomsMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member?.user.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n this.deferredGetters.get(`rooms-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSession(ev: Session): void {\n this.me = ev.user;\n\n if (this.me && !this.reconnecting) {\n return;\n }\n\n this.reconnecting = false;\n\n this.joinedRooms.deleteAll();\n this.roomsTopics.deleteAll();\n this.roomsMembers.deleteAll();\n this.joinedSpaces.deleteAll();\n this.spacesRoles.deleteAll();\n this.spacesRooms.deleteAll();\n this.spacesMembers.deleteAll();\n\n this.addJoinedRooms(...ev.state.rooms);\n this.addJoinedSpaces(...ev.state.spaces);\n\n this.deferredGetters.get('session')?.resolver();\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n \n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.spacesRoles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.joinedSpaces.set(...spaces);\n }\n\n private handleSpaceLeft(ev: SpaceLeft): void {\n this.spacesRoles.delete(ev.id);\n this.spacesMembers.delete(ev.id);\n this.spacesRooms.delete(ev.id);\n this.joinedSpaces.delete(ev.id);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (!this.spacesMembers.has(ev.id)) {\n this.spacesMembers.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n this.deferredGetters.get(`spaces-members-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (!this.spacesRooms.has(ev.id)) {\n this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n this.deferredGetters.get(`spaces-rooms-${ev.id}`)?.resolver();\n }\n }\n\n private handleSpaceMemberUpdate(ev: SpaceMemberUpdate): void {\n if (this.spacesMembers.has(ev.spaceId)) {\n this.spacesMembers.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.roomsTopics.get(ev.roomId);\n collection.delete(ev.id);\n this.joinedRooms.get(ev.roomId).topics = collection.items;\n }\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {Envelope} from \"pserv-ts-types\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\nexport class WebSocketChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: [commandType: keyof CommandsMap, commandData: any][] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void];\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n }\n\n public async connect(): Promise<void> {\n const authString = this.options.token ? `token=${this.options.token}` : `nick=${this.options.temporaryNick}`;\n this.ws = new WebSocket(`${this.options.url}?${authString}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n return new Promise((...args) => this.authenticatedResolvers = args);\n }\n\n public disconnect(): void {\n this.sendQueue = [];\n this.ws?.close();\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n if (!this.ws || [this.ws.CLOSED, this.ws.CLOSING].includes(this.ws.readyState)) {\n throw new Error('Cannot send; close or closing connection state');\n }\n\n if (this.ws.readyState === this.ws.CONNECTING || !this.authenticated) {\n this.sendQueue.push([commandType, commandData] as any);\n return;\n }\n\n if (this.ws.readyState !== this.ws.OPEN) {\n throw new Error(`Invalid websocket state=${this.ws.readyState}`);\n }\n\n const envelope = this.createEnvelope<CommandsMap[CommandType][0]>(commandType, commandData);\n this.ws.send(JSON.stringify(envelope));\n return this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n }\n\n private onMessage(event: MessageEvent): void {\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Error';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.authenticatedResolvers[0]();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.authenticatedResolvers[1](envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n if (reconnect) {\n this.connect();\n }\n this.emit(this.Event.disconnect, reconnect);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const data = this.sendQueue[dataIndex];\n setTimeout(() => this.send(...data), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n}","import {AbstractChatClient, CommandResult, CommandsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"pserv-ts-types\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token?: string;\n temporaryNick?: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\nexport class WebApiChatClient extends AbstractChatClient implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: {data: any, attempts: number, lastTimeoutId: any}[];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n if (!this.options.token && !this.options.temporaryNick) {\n throw new Error('Token or temporary nick is required');\n }\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandsMap[CommandType][0]):\n Promise<CommandResult<CommandsMap[CommandType][1]>> {\n const envelope = this.createEnvelope(commandType, commandData);\n this.sendStack.push({data: envelope, attempts: 0, lastTimeoutId: null});\n this.makeApiCall(this.sendStack.length - 1);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests\n this.sendStack.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.awaitingResponse.delete(item.data.ref);\n });\n this.sendStack = [];\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(reqId: number, response: Response): Promise<void> {\n this.sendStack.splice(reqId, 1);\n const envelope: Envelope = await response.json();\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(reqId: number, body: string): void {\n if (this.sendStack[reqId].attempts >= (this.options.attemptsToSend ?? 10)) {\n this.sendStack.splice(reqId, 1);\n this.handleEnvelopeSendError(this.sendStack[reqId].data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n this.sendStack[reqId].lastTimeoutId = setTimeout(\n () => this.makeApiCall(reqId),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(reqId: number): void {\n this.sendStack[reqId].attempts++;\n const bodyJson = JSON.stringify(this.sendStack[reqId].data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n } else if (this.options.temporaryNick) {\n headers.Authorization = `Temp ${this.options.temporaryNick}`;\n }\n\n fetch(this.options.url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(reqId, response))\n .catch(() => this.onError(reqId, bodyJson));\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined\n ): Promise<RestClientResponse<ResponseT>> {\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const result = await fetch(url, {method, body, headers});\n\n return {\n ok: result.ok,\n status: result.status,\n data: await result.json(),\n };\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient} from \"./AbstractRestClient\";\n\nexport interface TokenInterface {\n token: string,\n expiration: string\n}\n\nexport interface MyAccountInterface {\n id: string;\n nick: string;\n avatar: string;\n}\n\nexport class AuthClient extends AbstractRestClient {\n protected defaultUrl: string = 'https://polfan.pl/webservice';\n\n public static async createToken(\n login: string,\n password: string,\n clientName: string = 'pserv-js-client'\n ): Promise<TokenInterface> {\n const response = await new AuthClient({token: null}).send('POST', 'auth/tokens', {\n login, password, client_name: clientName\n });\n if (response.ok) {\n return response.data;\n }\n throw new Error(`Cannot create user token: ${response.data.errors[0]}`);\n }\n\n public async deleteToken(token: string): Promise<void> {\n const response = await this.send('DELETE', `auth/tokens/${token}`);\n if (!response.ok) {\n throw new Error(`Cannot delete access token: ${response.data.errors[0]}`);\n }\n }\n\n public async getMe(): Promise<MyAccountInterface> {\n const response = await this.send('GET', 'auth/me');\n if (response.ok) {\n response.data.id = response.data.id.toString();\n return response.data;\n }\n throw new Error(`Cannot get current user account: ${response.data.errors[0]}`);\n }\n}"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","Map","eventName","handler","this","addHandler","events","onceEvents","event","callHandlers","map","handlers","push","set","forEach","callback","AbstractChatClient","type","data","ref","sentCounter","toString","envelope","Promise","args","awaitingResponse","has","isError","error","IndexedCollection","items","_items","size","item","id","ids","clear","field","valueToFind","limit","result","entries","next","done","length","Array","from","entry","IndexedObjectCollection","values","getId","index","deleteAll","ObservableIndexedCollection","eventTarget","emit","setItems","deletedItems","keys","on","once","ObservableIndexedObjectCollection","i","WebSocketChatClientEvent","ChatStateTracker","client","bind","deferredGetterReadiness","me","joinedSpaces","joinedRooms","spaceId","spacesRoles","roomId","roomsTopics","topicId","topicsMessages","deferredGetterName","spacesRooms","deferredGetters","createDeferredGetter","send","spacesMembers","roomsMembers","name","promise","Event","disconnect","ev","handleDisconnect","handleNewMessage","handleNewRole","handleNewRoom","handleNewTopic","handleRoleDeleted","handleRoomDeleted","handleRoomJoined","handleRoomLeft","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleSession","handleSpaceDeleted","handleSpaceJoined","handleSpaceLeft","handleSpaceMemberJoined","handleSpaceMemberLeft","handleSpaceMembers","handleSpaceRooms","handleSpaceMemberUpdate","handleTopicDeleted","deferred","undefined","resolver","resolve","reconnect","reconnecting","message","collection","role","roles","summary","topic","topics","addJoinedRooms","room","rooms","member","userId","user","spaceMember","members","state","addJoinedSpaces","spaces","space","summaries","WebApiChatClientEvent","WebSocketChatClient","options","token","temporaryNick","Error","stateTracking","authString","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","authenticatedResolvers","sendQueue","close","commandType","commandData","CLOSED","CLOSING","includes","readyState","CONNECTING","OPEN","createEnvelope","JSON","stringify","createPromiseFromCommandEnvelope","parse","handleIncomingEnvelope","isAuthenticated","connect","sendFromQueue","clearTimeout","code","lastDelay","dataIndex","awaitQueueSendDelayMs","WebApiChatClient","sendStack","attempts","lastTimeoutId","makeApiCall","destroy","reqId","response","splice","json","body","attemptsToSend","handleEnvelopeSendError","attemptDelayMs","bodyJson","headers","Accept","Authorization","fetch","method","then","onError","AuthClient","ok","errors","login","password","clientName","client_name","uri","getUrl","URLSearchParams","status","removeEndingSlash","defaultUrl","removeStartingSlash","text","replace"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polfan-server-js-client",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "JavaScript client library for handling communication with Polfan chat server.",
5
5
  "author": "Jarosław Żak",
6
6
  "license": "MIT",
@@ -80,6 +80,10 @@ export class WebSocketChatClient extends AbstractChatClient implements Observabl
80
80
 
81
81
  private onMessage(event: MessageEvent): void {
82
82
  const envelope: Envelope = JSON.parse(event.data);
83
+ this.handleIncomingEnvelope(envelope);
84
+ this.emit(envelope.type, envelope);
85
+ this.emit(this.Event.message, envelope);
86
+
83
87
  // Login successfully
84
88
  if (!this.authenticated) {
85
89
  const isAuthenticated = envelope.type !== 'Error';
@@ -92,9 +96,6 @@ export class WebSocketChatClient extends AbstractChatClient implements Observabl
92
96
  this.authenticatedResolvers[1](envelope.data);
93
97
  }
94
98
  }
95
- this.handleIncomingEnvelope(envelope);
96
- this.emit(envelope.type, envelope);
97
- this.emit(this.Event.message, envelope);
98
99
  }
99
100
 
100
101
  private onClose(event: CloseEvent): void {