polfan-server-js-client 0.1.24 → 0.1.25

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
@@ -54,6 +54,7 @@ __webpack_require__.d(__webpack_exports__, {
54
54
  "IndexedObjectCollection": () => (/* reexport */ IndexedObjectCollection),
55
55
  "ObservableIndexedCollection": () => (/* reexport */ ObservableIndexedCollection),
56
56
  "ObservableIndexedObjectCollection": () => (/* reexport */ ObservableIndexedObjectCollection),
57
+ "Permission": () => (/* reexport */ Permission),
57
58
  "WebApiChatClient": () => (/* reexport */ WebApiChatClient),
58
59
  "WebSocketChatClient": () => (/* reexport */ WebSocketChatClient)
59
60
  });
@@ -561,106 +562,187 @@ var ObservableIndexedObjectCollection = /*#__PURE__*/function (_IndexedObjectCol
561
562
  }]);
562
563
  return ObservableIndexedObjectCollection;
563
564
  }(IndexedObjectCollection);
564
- ;// CONCATENATED MODULE: ./src/ChatStateTracker.ts
565
- function ChatStateTracker_typeof(obj) { "@babel/helpers - typeof"; return ChatStateTracker_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, ChatStateTracker_typeof(obj); }
566
- function ChatStateTracker_toConsumableArray(arr) { return ChatStateTracker_arrayWithoutHoles(arr) || ChatStateTracker_iterableToArray(arr) || ChatStateTracker_unsupportedIterableToArray(arr) || ChatStateTracker_nonIterableSpread(); }
567
- function ChatStateTracker_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
568
- function ChatStateTracker_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return ChatStateTracker_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return ChatStateTracker_arrayLikeToArray(o, minLen); }
569
- function ChatStateTracker_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
570
- function ChatStateTracker_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return ChatStateTracker_arrayLikeToArray(arr); }
571
- function ChatStateTracker_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
572
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == ChatStateTracker_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
565
+ ;// CONCATENATED MODULE: ./src/state-tracker/DeferredTask.ts
566
+ function DeferredTask_typeof(obj) { "@babel/helpers - typeof"; return DeferredTask_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, DeferredTask_typeof(obj); }
567
+ function DeferredTask_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, DeferredTask_toPropertyKey(descriptor.key), descriptor); } }
568
+ function DeferredTask_createClass(Constructor, protoProps, staticProps) { if (protoProps) DeferredTask_defineProperties(Constructor.prototype, protoProps); if (staticProps) DeferredTask_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
569
+ function DeferredTask_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
570
+ function DeferredTask_defineProperty(obj, key, value) { key = DeferredTask_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
571
+ function DeferredTask_toPropertyKey(arg) { var key = DeferredTask_toPrimitive(arg, "string"); return DeferredTask_typeof(key) === "symbol" ? key : String(key); }
572
+ function DeferredTask_toPrimitive(input, hint) { if (DeferredTask_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (DeferredTask_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
573
+ var DeferredTask = /*#__PURE__*/DeferredTask_createClass(function DeferredTask() {
574
+ var _this = this;
575
+ DeferredTask_classCallCheck(this, DeferredTask);
576
+ DeferredTask_defineProperty(this, "promise", void 0);
577
+ DeferredTask_defineProperty(this, "resolve", void 0);
578
+ this.promise = new Promise(function (resolve) {
579
+ return _this.resolve = resolve;
580
+ });
581
+ });
582
+ ;// CONCATENATED MODULE: ./src/state-tracker/RoomsManager.ts
583
+ function RoomsManager_typeof(obj) { "@babel/helpers - typeof"; return RoomsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, RoomsManager_typeof(obj); }
584
+ function RoomsManager_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = RoomsManager_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
585
+ function RoomsManager_toConsumableArray(arr) { return RoomsManager_arrayWithoutHoles(arr) || RoomsManager_iterableToArray(arr) || RoomsManager_unsupportedIterableToArray(arr) || RoomsManager_nonIterableSpread(); }
586
+ function RoomsManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
587
+ function RoomsManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return RoomsManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return RoomsManager_arrayLikeToArray(o, minLen); }
588
+ function RoomsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
589
+ function RoomsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return RoomsManager_arrayLikeToArray(arr); }
590
+ function RoomsManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
591
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == RoomsManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
573
592
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
574
593
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
575
- function ChatStateTracker_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
576
- function ChatStateTracker_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ChatStateTracker_toPropertyKey(descriptor.key), descriptor); } }
577
- function ChatStateTracker_createClass(Constructor, protoProps, staticProps) { if (protoProps) ChatStateTracker_defineProperties(Constructor.prototype, protoProps); if (staticProps) ChatStateTracker_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
578
- function ChatStateTracker_defineProperty(obj, key, value) { key = ChatStateTracker_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
579
- function ChatStateTracker_toPropertyKey(arg) { var key = ChatStateTracker_toPrimitive(arg, "string"); return ChatStateTracker_typeof(key) === "symbol" ? key : String(key); }
580
- function ChatStateTracker_toPrimitive(input, hint) { if (ChatStateTracker_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (ChatStateTracker_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
594
+ function RoomsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
595
+ function RoomsManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, RoomsManager_toPropertyKey(descriptor.key), descriptor); } }
596
+ function RoomsManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) RoomsManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) RoomsManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
597
+ function RoomsManager_defineProperty(obj, key, value) { key = RoomsManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
598
+ function RoomsManager_toPropertyKey(arg) { var key = RoomsManager_toPrimitive(arg, "string"); return RoomsManager_typeof(key) === "symbol" ? key : String(key); }
599
+ function RoomsManager_toPrimitive(input, hint) { if (RoomsManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (RoomsManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
581
600
 
582
- var ChatStateTracker = /*#__PURE__*/function () {
583
- // Temporary not lazy loaded; server must implement GetTopicMessages command.
584
601
 
585
- // lazy loaded collections
602
+ var RoomsManager = /*#__PURE__*/function () {
603
+ // Temporary not lazy loaded; server must implement GetTopicMessages command.
586
604
 
587
- function ChatStateTracker(client) {
588
- ChatStateTracker_classCallCheck(this, ChatStateTracker);
589
- this.client = client;
590
- ChatStateTracker_defineProperty(this, "joinedSpaces", new ObservableIndexedObjectCollection('id'));
591
- ChatStateTracker_defineProperty(this, "joinedRooms", new ObservableIndexedObjectCollection('id'));
592
- ChatStateTracker_defineProperty(this, "spacesRoles", new IndexedCollection());
593
- ChatStateTracker_defineProperty(this, "roomsTopics", new IndexedCollection());
594
- ChatStateTracker_defineProperty(this, "topicsMessages", new IndexedCollection());
595
- ChatStateTracker_defineProperty(this, "spacesRooms", new IndexedCollection());
596
- ChatStateTracker_defineProperty(this, "spacesMembers", new IndexedCollection());
597
- ChatStateTracker_defineProperty(this, "roomsMembers", new IndexedCollection());
598
- ChatStateTracker_defineProperty(this, "deferredGetters", new IndexedCollection());
599
- ChatStateTracker_defineProperty(this, "reconnecting", false);
600
- ChatStateTracker_defineProperty(this, "me", null);
601
- this.createDeferredGetter('session');
602
- this.bind();
605
+ function RoomsManager(tracker) {
606
+ var _this = this;
607
+ RoomsManager_classCallCheck(this, RoomsManager);
608
+ this.tracker = tracker;
609
+ RoomsManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
610
+ RoomsManager_defineProperty(this, "topics", new IndexedCollection());
611
+ RoomsManager_defineProperty(this, "topicsMessages", new IndexedCollection());
612
+ RoomsManager_defineProperty(this, "members", new IndexedCollection());
613
+ RoomsManager_defineProperty(this, "deferredSession", new DeferredTask());
614
+ this.tracker.client.on('NewMessage', function (ev) {
615
+ return _this.handleNewMessage(ev);
616
+ });
617
+ this.tracker.client.on('NewTopic', function (ev) {
618
+ return _this.handleNewTopic(ev);
619
+ });
620
+ this.tracker.client.on('TopicDeleted', function (ev) {
621
+ return _this.handleTopicDeleted(ev);
622
+ });
623
+ this.tracker.client.on('RoomJoined', function (ev) {
624
+ return _this.handleRoomJoined(ev);
625
+ });
626
+ this.tracker.client.on('RoomLeft', function (ev) {
627
+ return _this.handleRoomLeft(ev);
628
+ });
629
+ this.tracker.client.on('RoomMemberJoined', function (ev) {
630
+ return _this.handleRoomMemberJoined(ev);
631
+ });
632
+ this.tracker.client.on('RoomMemberLeft', function (ev) {
633
+ return _this.handleRoomMemberLeft(ev);
634
+ });
635
+ this.tracker.client.on('RoomMembers', function (ev) {
636
+ return _this.handleRoomMembers(ev);
637
+ });
638
+ this.tracker.client.on('RoomMemberUpdated', function (ev) {
639
+ return _this.handleRoomMemberUpdated(ev);
640
+ });
641
+ this.tracker.client.on('Session', function (ev) {
642
+ return _this.handleSession(ev);
643
+ });
603
644
  }
604
- ChatStateTracker_createClass(ChatStateTracker, [{
605
- key: "getMe",
645
+
646
+ /**
647
+ * Get collection of room members.
648
+ */
649
+ RoomsManager_createClass(RoomsManager, [{
650
+ key: "getMembers",
606
651
  value: function () {
607
- var _getMe = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
652
+ var _getMembers = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(roomId) {
653
+ var result;
608
654
  return _regeneratorRuntime().wrap(function _callee$(_context) {
609
655
  while (1) {
610
656
  switch (_context.prev = _context.next) {
611
657
  case 0:
612
- _context.next = 2;
613
- return this.deferredGetterReadiness('session');
614
- case 2:
615
- return _context.abrupt("return", this.me);
658
+ if (this.members.has(roomId)) {
659
+ _context.next = 7;
660
+ break;
661
+ }
662
+ _context.next = 3;
663
+ return this.tracker.client.send('GetRoomMembers', {
664
+ id: roomId
665
+ });
616
666
  case 3:
667
+ result = _context.sent;
668
+ if (!result.error) {
669
+ _context.next = 6;
670
+ break;
671
+ }
672
+ throw result.error;
673
+ case 6:
674
+ this.handleRoomMembers(result.data);
675
+ case 7:
676
+ return _context.abrupt("return", this.members.get(roomId));
677
+ case 8:
617
678
  case "end":
618
679
  return _context.stop();
619
680
  }
620
681
  }
621
682
  }, _callee, this);
622
683
  }));
623
- function getMe() {
624
- return _getMe.apply(this, arguments);
684
+ function getMembers(_x) {
685
+ return _getMembers.apply(this, arguments);
625
686
  }
626
- return getMe;
687
+ return getMembers;
627
688
  }()
689
+ /**
690
+ * Get a room member representing the current user.
691
+ */
628
692
  }, {
629
- key: "getJoinedSpaces",
693
+ key: "getMe",
630
694
  value: function () {
631
- var _getJoinedSpaces = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
695
+ var _getMe = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(roomId) {
696
+ var userId, members;
632
697
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
633
698
  while (1) {
634
699
  switch (_context2.prev = _context2.next) {
635
700
  case 0:
636
701
  _context2.next = 2;
637
- return this.deferredGetterReadiness('session');
702
+ return this.tracker.getMe();
638
703
  case 2:
639
- return _context2.abrupt("return", this.joinedSpaces);
640
- case 3:
704
+ userId = _context2.sent.id;
705
+ _context2.next = 5;
706
+ return this.getMembers(roomId);
707
+ case 5:
708
+ members = _context2.sent;
709
+ if (members) {
710
+ _context2.next = 8;
711
+ break;
712
+ }
713
+ return _context2.abrupt("return", null);
714
+ case 8:
715
+ return _context2.abrupt("return", members.items.find(function (member) {
716
+ var _member$user$id, _member$user;
717
+ return ((_member$user$id = (_member$user = member.user) === null || _member$user === void 0 ? void 0 : _member$user.id) !== null && _member$user$id !== void 0 ? _member$user$id : member.spaceMember.user.id) === userId;
718
+ }));
719
+ case 9:
641
720
  case "end":
642
721
  return _context2.stop();
643
722
  }
644
723
  }
645
724
  }, _callee2, this);
646
725
  }));
647
- function getJoinedSpaces() {
648
- return _getJoinedSpaces.apply(this, arguments);
726
+ function getMe(_x2) {
727
+ return _getMe.apply(this, arguments);
649
728
  }
650
- return getJoinedSpaces;
729
+ return getMe;
651
730
  }()
731
+ /**
732
+ * Get collection of all the rooms you are in.
733
+ */
652
734
  }, {
653
- key: "getJoinedRooms",
735
+ key: "get",
654
736
  value: function () {
655
- var _getJoinedRooms = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
737
+ var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
656
738
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
657
739
  while (1) {
658
740
  switch (_context3.prev = _context3.next) {
659
741
  case 0:
660
742
  _context3.next = 2;
661
- return this.deferredGetterReadiness('session');
743
+ return this.deferredSession.promise;
662
744
  case 2:
663
- return _context3.abrupt("return", this.joinedRooms);
745
+ return _context3.abrupt("return", this.list);
664
746
  case 3:
665
747
  case "end":
666
748
  return _context3.stop();
@@ -668,23 +750,26 @@ var ChatStateTracker = /*#__PURE__*/function () {
668
750
  }
669
751
  }, _callee3, this);
670
752
  }));
671
- function getJoinedRooms() {
672
- return _getJoinedRooms.apply(this, arguments);
753
+ function get() {
754
+ return _get.apply(this, arguments);
673
755
  }
674
- return getJoinedRooms;
756
+ return get;
675
757
  }()
758
+ /**
759
+ * Get collection of room topics.
760
+ */
676
761
  }, {
677
- key: "getSpaceRoles",
762
+ key: "getTopics",
678
763
  value: function () {
679
- var _getSpaceRoles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(spaceId) {
764
+ var _getTopics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(roomId) {
680
765
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
681
766
  while (1) {
682
767
  switch (_context4.prev = _context4.next) {
683
768
  case 0:
684
769
  _context4.next = 2;
685
- return this.deferredGetterReadiness('session');
770
+ return this.deferredSession.promise;
686
771
  case 2:
687
- return _context4.abrupt("return", this.spacesRoles.get(spaceId));
772
+ return _context4.abrupt("return", this.topics.get(roomId));
688
773
  case 3:
689
774
  case "end":
690
775
  return _context4.stop();
@@ -692,431 +777,492 @@ var ChatStateTracker = /*#__PURE__*/function () {
692
777
  }
693
778
  }, _callee4, this);
694
779
  }));
695
- function getSpaceRoles(_x) {
696
- return _getSpaceRoles.apply(this, arguments);
780
+ function getTopics(_x3) {
781
+ return _getTopics.apply(this, arguments);
697
782
  }
698
- return getSpaceRoles;
783
+ return getTopics;
699
784
  }()
785
+ /**
786
+ * Get collection of the messages written in topic.
787
+ */
700
788
  }, {
701
- key: "getRoomTopics",
789
+ key: "getMessages",
702
790
  value: function () {
703
- var _getRoomTopics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(roomId) {
791
+ var _getMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(topicId) {
704
792
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
705
793
  while (1) {
706
794
  switch (_context5.prev = _context5.next) {
707
795
  case 0:
708
- _context5.next = 2;
709
- return this.deferredGetterReadiness('session');
710
- case 2:
711
- return _context5.abrupt("return", this.roomsTopics.get(roomId));
712
- case 3:
796
+ return _context5.abrupt("return", this.topicsMessages.get(topicId));
797
+ case 1:
713
798
  case "end":
714
799
  return _context5.stop();
715
800
  }
716
801
  }
717
802
  }, _callee5, this);
718
803
  }));
719
- function getRoomTopics(_x2) {
720
- return _getRoomTopics.apply(this, arguments);
804
+ function getMessages(_x4) {
805
+ return _getMessages.apply(this, arguments);
721
806
  }
722
- return getRoomTopics;
807
+ return getMessages;
723
808
  }()
809
+ /**
810
+ * For internal use. If you want to leave the room, execute a proper command on client object.
811
+ * @internal
812
+ */
724
813
  }, {
725
- key: "getTopicMessages",
814
+ key: "_delete",
815
+ value: function _delete() {
816
+ var _this$list, _this$members, _this$topicsMessages, _this$topics;
817
+ for (var _len = arguments.length, roomIds = new Array(_len), _key = 0; _key < _len; _key++) {
818
+ roomIds[_key] = arguments[_key];
819
+ }
820
+ (_this$list = this.list)["delete"].apply(_this$list, roomIds);
821
+ (_this$members = this.members)["delete"].apply(_this$members, roomIds);
822
+ var topicIds = [];
823
+ for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
824
+ var _this$topics$get$map, _this$topics$get;
825
+ var roomId = _roomIds[_i];
826
+ topicIds.push.apply(topicIds, RoomsManager_toConsumableArray((_this$topics$get$map = (_this$topics$get = this.topics.get(roomId)) === null || _this$topics$get === void 0 ? void 0 : _this$topics$get.map(function (topic) {
827
+ return topic.id;
828
+ })) !== null && _this$topics$get$map !== void 0 ? _this$topics$get$map : []));
829
+ }
830
+ (_this$topicsMessages = this.topicsMessages)["delete"].apply(_this$topicsMessages, topicIds);
831
+ (_this$topics = this.topics)["delete"].apply(_this$topics, roomIds);
832
+ }
833
+
834
+ /**
835
+ * For internal use. If you want to leave the room, execute a proper command on client object.
836
+ * @internal
837
+ */
838
+ }, {
839
+ key: "_deleteBySpaceId",
840
+ value: function _deleteBySpaceId(spaceId) {
841
+ this._delete.apply(this, RoomsManager_toConsumableArray(this.list.findBy('spaceId', spaceId).map(function (room) {
842
+ return room.id;
843
+ })));
844
+ }
845
+
846
+ /**
847
+ * For internal use.
848
+ * @internal
849
+ */
850
+ }, {
851
+ key: "_handleSpaceMemberUpdate",
852
+ value: function _handleSpaceMemberUpdate(spaceId, member) {
853
+ // Update members of rooms related to this space
854
+ var _iterator = RoomsManager_createForOfIteratorHelper(this.list.findBy('spaceId', spaceId).items),
855
+ _step;
856
+ try {
857
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
858
+ var room = _step.value;
859
+ var roomMembers = this.members.get(room.id);
860
+ if (!roomMembers) {
861
+ // Skip update if member list for this room is not loaded
862
+ continue;
863
+ }
864
+ var roomMember = roomMembers.get(member.user.id);
865
+ roomMember.spaceMember = member;
866
+ roomMembers.set(roomMember);
867
+ }
868
+ } catch (err) {
869
+ _iterator.e(err);
870
+ } finally {
871
+ _iterator.f();
872
+ }
873
+ }
874
+ }, {
875
+ key: "handleRoomMemberUpdated",
876
+ value: function handleRoomMemberUpdated(ev) {
877
+ if (!this.members.has(ev.roomId)) {
878
+ return;
879
+ }
880
+ this.members.get(ev.roomId).set(ev.member);
881
+ }
882
+ }, {
883
+ key: "handleTopicDeleted",
884
+ value: function handleTopicDeleted(ev) {
885
+ var collection = this.topics.get(ev.roomId);
886
+ collection["delete"](ev.id);
887
+ this.list.get(ev.roomId).topics = collection.items;
888
+ }
889
+ }, {
890
+ key: "handleNewMessage",
891
+ value: function handleNewMessage(ev) {
892
+ this.topicsMessages.get(ev.topicId).set(ev.message);
893
+ }
894
+ }, {
895
+ key: "handleNewTopic",
896
+ value: function handleNewTopic(ev) {
897
+ this.addJoinedRoomTopics(ev.roomId, ev.topic);
898
+ this.list.get(ev.roomId).topics.push(ev.topic);
899
+ }
900
+ }, {
901
+ key: "addJoinedRoomTopics",
902
+ value: function addJoinedRoomTopics(roomId) {
903
+ var _this$topicsMessages2;
904
+ for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
905
+ topics[_key2 - 1] = arguments[_key2];
906
+ }
907
+ if (this.topics.has(roomId)) {
908
+ var _this$topics$get2;
909
+ (_this$topics$get2 = this.topics.get(roomId)).set.apply(_this$topics$get2, topics);
910
+ } else {
911
+ this.topics.set([roomId, new ObservableIndexedObjectCollection('id', topics)]);
912
+ }
913
+ (_this$topicsMessages2 = this.topicsMessages).set.apply(_this$topicsMessages2, RoomsManager_toConsumableArray(topics.map(function (topic) {
914
+ return [topic.id, new ObservableIndexedObjectCollection('id')];
915
+ })));
916
+ }
917
+ }, {
918
+ key: "handleRoomJoined",
919
+ value: function handleRoomJoined(ev) {
920
+ this.addJoinedRooms(ev.room);
921
+ }
922
+ }, {
923
+ key: "addJoinedRooms",
924
+ value: function addJoinedRooms() {
925
+ var _this$list2;
926
+ for (var _len3 = arguments.length, rooms = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
927
+ rooms[_key3] = arguments[_key3];
928
+ }
929
+ for (var _i2 = 0, _rooms = rooms; _i2 < _rooms.length; _i2++) {
930
+ var room = _rooms[_i2];
931
+ this.addJoinedRoomTopics.apply(this, [room.id].concat(RoomsManager_toConsumableArray(room.topics)));
932
+ }
933
+ (_this$list2 = this.list).set.apply(_this$list2, rooms);
934
+ }
935
+ }, {
936
+ key: "handleRoomLeft",
937
+ value: function handleRoomLeft(ev) {
938
+ this._delete(ev.id);
939
+ }
940
+ }, {
941
+ key: "handleRoomMemberJoined",
942
+ value: function handleRoomMemberJoined(ev) {
943
+ if (this.members.has(ev.roomId)) {
944
+ this.members.get(ev.roomId).set(ev.member);
945
+ }
946
+ }
947
+ }, {
948
+ key: "handleRoomMemberLeft",
949
+ value: function handleRoomMemberLeft(ev) {
950
+ if (this.members.has(ev.roomId)) {
951
+ this.members.get(ev.roomId)["delete"](ev.userId);
952
+ }
953
+ }
954
+ }, {
955
+ key: "handleRoomMembers",
956
+ value: function handleRoomMembers(ev) {
957
+ if (!this.members.has(ev.id)) {
958
+ this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
959
+ var _member$user$id2, _member$user2;
960
+ return (_member$user$id2 = (_member$user2 = member.user) === null || _member$user2 === void 0 ? void 0 : _member$user2.id) !== null && _member$user$id2 !== void 0 ? _member$user$id2 : member.spaceMember.user.id;
961
+ }, ev.members)]);
962
+ }
963
+ }
964
+ }, {
965
+ key: "handleSession",
966
+ value: function handleSession(ev) {
967
+ this.list.deleteAll();
968
+ this.topics.deleteAll();
969
+ this.members.deleteAll();
970
+ this.addJoinedRooms.apply(this, RoomsManager_toConsumableArray(ev.state.rooms));
971
+ this.deferredSession.resolve();
972
+ }
973
+ }]);
974
+ return RoomsManager;
975
+ }();
976
+ ;// CONCATENATED MODULE: ./src/state-tracker/SpacesManager.ts
977
+ function SpacesManager_typeof(obj) { "@babel/helpers - typeof"; return SpacesManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, SpacesManager_typeof(obj); }
978
+ function SpacesManager_toConsumableArray(arr) { return SpacesManager_arrayWithoutHoles(arr) || SpacesManager_iterableToArray(arr) || SpacesManager_unsupportedIterableToArray(arr) || SpacesManager_nonIterableSpread(); }
979
+ function SpacesManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
980
+ function SpacesManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return SpacesManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return SpacesManager_arrayLikeToArray(o, minLen); }
981
+ function SpacesManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
982
+ function SpacesManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return SpacesManager_arrayLikeToArray(arr); }
983
+ function SpacesManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
984
+ function SpacesManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ SpacesManager_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == SpacesManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
985
+ function SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
986
+ function SpacesManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { SpacesManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
987
+ function SpacesManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
988
+ function SpacesManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, SpacesManager_toPropertyKey(descriptor.key), descriptor); } }
989
+ function SpacesManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) SpacesManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) SpacesManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
990
+ function SpacesManager_defineProperty(obj, key, value) { key = SpacesManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
991
+ function SpacesManager_toPropertyKey(arg) { var key = SpacesManager_toPrimitive(arg, "string"); return SpacesManager_typeof(key) === "symbol" ? key : String(key); }
992
+ function SpacesManager_toPrimitive(input, hint) { if (SpacesManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (SpacesManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
993
+
994
+
995
+ var SpacesManager = /*#__PURE__*/function () {
996
+ function SpacesManager(tracker) {
997
+ var _this = this;
998
+ SpacesManager_classCallCheck(this, SpacesManager);
999
+ this.tracker = tracker;
1000
+ SpacesManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
1001
+ SpacesManager_defineProperty(this, "roles", new IndexedCollection());
1002
+ SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1003
+ SpacesManager_defineProperty(this, "members", new IndexedCollection());
1004
+ SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1005
+ this.tracker.client.on('NewRoom', function (ev) {
1006
+ return _this.handleNewRoom(ev);
1007
+ });
1008
+ this.tracker.client.on('RoomDeleted', function (ev) {
1009
+ return _this.handleRoomDeleted(ev);
1010
+ });
1011
+ this.tracker.client.on('SpaceDeleted', function (ev) {
1012
+ return _this.handleSpaceDeleted(ev);
1013
+ });
1014
+ this.tracker.client.on('SpaceJoined', function (ev) {
1015
+ return _this.handleSpaceJoined(ev);
1016
+ });
1017
+ this.tracker.client.on('SpaceLeft', function (ev) {
1018
+ return _this.handleSpaceLeft(ev);
1019
+ });
1020
+ this.tracker.client.on('SpaceMemberJoined', function (ev) {
1021
+ return _this.handleSpaceMemberJoined(ev);
1022
+ });
1023
+ this.tracker.client.on('SpaceMemberLeft', function (ev) {
1024
+ return _this.handleSpaceMemberLeft(ev);
1025
+ });
1026
+ this.tracker.client.on('SpaceMembers', function (ev) {
1027
+ return _this.handleSpaceMembers(ev);
1028
+ });
1029
+ this.tracker.client.on('SpaceRooms', function (ev) {
1030
+ return _this.handleSpaceRooms(ev);
1031
+ });
1032
+ this.tracker.client.on('SpaceMemberUpdated', function (ev) {
1033
+ return _this.handleSpaceMemberUpdated(ev);
1034
+ });
1035
+ this.tracker.client.on('NewRole', function (ev) {
1036
+ return _this.handleNewRole(ev);
1037
+ });
1038
+ this.tracker.client.on('RoleDeleted', function (ev) {
1039
+ return _this.handleRoleDeleted(ev);
1040
+ });
1041
+ this.tracker.client.on('RoleUpdated', function (ev) {
1042
+ return _this.handleRoleUpdated(ev);
1043
+ });
1044
+ this.tracker.client.on('Session', function (ev) {
1045
+ return _this.handleSession(ev);
1046
+ });
1047
+ }
1048
+
1049
+ /**
1050
+ * Get collection of all the spaces you are in.
1051
+ */
1052
+ SpacesManager_createClass(SpacesManager, [{
1053
+ key: "get",
726
1054
  value: function () {
727
- var _getTopicMessages = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(topicId) {
728
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
1055
+ var _get = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee() {
1056
+ return SpacesManager_regeneratorRuntime().wrap(function _callee$(_context) {
729
1057
  while (1) {
730
- switch (_context6.prev = _context6.next) {
1058
+ switch (_context.prev = _context.next) {
731
1059
  case 0:
732
- return _context6.abrupt("return", this.topicsMessages.get(topicId));
733
- case 1:
1060
+ _context.next = 2;
1061
+ return this.deferredSession.promise;
1062
+ case 2:
1063
+ return _context.abrupt("return", this.list);
1064
+ case 3:
734
1065
  case "end":
735
- return _context6.stop();
1066
+ return _context.stop();
736
1067
  }
737
1068
  }
738
- }, _callee6, this);
1069
+ }, _callee, this);
739
1070
  }));
740
- function getTopicMessages(_x3) {
741
- return _getTopicMessages.apply(this, arguments);
1071
+ function get() {
1072
+ return _get.apply(this, arguments);
742
1073
  }
743
- return getTopicMessages;
1074
+ return get;
744
1075
  }()
1076
+ /**
1077
+ * Get collection of space roles.
1078
+ */
745
1079
  }, {
746
- key: "getSpaceRooms",
1080
+ key: "getRoles",
747
1081
  value: function () {
748
- var _getSpaceRooms = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(spaceId) {
749
- var deferredGetterName;
750
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
1082
+ var _getRoles = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee2(spaceId) {
1083
+ return SpacesManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
751
1084
  while (1) {
752
- switch (_context7.prev = _context7.next) {
1085
+ switch (_context2.prev = _context2.next) {
753
1086
  case 0:
754
- deferredGetterName = "spaces-rooms-".concat(spaceId);
755
- if (!this.spacesRooms.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {
756
- this.createDeferredGetter(deferredGetterName);
757
- this.client.send('GetSpaceRooms', {
758
- id: spaceId
759
- });
760
- }
761
- _context7.next = 4;
762
- return this.deferredGetterReadiness(deferredGetterName);
763
- case 4:
764
- return _context7.abrupt("return", this.spacesRooms.get(spaceId));
765
- case 5:
1087
+ _context2.next = 2;
1088
+ return this.deferredSession.promise;
1089
+ case 2:
1090
+ return _context2.abrupt("return", this.roles.get(spaceId));
1091
+ case 3:
766
1092
  case "end":
767
- return _context7.stop();
1093
+ return _context2.stop();
768
1094
  }
769
1095
  }
770
- }, _callee7, this);
1096
+ }, _callee2, this);
771
1097
  }));
772
- function getSpaceRooms(_x4) {
773
- return _getSpaceRooms.apply(this, arguments);
1098
+ function getRoles(_x) {
1099
+ return _getRoles.apply(this, arguments);
774
1100
  }
775
- return getSpaceRooms;
1101
+ return getRoles;
776
1102
  }()
1103
+ /**
1104
+ * Get collection of the all available rooms inside given space.
1105
+ */
777
1106
  }, {
778
- key: "getSpaceMembers",
1107
+ key: "getRooms",
779
1108
  value: function () {
780
- var _getSpaceMembers = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(spaceId) {
781
- var deferredGetterName;
782
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
1109
+ var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3(spaceId) {
1110
+ var result;
1111
+ return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
783
1112
  while (1) {
784
- switch (_context8.prev = _context8.next) {
1113
+ switch (_context3.prev = _context3.next) {
785
1114
  case 0:
786
- deferredGetterName = "spaces-members-".concat(spaceId);
787
- if (!this.spacesMembers.has(spaceId) && !this.deferredGetters.has(deferredGetterName)) {
788
- this.createDeferredGetter(deferredGetterName);
789
- this.client.send('GetSpaceMembers', {
790
- id: spaceId
791
- });
1115
+ if (this.rooms.has(spaceId)) {
1116
+ _context3.next = 7;
1117
+ break;
792
1118
  }
793
- _context8.next = 4;
794
- return this.deferredGetterReadiness(deferredGetterName);
795
- case 4:
796
- return _context8.abrupt("return", this.spacesMembers.get(spaceId));
797
- case 5:
1119
+ _context3.next = 3;
1120
+ return this.tracker.client.send('GetSpaceRooms', {
1121
+ id: spaceId
1122
+ });
1123
+ case 3:
1124
+ result = _context3.sent;
1125
+ if (!result.error) {
1126
+ _context3.next = 6;
1127
+ break;
1128
+ }
1129
+ throw result.error;
1130
+ case 6:
1131
+ this.handleSpaceRooms(result.data);
1132
+ case 7:
1133
+ return _context3.abrupt("return", this.rooms.get(spaceId));
1134
+ case 8:
798
1135
  case "end":
799
- return _context8.stop();
1136
+ return _context3.stop();
800
1137
  }
801
1138
  }
802
- }, _callee8, this);
1139
+ }, _callee3, this);
803
1140
  }));
804
- function getSpaceMembers(_x5) {
805
- return _getSpaceMembers.apply(this, arguments);
1141
+ function getRooms(_x2) {
1142
+ return _getRooms.apply(this, arguments);
806
1143
  }
807
- return getSpaceMembers;
1144
+ return getRooms;
808
1145
  }()
1146
+ /**
1147
+ * Get collection of space members.
1148
+ */
809
1149
  }, {
810
- key: "getRoomMembers",
1150
+ key: "getMembers",
811
1151
  value: function () {
812
- var _getRoomMembers = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(roomId) {
813
- var deferredGetterName;
814
- return _regeneratorRuntime().wrap(function _callee9$(_context9) {
1152
+ var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1153
+ var result;
1154
+ return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
815
1155
  while (1) {
816
- switch (_context9.prev = _context9.next) {
1156
+ switch (_context4.prev = _context4.next) {
817
1157
  case 0:
818
- deferredGetterName = "rooms-members-".concat(roomId);
819
- if (!this.roomsMembers.has(roomId) && !this.deferredGetters.has(deferredGetterName)) {
820
- this.createDeferredGetter(deferredGetterName);
821
- this.client.send('GetRoomMembers', {
822
- id: roomId
823
- });
1158
+ if (this.members.has(spaceId)) {
1159
+ _context4.next = 7;
1160
+ break;
824
1161
  }
825
- _context9.next = 4;
826
- return this.deferredGetterReadiness(deferredGetterName);
827
- case 4:
828
- return _context9.abrupt("return", this.roomsMembers.get(roomId));
829
- case 5:
1162
+ _context4.next = 3;
1163
+ return this.tracker.client.send('GetSpaceMembers', {
1164
+ id: spaceId
1165
+ });
1166
+ case 3:
1167
+ result = _context4.sent;
1168
+ if (!result.error) {
1169
+ _context4.next = 6;
1170
+ break;
1171
+ }
1172
+ throw result.error;
1173
+ case 6:
1174
+ this.handleSpaceMembers(result.data);
1175
+ case 7:
1176
+ return _context4.abrupt("return", this.members.get(spaceId));
1177
+ case 8:
830
1178
  case "end":
831
- return _context9.stop();
1179
+ return _context4.stop();
832
1180
  }
833
1181
  }
834
- }, _callee9, this);
1182
+ }, _callee4, this);
835
1183
  }));
836
- function getRoomMembers(_x6) {
837
- return _getRoomMembers.apply(this, arguments);
1184
+ function getMembers(_x3) {
1185
+ return _getMembers.apply(this, arguments);
838
1186
  }
839
- return getRoomMembers;
1187
+ return getMembers;
840
1188
  }()
1189
+ /**
1190
+ * Get a space member representing the current user.
1191
+ */
841
1192
  }, {
842
- key: "deferredGetterReadiness",
1193
+ key: "getMe",
843
1194
  value: function () {
844
- var _deferredGetterReadiness = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(name) {
845
- return _regeneratorRuntime().wrap(function _callee10$(_context10) {
1195
+ var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5(spaceId) {
1196
+ var userId, members;
1197
+ return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
846
1198
  while (1) {
847
- switch (_context10.prev = _context10.next) {
1199
+ switch (_context5.prev = _context5.next) {
848
1200
  case 0:
849
- if (!this.deferredGetters.has(name)) {
850
- _context10.next = 3;
1201
+ _context5.next = 2;
1202
+ return this.tracker.getMe();
1203
+ case 2:
1204
+ userId = _context5.sent.id;
1205
+ _context5.next = 5;
1206
+ return this.getMembers(spaceId);
1207
+ case 5:
1208
+ members = _context5.sent;
1209
+ if (members) {
1210
+ _context5.next = 8;
851
1211
  break;
852
1212
  }
853
- _context10.next = 3;
854
- return this.deferredGetters.get(name).promise;
855
- case 3:
1213
+ return _context5.abrupt("return", null);
1214
+ case 8:
1215
+ return _context5.abrupt("return", members.items.find(function (member) {
1216
+ return member.user.id === userId;
1217
+ }));
1218
+ case 9:
856
1219
  case "end":
857
- return _context10.stop();
1220
+ return _context5.stop();
858
1221
  }
859
1222
  }
860
- }, _callee10, this);
1223
+ }, _callee5, this);
861
1224
  }));
862
- function deferredGetterReadiness(_x7) {
863
- return _deferredGetterReadiness.apply(this, arguments);
1225
+ function getMe(_x4) {
1226
+ return _getMe.apply(this, arguments);
864
1227
  }
865
- return deferredGetterReadiness;
1228
+ return getMe;
866
1229
  }()
867
- }, {
868
- key: "bind",
869
- value: function bind() {
870
- var _this = this;
871
- this.client.on(this.client.Event.disconnect, function (ev) {
872
- return _this.handleDisconnect(ev);
873
- });
874
- this.client.on('NewMessage', function (ev) {
875
- return _this.handleNewMessage(ev);
876
- });
877
- this.client.on('NewRole', function (ev) {
878
- return _this.handleNewRole(ev);
879
- });
880
- this.client.on('NewRoom', function (ev) {
881
- return _this.handleNewRoom(ev);
882
- });
883
- this.client.on('NewTopic', function (ev) {
884
- return _this.handleNewTopic(ev);
885
- });
886
- this.client.on('RoleDeleted', function (ev) {
887
- return _this.handleRoleDeleted(ev);
888
- });
889
- this.client.on('RoomDeleted', function (ev) {
890
- return _this.handleRoomDeleted(ev);
891
- });
892
- this.client.on('RoomJoined', function (ev) {
893
- return _this.handleRoomJoined(ev);
894
- });
895
- this.client.on('RoomLeft', function (ev) {
896
- return _this.handleRoomLeft(ev);
897
- });
898
- this.client.on('RoomMemberJoined', function (ev) {
899
- return _this.handleRoomMemberJoined(ev);
900
- });
901
- this.client.on('RoomMemberLeft', function (ev) {
902
- return _this.handleRoomMemberLeft(ev);
903
- });
904
- this.client.on('RoomMembers', function (ev) {
905
- return _this.handleRoomMembers(ev);
906
- });
907
- this.client.on('Session', function (ev) {
908
- return _this.handleSession(ev);
909
- });
910
- this.client.on('SpaceDeleted', function (ev) {
911
- return _this.handleSpaceDeleted(ev);
912
- });
913
- this.client.on('SpaceJoined', function (ev) {
914
- return _this.handleSpaceJoined(ev);
915
- });
916
- this.client.on('SpaceLeft', function (ev) {
917
- return _this.handleSpaceLeft(ev);
918
- });
919
- this.client.on('SpaceMemberJoined', function (ev) {
920
- return _this.handleSpaceMemberJoined(ev);
921
- });
922
- this.client.on('SpaceMemberLeft', function (ev) {
923
- return _this.handleSpaceMemberLeft(ev);
924
- });
925
- this.client.on('SpaceMembers', function (ev) {
926
- return _this.handleSpaceMembers(ev);
927
- });
928
- this.client.on('SpaceRooms', function (ev) {
929
- return _this.handleSpaceRooms(ev);
930
- });
931
- this.client.on('SpaceMemberUpdate', function (ev) {
932
- return _this.handleSpaceMemberUpdate(ev);
933
- });
934
- this.client.on('TopicDeleted', function (ev) {
935
- return _this.handleTopicDeleted(ev);
936
- });
937
- }
938
- }, {
939
- key: "createDeferredGetter",
940
- value: function createDeferredGetter(name) {
941
- var _this2 = this;
942
- if (this.deferredGetters.has(name)) {
943
- return;
944
- }
945
- var deferred = {
946
- promise: undefined,
947
- resolver: undefined
948
- };
949
- deferred.promise = new Promise(function (resolve) {
950
- return deferred.resolver = function () {
951
- _this2.deferredGetters["delete"](name);
952
- resolve();
953
- };
954
- });
955
- this.deferredGetters.set([name, deferred]);
956
- }
957
- }, {
958
- key: "handleDisconnect",
959
- value: function handleDisconnect(reconnect) {
960
- if (reconnect) {
961
- this.reconnecting = true;
962
- return;
963
- }
964
- }
965
- }, {
966
- key: "handleNewMessage",
967
- value: function handleNewMessage(ev) {
968
- this.topicsMessages.get(ev.topicId).set(ev.message);
969
- }
970
1230
  }, {
971
1231
  key: "handleNewRole",
972
1232
  value: function handleNewRole(ev) {
973
- var collection = this.spacesRoles.get(ev.spaceId);
1233
+ var collection = this.roles.get(ev.spaceId);
974
1234
  collection.set(ev.role);
975
- this.joinedSpaces.get(ev.spaceId).roles = collection.items;
1235
+ this.list.get(ev.spaceId).roles = collection.items;
976
1236
  }
977
1237
  }, {
978
1238
  key: "handleNewRoom",
979
1239
  value: function handleNewRoom(ev) {
980
- var _this$spacesRooms$get;
981
- (_this$spacesRooms$get = this.spacesRooms.get(ev.spaceId)) === null || _this$spacesRooms$get === void 0 ? void 0 : _this$spacesRooms$get.set(ev.summary);
982
- }
983
- }, {
984
- key: "handleNewTopic",
985
- value: function handleNewTopic(ev) {
986
- this.addJoinedRoomTopics(ev.roomId, ev.topic);
987
- this.joinedRooms.get(ev.roomId).topics.push(ev.topic);
988
- }
989
- }, {
990
- key: "addJoinedRoomTopics",
991
- value: function addJoinedRoomTopics(roomId) {
992
- var _this$topicsMessages;
993
- for (var _len = arguments.length, topics = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
994
- topics[_key - 1] = arguments[_key];
995
- }
996
- if (this.roomsTopics.has(roomId)) {
997
- var _this$roomsTopics$get;
998
- (_this$roomsTopics$get = this.roomsTopics.get(roomId)).set.apply(_this$roomsTopics$get, topics);
999
- } else {
1000
- this.roomsTopics.set([roomId, new ObservableIndexedObjectCollection('id', topics)]);
1001
- }
1002
- (_this$topicsMessages = this.topicsMessages).set.apply(_this$topicsMessages, ChatStateTracker_toConsumableArray(topics.map(function (topic) {
1003
- return [topic.id, new ObservableIndexedObjectCollection('id')];
1004
- })));
1005
- }
1006
- }, {
1007
- key: "handleRoleDeleted",
1008
- value: function handleRoleDeleted(ev) {
1009
- var collection = this.spacesRoles.get(ev.spaceId);
1010
- collection["delete"](ev.id);
1011
- this.joinedSpaces.get(ev.spaceId).roles = collection.items;
1240
+ var _this$rooms$get;
1241
+ (_this$rooms$get = this.rooms.get(ev.spaceId)) === null || _this$rooms$get === void 0 ? void 0 : _this$rooms$get.set(ev.summary);
1012
1242
  }
1013
1243
  }, {
1014
1244
  key: "handleRoomDeleted",
1015
1245
  value: function handleRoomDeleted(ev) {
1016
1246
  if (ev.spaceId) {
1017
- this.spacesRooms.get(ev.spaceId)["delete"](ev.id);
1018
- }
1019
- this.deleteJoinedRooms(ev.id);
1020
- }
1021
- }, {
1022
- key: "handleRoomJoined",
1023
- value: function handleRoomJoined(ev) {
1024
- this.addJoinedRooms(ev.room);
1025
- }
1026
- }, {
1027
- key: "addJoinedRooms",
1028
- value: function addJoinedRooms() {
1029
- var _this$joinedRooms;
1030
- for (var _len2 = arguments.length, rooms = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1031
- rooms[_key2] = arguments[_key2];
1032
- }
1033
- for (var _i = 0, _rooms = rooms; _i < _rooms.length; _i++) {
1034
- var room = _rooms[_i];
1035
- this.addJoinedRoomTopics.apply(this, [room.id].concat(ChatStateTracker_toConsumableArray(room.topics)));
1036
- }
1037
- (_this$joinedRooms = this.joinedRooms).set.apply(_this$joinedRooms, rooms);
1038
- }
1039
- }, {
1040
- key: "handleRoomLeft",
1041
- value: function handleRoomLeft(ev) {
1042
- this.deleteJoinedRooms(ev.id);
1043
- }
1044
- }, {
1045
- key: "deleteJoinedRooms",
1046
- value: function deleteJoinedRooms() {
1047
- var _this$joinedRooms2, _this$roomsMembers, _this$topicsMessages2, _this$roomsTopics;
1048
- for (var _len3 = arguments.length, roomIds = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1049
- roomIds[_key3] = arguments[_key3];
1050
- }
1051
- (_this$joinedRooms2 = this.joinedRooms)["delete"].apply(_this$joinedRooms2, roomIds);
1052
- (_this$roomsMembers = this.roomsMembers)["delete"].apply(_this$roomsMembers, roomIds);
1053
- var topicIds = [];
1054
- for (var _i2 = 0, _roomIds = roomIds; _i2 < _roomIds.length; _i2++) {
1055
- var _this$roomsTopics$get2, _this$roomsTopics$get3;
1056
- var roomId = _roomIds[_i2];
1057
- topicIds.push.apply(topicIds, ChatStateTracker_toConsumableArray((_this$roomsTopics$get2 = (_this$roomsTopics$get3 = this.roomsTopics.get(roomId)) === null || _this$roomsTopics$get3 === void 0 ? void 0 : _this$roomsTopics$get3.map(function (topic) {
1058
- return topic.id;
1059
- })) !== null && _this$roomsTopics$get2 !== void 0 ? _this$roomsTopics$get2 : []));
1060
- }
1061
- (_this$topicsMessages2 = this.topicsMessages)["delete"].apply(_this$topicsMessages2, topicIds);
1062
- (_this$roomsTopics = this.roomsTopics)["delete"].apply(_this$roomsTopics, roomIds);
1063
- }
1064
- }, {
1065
- key: "handleRoomMemberJoined",
1066
- value: function handleRoomMemberJoined(ev) {
1067
- if (this.roomsMembers.has(ev.roomId)) {
1068
- this.roomsMembers.get(ev.roomId).set(ev.member);
1069
- }
1070
- }
1071
- }, {
1072
- key: "handleRoomMemberLeft",
1073
- value: function handleRoomMemberLeft(ev) {
1074
- if (this.roomsMembers.has(ev.roomId)) {
1075
- this.roomsMembers.get(ev.roomId)["delete"](ev.userId);
1076
- }
1077
- }
1078
- }, {
1079
- key: "handleRoomMembers",
1080
- value: function handleRoomMembers(ev) {
1081
- if (!this.roomsMembers.has(ev.id)) {
1082
- var _this$deferredGetters;
1083
- this.roomsMembers.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
1084
- var _member$user$id, _member$user;
1085
- return (_member$user$id = (_member$user = member.user) === null || _member$user === void 0 ? void 0 : _member$user.id) !== null && _member$user$id !== void 0 ? _member$user$id : member.spaceMember.user.id;
1086
- }, ev.members)]);
1087
- (_this$deferredGetters = this.deferredGetters.get("rooms-members-".concat(ev.id))) === null || _this$deferredGetters === void 0 ? void 0 : _this$deferredGetters.resolver();
1247
+ this.rooms.get(ev.spaceId)["delete"](ev.id);
1088
1248
  }
1249
+ this.tracker.rooms._delete(ev.id);
1089
1250
  }
1090
1251
  }, {
1091
- key: "handleSession",
1092
- value: function handleSession(ev) {
1093
- var _this$deferredGetters2;
1094
- if (this.me && !this.reconnecting) {
1095
- return;
1096
- }
1097
- this.me = ev.user;
1098
- this.reconnecting = false;
1099
- this.joinedRooms.deleteAll();
1100
- this.roomsTopics.deleteAll();
1101
- this.roomsMembers.deleteAll();
1102
- this.joinedSpaces.deleteAll();
1103
- this.spacesRoles.deleteAll();
1104
- this.spacesRooms.deleteAll();
1105
- this.spacesMembers.deleteAll();
1106
- this.addJoinedRooms.apply(this, ChatStateTracker_toConsumableArray(ev.state.rooms));
1107
- this.addJoinedSpaces.apply(this, ChatStateTracker_toConsumableArray(ev.state.spaces));
1108
- (_this$deferredGetters2 = this.deferredGetters.get('session')) === null || _this$deferredGetters2 === void 0 ? void 0 : _this$deferredGetters2.resolver();
1252
+ key: "handleRoleDeleted",
1253
+ value: function handleRoleDeleted(ev) {
1254
+ var collection = this.roles.get(ev.spaceId);
1255
+ collection["delete"](ev.id);
1256
+ this.list.get(ev.spaceId).roles = collection.items;
1109
1257
  }
1110
1258
  }, {
1111
1259
  key: "handleSpaceDeleted",
1112
1260
  value: function handleSpaceDeleted(ev) {
1113
- this.deleteJoinedRooms.apply(this, ChatStateTracker_toConsumableArray(this.joinedRooms.findBy('spaceId', ev.id).map(function (room) {
1114
- return room.id;
1115
- })));
1116
- this.spacesRoles["delete"](ev.id);
1117
- this.spacesMembers["delete"](ev.id);
1118
- this.spacesRooms["delete"](ev.id);
1119
- this.joinedSpaces["delete"](ev.id);
1261
+ this.tracker.rooms._deleteBySpaceId(ev.id);
1262
+ this.roles["delete"](ev.id);
1263
+ this.members["delete"](ev.id);
1264
+ this.rooms["delete"](ev.id);
1265
+ this.list["delete"](ev.id);
1120
1266
  }
1121
1267
  }, {
1122
1268
  key: "handleSpaceJoined",
@@ -1126,14 +1272,14 @@ var ChatStateTracker = /*#__PURE__*/function () {
1126
1272
  }, {
1127
1273
  key: "addJoinedSpaces",
1128
1274
  value: function addJoinedSpaces() {
1129
- var _this$spacesRoles, _this$joinedSpaces;
1130
- for (var _len4 = arguments.length, spaces = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
1131
- spaces[_key4] = arguments[_key4];
1275
+ var _this$roles, _this$list;
1276
+ for (var _len = arguments.length, spaces = new Array(_len), _key = 0; _key < _len; _key++) {
1277
+ spaces[_key] = arguments[_key];
1132
1278
  }
1133
- (_this$spacesRoles = this.spacesRoles).set.apply(_this$spacesRoles, ChatStateTracker_toConsumableArray(spaces.map(function (space) {
1279
+ (_this$roles = this.roles).set.apply(_this$roles, SpacesManager_toConsumableArray(spaces.map(function (space) {
1134
1280
  return [space.id, new ObservableIndexedObjectCollection('id', space.roles)];
1135
1281
  })));
1136
- (_this$joinedSpaces = this.joinedSpaces).set.apply(_this$joinedSpaces, spaces);
1282
+ (_this$list = this.list).set.apply(_this$list, spaces);
1137
1283
  }
1138
1284
  }, {
1139
1285
  key: "handleSpaceLeft",
@@ -1143,50 +1289,499 @@ var ChatStateTracker = /*#__PURE__*/function () {
1143
1289
  }, {
1144
1290
  key: "handleSpaceMemberJoined",
1145
1291
  value: function handleSpaceMemberJoined(ev) {
1146
- if (this.spacesMembers.has(ev.spaceId)) {
1147
- this.spacesMembers.get(ev.spaceId).set(ev.member);
1292
+ if (this.members.has(ev.spaceId)) {
1293
+ this.members.get(ev.spaceId).set(ev.member);
1148
1294
  }
1149
1295
  }
1150
1296
  }, {
1151
1297
  key: "handleSpaceMemberLeft",
1152
1298
  value: function handleSpaceMemberLeft(ev) {
1153
- if (this.spacesMembers.has(ev.spaceId)) {
1154
- this.spacesMembers.get(ev.spaceId)["delete"](ev.userId);
1299
+ if (this.members.has(ev.spaceId)) {
1300
+ this.members.get(ev.spaceId)["delete"](ev.userId);
1155
1301
  }
1156
1302
  }
1157
1303
  }, {
1158
1304
  key: "handleSpaceMembers",
1159
1305
  value: function handleSpaceMembers(ev) {
1160
- if (!this.spacesMembers.has(ev.id)) {
1161
- var _this$deferredGetters3;
1162
- this.spacesMembers.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
1306
+ if (!this.members.has(ev.id)) {
1307
+ this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
1163
1308
  return member === null || member === void 0 ? void 0 : member.user.id;
1164
1309
  }, ev.members)]);
1165
- (_this$deferredGetters3 = this.deferredGetters.get("spaces-members-".concat(ev.id))) === null || _this$deferredGetters3 === void 0 ? void 0 : _this$deferredGetters3.resolver();
1166
1310
  }
1167
1311
  }
1168
1312
  }, {
1169
1313
  key: "handleSpaceRooms",
1170
1314
  value: function handleSpaceRooms(ev) {
1171
- if (!this.spacesRooms.has(ev.id)) {
1172
- var _this$deferredGetters4;
1173
- this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);
1174
- (_this$deferredGetters4 = this.deferredGetters.get("spaces-rooms-".concat(ev.id))) === null || _this$deferredGetters4 === void 0 ? void 0 : _this$deferredGetters4.resolver();
1315
+ if (!this.rooms.has(ev.id)) {
1316
+ this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);
1175
1317
  }
1176
1318
  }
1177
1319
  }, {
1178
- key: "handleSpaceMemberUpdate",
1179
- value: function handleSpaceMemberUpdate(ev) {
1180
- if (this.spacesMembers.has(ev.spaceId)) {
1181
- this.spacesMembers.get(ev.spaceId).set(ev.member);
1320
+ key: "handleSpaceMemberUpdated",
1321
+ value: function handleSpaceMemberUpdated(ev) {
1322
+ if (this.members.has(ev.spaceId)) {
1323
+ this.members.get(ev.spaceId).set(ev.member);
1182
1324
  }
1325
+ this.tracker.rooms._handleSpaceMemberUpdate(ev.spaceId, ev.member);
1183
1326
  }
1184
1327
  }, {
1185
- key: "handleTopicDeleted",
1186
- value: function handleTopicDeleted(ev) {
1187
- var collection = this.roomsTopics.get(ev.roomId);
1188
- collection["delete"](ev.id);
1189
- this.joinedRooms.get(ev.roomId).topics = collection.items;
1328
+ key: "handleRoleUpdated",
1329
+ value: function handleRoleUpdated(ev) {
1330
+ this.roles.get(ev.spaceId).set(ev.role);
1331
+ }
1332
+ }, {
1333
+ key: "handleSession",
1334
+ value: function handleSession(ev) {
1335
+ this.list.deleteAll();
1336
+ this.roles.deleteAll();
1337
+ this.rooms.deleteAll();
1338
+ this.members.deleteAll();
1339
+ this.addJoinedSpaces.apply(this, SpacesManager_toConsumableArray(ev.state.spaces));
1340
+ this.deferredSession.resolve();
1341
+ }
1342
+ }]);
1343
+ return SpacesManager;
1344
+ }();
1345
+ ;// CONCATENATED MODULE: ./src/Permission.ts
1346
+ var Permission;
1347
+ (function (Permission) {
1348
+ Permission[Permission["Root"] = 1] = "Root";
1349
+ Permission[Permission["CreateSpaces"] = 2] = "CreateSpaces";
1350
+ Permission[Permission["ManageSpaces"] = 4] = "ManageSpaces";
1351
+ Permission[Permission["ManageRoles"] = 8] = "ManageRoles";
1352
+ Permission[Permission["ChangeNick"] = 16] = "ChangeNick";
1353
+ Permission[Permission["ManageRooms"] = 32] = "ManageRooms";
1354
+ Permission[Permission["ManageTopics"] = 64] = "ManageTopics";
1355
+ Permission[Permission["ManageMembers"] = 128] = "ManageMembers";
1356
+ Permission[Permission["SendMessages"] = 256] = "SendMessages";
1357
+ Permission[Permission["ViewMessages"] = 512] = "ViewMessages";
1358
+ Permission[Permission["ChangeMessages"] = 1024] = "ChangeMessages";
1359
+ Permission[Permission["ManageMessages"] = 2048] = "ManageMessages";
1360
+ Permission[Permission["ManagePermissions"] = 4096] = "ManagePermissions";
1361
+ })(Permission || (Permission = {}));
1362
+ ;// CONCATENATED MODULE: ./src/state-tracker/PermissionsManager.ts
1363
+ function PermissionsManager_typeof(obj) { "@babel/helpers - typeof"; return PermissionsManager_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, PermissionsManager_typeof(obj); }
1364
+ function PermissionsManager_createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = PermissionsManager_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
1365
+ function PermissionsManager_toConsumableArray(arr) { return PermissionsManager_arrayWithoutHoles(arr) || PermissionsManager_iterableToArray(arr) || PermissionsManager_unsupportedIterableToArray(arr) || PermissionsManager_nonIterableSpread(); }
1366
+ function PermissionsManager_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
1367
+ function PermissionsManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return PermissionsManager_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return PermissionsManager_arrayLikeToArray(o, minLen); }
1368
+ function PermissionsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
1369
+ function PermissionsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return PermissionsManager_arrayLikeToArray(arr); }
1370
+ function PermissionsManager_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
1371
+ function PermissionsManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ PermissionsManager_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == PermissionsManager_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
1372
+ function PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
1373
+ function PermissionsManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { PermissionsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1374
+ function PermissionsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1375
+ function PermissionsManager_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, PermissionsManager_toPropertyKey(descriptor.key), descriptor); } }
1376
+ function PermissionsManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) PermissionsManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) PermissionsManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1377
+ function PermissionsManager_get() { if (typeof Reflect !== "undefined" && Reflect.get) { PermissionsManager_get = Reflect.get.bind(); } else { PermissionsManager_get = function _get(target, property, receiver) { var base = PermissionsManager_superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return PermissionsManager_get.apply(this, arguments); }
1378
+ function PermissionsManager_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = PermissionsManager_getPrototypeOf(object); if (object === null) break; } return object; }
1379
+ function PermissionsManager_inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) PermissionsManager_setPrototypeOf(subClass, superClass); }
1380
+ function PermissionsManager_setPrototypeOf(o, p) { PermissionsManager_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return PermissionsManager_setPrototypeOf(o, p); }
1381
+ function PermissionsManager_createSuper(Derived) { var hasNativeReflectConstruct = PermissionsManager_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = PermissionsManager_getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = PermissionsManager_getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return PermissionsManager_possibleConstructorReturn(this, result); }; }
1382
+ function PermissionsManager_possibleConstructorReturn(self, call) { if (call && (PermissionsManager_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return PermissionsManager_assertThisInitialized(self); }
1383
+ function PermissionsManager_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
1384
+ function PermissionsManager_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1385
+ function PermissionsManager_getPrototypeOf(o) { PermissionsManager_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return PermissionsManager_getPrototypeOf(o); }
1386
+ function PermissionsManager_defineProperty(obj, key, value) { key = PermissionsManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1387
+ function PermissionsManager_toPropertyKey(arg) { var key = PermissionsManager_toPrimitive(arg, "string"); return PermissionsManager_typeof(key) === "symbol" ? key : String(key); }
1388
+ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (PermissionsManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1389
+
1390
+
1391
+
1392
+ var getOvId = function getOvId(layer, layerId, target, targetId) {
1393
+ return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + target + targetId;
1394
+ };
1395
+ var getOvIdByObject = function getOvIdByObject(overwrites) {
1396
+ return getOvId(overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId);
1397
+ };
1398
+ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1399
+ PermissionsManager_inherits(PermissionsManager, _EventTarget);
1400
+ var _super = PermissionsManager_createSuper(PermissionsManager);
1401
+ function PermissionsManager(tracker) {
1402
+ var _this;
1403
+ PermissionsManager_classCallCheck(this, PermissionsManager);
1404
+ _this = _super.call(this);
1405
+ _this.tracker = tracker;
1406
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
1407
+ _this.tracker.client.on('PermissionOverwrites', function (ev) {
1408
+ return _this.handlePermissionOverwrites(ev);
1409
+ });
1410
+ _this.tracker.client.on('PermissionOverwritesChanged', function (ev) {
1411
+ return _this.handlePermissionOverwrites(ev);
1412
+ });
1413
+ return _this;
1414
+ }
1415
+ PermissionsManager_createClass(PermissionsManager, [{
1416
+ key: "getOverwrites",
1417
+ value: function () {
1418
+ var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee(layer, layerId, target, targetId) {
1419
+ var id, result;
1420
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1421
+ while (1) {
1422
+ switch (_context.prev = _context.next) {
1423
+ case 0:
1424
+ id = getOvId(layer, layerId, target, targetId);
1425
+ if (!this.overwrites.has(id)) {
1426
+ _context.next = 3;
1427
+ break;
1428
+ }
1429
+ return _context.abrupt("return", this.overwrites.get(id));
1430
+ case 3:
1431
+ _context.next = 5;
1432
+ return this.tracker.client.send('GetPermissionOverwrites', {
1433
+ layer: layer,
1434
+ layerId: layerId,
1435
+ target: target,
1436
+ targetId: targetId
1437
+ });
1438
+ case 5:
1439
+ result = _context.sent;
1440
+ return _context.abrupt("return", result.error ? null : result.data);
1441
+ case 7:
1442
+ case "end":
1443
+ return _context.stop();
1444
+ }
1445
+ }
1446
+ }, _callee, this);
1447
+ }));
1448
+ function getOverwrites(_x, _x2, _x3, _x4) {
1449
+ return _getOverwrites.apply(this, arguments);
1450
+ }
1451
+ return getOverwrites;
1452
+ }()
1453
+ }, {
1454
+ key: "on",
1455
+ value: function on(eventName, handler) {
1456
+ return PermissionsManager_get(PermissionsManager_getPrototypeOf(PermissionsManager.prototype), "on", this).call(this, eventName, handler);
1457
+ }
1458
+ }, {
1459
+ key: "check",
1460
+ value: function () {
1461
+ var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(permissionNames, spaceId, roomId, topicId) {
1462
+ var ownedPermissions, missing;
1463
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1464
+ while (1) {
1465
+ switch (_context2.prev = _context2.next) {
1466
+ case 0:
1467
+ _context2.next = 2;
1468
+ return this.calculatePermissions(spaceId, roomId, topicId);
1469
+ case 2:
1470
+ ownedPermissions = _context2.sent;
1471
+ missing = [];
1472
+ permissionNames.forEach(function (name) {
1473
+ if (~ownedPermissions & Permission[name]) {
1474
+ missing.push(name);
1475
+ }
1476
+ });
1477
+ return _context2.abrupt("return", {
1478
+ ok: missing.length === 0,
1479
+ missing: missing
1480
+ });
1481
+ case 6:
1482
+ case "end":
1483
+ return _context2.stop();
1484
+ }
1485
+ }
1486
+ }, _callee2, this);
1487
+ }));
1488
+ function check(_x5, _x6, _x7, _x8) {
1489
+ return _check.apply(this, arguments);
1490
+ }
1491
+ return check;
1492
+ }()
1493
+ }, {
1494
+ key: "calculatePermissions",
1495
+ value: function () {
1496
+ var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(spaceId, roomId, topicId) {
1497
+ var userId, userRoles, promises, roomMember;
1498
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1499
+ while (1) {
1500
+ switch (_context3.prev = _context3.next) {
1501
+ case 0:
1502
+ if (!(topicId && !roomId || roomId && !spaceId)) {
1503
+ _context3.next = 2;
1504
+ break;
1505
+ }
1506
+ throw new Error('Corrupted arguments hierarchy');
1507
+ case 2:
1508
+ _context3.next = 4;
1509
+ return this.tracker.getMe();
1510
+ case 4:
1511
+ userId = _context3.sent.id;
1512
+ userRoles = [];
1513
+ promises = [
1514
+ // Global user overwrites
1515
+ this.getOverwrites('Global', null, 'User', userId).then(function (v) {
1516
+ return v.overwrites;
1517
+ })];
1518
+ if (!spaceId) {
1519
+ _context3.next = 18;
1520
+ break;
1521
+ }
1522
+ _context3.t0 = userRoles.push;
1523
+ _context3.t1 = userRoles;
1524
+ _context3.t2 = PermissionsManager_toConsumableArray;
1525
+ _context3.next = 13;
1526
+ return this.tracker.spaces.getMe(spaceId);
1527
+ case 13:
1528
+ _context3.t3 = _context3.sent.roles;
1529
+ _context3.t4 = (0, _context3.t2)(_context3.t3);
1530
+ _context3.t0.apply.call(_context3.t0, _context3.t1, _context3.t4);
1531
+ promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));
1532
+ promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(function (v) {
1533
+ return v.overwrites;
1534
+ }));
1535
+ case 18:
1536
+ if (!roomId) {
1537
+ _context3.next = 24;
1538
+ break;
1539
+ }
1540
+ _context3.next = 21;
1541
+ return this.tracker.rooms.getMe(roomId);
1542
+ case 21:
1543
+ roomMember = _context3.sent;
1544
+ if (roomMember.roles !== null) {
1545
+ // Room overwrites from roles (only for space rooms)
1546
+ userRoles.push.apply(userRoles, PermissionsManager_toConsumableArray(roomMember.roles));
1547
+ promises.push(this.collectRoleOverwrites(spaceId, 'Room', roomId, userRoles));
1548
+ }
1549
+ promises.push(this.getOverwrites('Room', roomId, 'User', userId).then(function (v) {
1550
+ return v.overwrites;
1551
+ }));
1552
+ case 24:
1553
+ if (topicId) {
1554
+ if (userRoles.length) {
1555
+ promises.push(this.collectRoleOverwrites(spaceId, 'Topic', topicId, userRoles));
1556
+ }
1557
+ promises.push(this.getOverwrites('Topic', topicId, 'User', userId).then(function (v) {
1558
+ return v.overwrites;
1559
+ }));
1560
+ }
1561
+ _context3.t5 = this;
1562
+ _context3.next = 28;
1563
+ return Promise.all(promises);
1564
+ case 28:
1565
+ _context3.t6 = _context3.sent;
1566
+ return _context3.abrupt("return", _context3.t5.resolveOverwritesHierarchy.call(_context3.t5, _context3.t6));
1567
+ case 30:
1568
+ case "end":
1569
+ return _context3.stop();
1570
+ }
1571
+ }
1572
+ }, _callee3, this);
1573
+ }));
1574
+ function calculatePermissions(_x9, _x10, _x11) {
1575
+ return _calculatePermissions.apply(this, arguments);
1576
+ }
1577
+ return calculatePermissions;
1578
+ }()
1579
+ }, {
1580
+ key: "handlePermissionOverwrites",
1581
+ value: function handlePermissionOverwrites(ev) {
1582
+ this.overwrites.set([getOvIdByObject(ev), ev]);
1583
+ this.emit('change');
1584
+ }
1585
+ }, {
1586
+ key: "collectRoleOverwrites",
1587
+ value: function () {
1588
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, layer, layerId, userRoles) {
1589
+ var _this2 = this;
1590
+ var roleOverwrites;
1591
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1592
+ while (1) {
1593
+ switch (_context4.prev = _context4.next) {
1594
+ case 0:
1595
+ _context4.next = 2;
1596
+ return Promise.all(userRoles.map(function (roleId) {
1597
+ return _this2.getOverwrites(layer, layerId, 'Role', roleId);
1598
+ }));
1599
+ case 2:
1600
+ roleOverwrites = _context4.sent;
1601
+ return _context4.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
1602
+ case 4:
1603
+ case "end":
1604
+ return _context4.stop();
1605
+ }
1606
+ }
1607
+ }, _callee4, this);
1608
+ }));
1609
+ function collectRoleOverwrites(_x12, _x13, _x14, _x15) {
1610
+ return _collectRoleOverwrites.apply(this, arguments);
1611
+ }
1612
+ return collectRoleOverwrites;
1613
+ }()
1614
+ }, {
1615
+ key: "resolveOverwritesFromRolesByOrder",
1616
+ value: function () {
1617
+ var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, overwrites) {
1618
+ var allows, denies, roles, sortedOverwrites, permissionsLength;
1619
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1620
+ while (1) {
1621
+ switch (_context5.prev = _context5.next) {
1622
+ case 0:
1623
+ allows = 0, denies = 0;
1624
+ _context5.next = 3;
1625
+ return this.tracker.spaces.getRoles(spaceId);
1626
+ case 3:
1627
+ roles = _context5.sent;
1628
+ sortedOverwrites = overwrites.sort(function (a, b) {
1629
+ return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
1630
+ }); // Max length of bit word
1631
+ permissionsLength = overwrites.reduce(function (previousValue, currentValue) {
1632
+ return Math.max(previousValue, currentValue.overwrites.allow.toString(2).length, currentValue.overwrites.deny.toString(2).length);
1633
+ }, 0);
1634
+ sortedOverwrites.forEach(function (overwriteEvent) {
1635
+ var overwrites = overwriteEvent.overwrites;
1636
+ var revDecDenies = overwrites.deny.toString(2).split('').reverse().join('');
1637
+ var revDecAllows = overwrites.allow.toString(2).split('').reverse().join('');
1638
+ for (var i = 0; i < permissionsLength; i++) {
1639
+ var _revDecDenies$i, _revDecAllows$i;
1640
+ var deny = parseInt((_revDecDenies$i = revDecDenies[i]) !== null && _revDecDenies$i !== void 0 ? _revDecDenies$i : '0');
1641
+ var allow = parseInt((_revDecAllows$i = revDecAllows[i]) !== null && _revDecAllows$i !== void 0 ? _revDecAllows$i : '0');
1642
+ if (deny) {
1643
+ denies |= 1 << i;
1644
+ }
1645
+ if (allow) {
1646
+ allows |= 1 << i;
1647
+ }
1648
+ }
1649
+ });
1650
+ return _context5.abrupt("return", {
1651
+ allow: allows,
1652
+ deny: denies
1653
+ });
1654
+ case 8:
1655
+ case "end":
1656
+ return _context5.stop();
1657
+ }
1658
+ }
1659
+ }, _callee5, this);
1660
+ }));
1661
+ function resolveOverwritesFromRolesByOrder(_x16, _x17) {
1662
+ return _resolveOverwritesFromRolesByOrder.apply(this, arguments);
1663
+ }
1664
+ return resolveOverwritesFromRolesByOrder;
1665
+ }()
1666
+ }, {
1667
+ key: "resolveOverwritesHierarchy",
1668
+ value: function resolveOverwritesHierarchy(permissionOverwritesValues) {
1669
+ var result = 0;
1670
+ var _iterator = PermissionsManager_createForOfIteratorHelper(permissionOverwritesValues),
1671
+ _step;
1672
+ try {
1673
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1674
+ var value = _step.value;
1675
+ if (value.allow & Permission.Root) {
1676
+ return this.getRootAccessValue();
1677
+ }
1678
+ result = result & ~value.deny | value.allow;
1679
+ }
1680
+ } catch (err) {
1681
+ _iterator.e(err);
1682
+ } finally {
1683
+ _iterator.f();
1684
+ }
1685
+ return result;
1686
+ }
1687
+ }, {
1688
+ key: "getRootAccessValue",
1689
+ value: function getRootAccessValue() {
1690
+ var result = 0;
1691
+ var _iterator2 = PermissionsManager_createForOfIteratorHelper(this.getPermissionNames()),
1692
+ _step2;
1693
+ try {
1694
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1695
+ var name = _step2.value;
1696
+ result |= Permission[name];
1697
+ }
1698
+ } catch (err) {
1699
+ _iterator2.e(err);
1700
+ } finally {
1701
+ _iterator2.f();
1702
+ }
1703
+ return result;
1704
+ }
1705
+ }, {
1706
+ key: "getPermissionNames",
1707
+ value: function getPermissionNames() {
1708
+ return Object.keys(Permission).filter(function (key) {
1709
+ return Number.isNaN(parseInt(key));
1710
+ });
1711
+ }
1712
+ }]);
1713
+ return PermissionsManager;
1714
+ }(EventTarget);
1715
+ ;// CONCATENATED MODULE: ./src/state-tracker/ChatStateTracker.ts
1716
+ function ChatStateTracker_typeof(obj) { "@babel/helpers - typeof"; return ChatStateTracker_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, ChatStateTracker_typeof(obj); }
1717
+ function ChatStateTracker_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ ChatStateTracker_regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == ChatStateTracker_typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
1718
+ function ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
1719
+ function ChatStateTracker_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { ChatStateTracker_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1720
+ function ChatStateTracker_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1721
+ function ChatStateTracker_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ChatStateTracker_toPropertyKey(descriptor.key), descriptor); } }
1722
+ function ChatStateTracker_createClass(Constructor, protoProps, staticProps) { if (protoProps) ChatStateTracker_defineProperties(Constructor.prototype, protoProps); if (staticProps) ChatStateTracker_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
1723
+ function ChatStateTracker_defineProperty(obj, key, value) { key = ChatStateTracker_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1724
+ function ChatStateTracker_toPropertyKey(arg) { var key = ChatStateTracker_toPrimitive(arg, "string"); return ChatStateTracker_typeof(key) === "symbol" ? key : String(key); }
1725
+ function ChatStateTracker_toPrimitive(input, hint) { if (ChatStateTracker_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (ChatStateTracker_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1726
+
1727
+
1728
+
1729
+
1730
+ var ChatStateTracker = /*#__PURE__*/function () {
1731
+ /**
1732
+ * State of the rooms you are in.
1733
+ */
1734
+
1735
+ /**
1736
+ * State of the spaces you are in.
1737
+ */
1738
+
1739
+ /**
1740
+ * State of your permissions.
1741
+ */
1742
+
1743
+ function ChatStateTracker(client) {
1744
+ var _this = this;
1745
+ ChatStateTracker_classCallCheck(this, ChatStateTracker);
1746
+ this.client = client;
1747
+ ChatStateTracker_defineProperty(this, "rooms", new RoomsManager(this));
1748
+ ChatStateTracker_defineProperty(this, "spaces", new SpacesManager(this));
1749
+ ChatStateTracker_defineProperty(this, "permissions", new PermissionsManager(this));
1750
+ ChatStateTracker_defineProperty(this, "me", null);
1751
+ ChatStateTracker_defineProperty(this, "deferredSession", new DeferredTask());
1752
+ this.client.on('Session', function (ev) {
1753
+ return _this.handleSession(ev);
1754
+ });
1755
+ }
1756
+ ChatStateTracker_createClass(ChatStateTracker, [{
1757
+ key: "getMe",
1758
+ value: function () {
1759
+ var _getMe = ChatStateTracker_asyncToGenerator( /*#__PURE__*/ChatStateTracker_regeneratorRuntime().mark(function _callee() {
1760
+ return ChatStateTracker_regeneratorRuntime().wrap(function _callee$(_context) {
1761
+ while (1) {
1762
+ switch (_context.prev = _context.next) {
1763
+ case 0:
1764
+ _context.next = 2;
1765
+ return this.deferredSession.promise;
1766
+ case 2:
1767
+ return _context.abrupt("return", this.me);
1768
+ case 3:
1769
+ case "end":
1770
+ return _context.stop();
1771
+ }
1772
+ }
1773
+ }, _callee, this);
1774
+ }));
1775
+ function getMe() {
1776
+ return _getMe.apply(this, arguments);
1777
+ }
1778
+ return getMe;
1779
+ }()
1780
+ }, {
1781
+ key: "handleSession",
1782
+ value: function handleSession(ev) {
1783
+ this.me = ev.user;
1784
+ this.deferredSession.resolve();
1190
1785
  }
1191
1786
  }]);
1192
1787
  return ChatStateTracker;
@@ -1798,6 +2393,7 @@ var AuthClient = /*#__PURE__*/function (_AbstractRestClient) {
1798
2393
 
1799
2394
 
1800
2395
 
2396
+
1801
2397
  /******/ return __webpack_exports__;
1802
2398
  /******/ })()
1803
2399
  ;