polfan-server-js-client 0.1.2 → 0.1.6
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/.gitmodules +3 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/polfan-server-js-client.iml +3 -1
- package/.idea/vcs.xml +1 -1
- package/README.md +17 -17
- package/build/index.js +1968 -462
- package/build/index.js.map +1 -1
- package/build/types/AbstractChatClient.d.ts +26 -9
- package/build/types/IndexedObjectCollection.d.ts +3 -3
- package/build/types/Permissions.d.ts +65 -0
- package/build/types/WebSocketChatClient.d.ts +1 -1
- package/build/types/index.d.ts +4 -1
- package/build/types/state-tracker/AsyncUtils.d.ts +14 -0
- package/build/types/state-tracker/ChatStateTracker.d.ts +26 -0
- package/build/types/state-tracker/MessagesManager.d.ts +39 -0
- package/build/types/state-tracker/PermissionsManager.d.ts +41 -0
- package/build/types/state-tracker/RoomsManager.d.ts +49 -0
- package/build/types/state-tracker/SpacesManager.d.ts +52 -0
- package/build/types/state-tracker/functions.d.ts +2 -0
- package/build/types/types/src/index.d.ts +82 -0
- package/build/types/types/src/schemes/AckReport.d.ts +7 -0
- package/build/types/types/src/schemes/ChatLocation.d.ts +5 -0
- package/build/types/types/src/schemes/Envelope.d.ts +5 -0
- package/build/types/types/src/schemes/Message.d.ts +7 -0
- package/build/types/types/src/schemes/PermissionOverwritesValue.d.ts +4 -0
- package/build/types/types/src/schemes/Role.d.ts +6 -0
- package/build/types/types/src/schemes/Room.d.ts +10 -0
- package/build/types/types/src/schemes/RoomMember.d.ts +7 -0
- package/build/types/types/src/schemes/RoomSummary.d.ts +5 -0
- package/build/types/types/src/schemes/Space.d.ts +6 -0
- package/build/types/types/src/schemes/SpaceMember.d.ts +5 -0
- package/build/types/types/src/schemes/Topic.d.ts +5 -0
- package/build/types/types/src/schemes/User.d.ts +8 -0
- package/build/types/types/src/schemes/UserState.d.ts +6 -0
- package/build/types/types/src/schemes/commands/Ack.d.ts +5 -0
- package/build/types/types/src/schemes/commands/AssignRole.d.ts +6 -0
- package/build/types/types/src/schemes/commands/CreateMessage.d.ts +5 -0
- package/build/types/types/src/schemes/commands/CreateOwner.d.ts +5 -0
- package/build/types/types/src/schemes/commands/CreateRole.d.ts +5 -0
- package/build/types/types/src/schemes/commands/CreateRoom.d.ts +7 -0
- package/build/types/types/src/schemes/commands/CreateSpace.d.ts +3 -0
- package/build/types/types/src/schemes/commands/CreateTopic.d.ts +12 -0
- package/build/types/types/src/schemes/commands/DeassignRole.d.ts +6 -0
- package/build/types/types/src/schemes/commands/DeleteOwner.d.ts +5 -0
- package/build/types/types/src/schemes/commands/DeleteRole.d.ts +4 -0
- package/build/types/types/src/schemes/commands/DeleteRoom.d.ts +3 -0
- package/build/types/types/src/schemes/commands/DeleteSpace.d.ts +3 -0
- package/build/types/types/src/schemes/commands/DeleteTopic.d.ts +4 -0
- package/build/types/types/src/schemes/commands/GetAckReports.d.ts +4 -0
- package/build/types/types/src/schemes/commands/GetComputedPermissions.d.ts +4 -0
- package/build/types/types/src/schemes/commands/GetOwners.d.ts +4 -0
- package/build/types/types/src/schemes/commands/GetPermissionOverwriteTargets.d.ts +4 -0
- package/build/types/types/src/schemes/commands/GetPermissionOverwrites.d.ts +6 -0
- package/build/types/types/src/schemes/commands/GetRoomMembers.d.ts +3 -0
- package/build/types/types/src/schemes/commands/GetSession.d.ts +2 -0
- package/build/types/types/src/schemes/commands/GetSpaceMembers.d.ts +3 -0
- package/build/types/types/src/schemes/commands/GetSpaceRooms.d.ts +3 -0
- package/build/types/types/src/schemes/commands/JoinRoom.d.ts +3 -0
- package/build/types/types/src/schemes/commands/JoinSpace.d.ts +3 -0
- package/build/types/types/src/schemes/commands/LeaveRoom.d.ts +3 -0
- package/build/types/types/src/schemes/commands/LeaveSpace.d.ts +3 -0
- package/build/types/types/src/schemes/commands/SetPermissionOverwrites.d.ts +8 -0
- package/build/types/types/src/schemes/commands/UpdateRole.d.ts +7 -0
- package/build/types/types/src/schemes/commands/UpdateRoom.d.ts +5 -0
- package/build/types/types/src/schemes/commands/UpdateSpace.d.ts +4 -0
- package/build/types/types/src/schemes/events/AckReports.d.ts +4 -0
- package/build/types/types/src/schemes/events/Bye.d.ts +3 -0
- package/build/types/types/src/schemes/events/ComputedPermissions.d.ts +5 -0
- package/build/types/types/src/schemes/events/Error.d.ts +4 -0
- package/build/types/types/src/schemes/events/NewMessage.d.ts +6 -0
- package/build/types/types/src/schemes/events/NewRole.d.ts +5 -0
- package/build/types/types/src/schemes/events/NewRoom.d.ts +5 -0
- package/build/types/types/src/schemes/events/NewTopic.d.ts +5 -0
- package/build/types/types/src/schemes/events/Ok.d.ts +2 -0
- package/build/types/types/src/schemes/events/Owners.d.ts +8 -0
- package/build/types/types/src/schemes/events/PermissionOverwriteTargets.d.ts +10 -0
- package/build/types/types/src/schemes/events/PermissionOverwrites.d.ts +8 -0
- package/build/types/types/src/schemes/events/PermissionOverwritesUpdated.d.ts +8 -0
- package/build/types/types/src/schemes/events/RoleDeleted.d.ts +4 -0
- package/build/types/types/src/schemes/events/RoleUpdated.d.ts +5 -0
- package/build/types/types/src/schemes/events/RoomDeleted.d.ts +3 -0
- package/build/types/types/src/schemes/events/RoomJoined.d.ts +4 -0
- package/build/types/types/src/schemes/events/RoomLeft.d.ts +3 -0
- package/build/types/types/src/schemes/events/RoomMemberJoined.d.ts +5 -0
- package/build/types/types/src/schemes/events/RoomMemberLeft.d.ts +4 -0
- package/build/types/types/src/schemes/events/RoomMemberUpdated.d.ts +6 -0
- package/build/types/types/src/schemes/events/RoomMembers.d.ts +5 -0
- package/build/types/types/src/schemes/events/RoomUpdated.d.ts +4 -0
- package/build/types/types/src/schemes/events/Session.d.ts +7 -0
- package/build/types/types/src/schemes/events/SpaceDeleted.d.ts +3 -0
- package/build/types/types/src/schemes/events/SpaceJoined.d.ts +4 -0
- package/build/types/types/src/schemes/events/SpaceLeft.d.ts +3 -0
- package/build/types/types/src/schemes/events/SpaceMemberJoined.d.ts +5 -0
- package/build/types/types/src/schemes/events/SpaceMemberLeft.d.ts +4 -0
- package/build/types/types/src/schemes/events/SpaceMemberUpdated.d.ts +6 -0
- package/build/types/types/src/schemes/events/SpaceMembers.d.ts +5 -0
- package/build/types/types/src/schemes/events/SpaceRooms.d.ts +5 -0
- package/build/types/types/src/schemes/events/SpaceUpdated.d.ts +4 -0
- package/build/types/types/src/schemes/events/TopicDeleted.d.ts +4 -0
- package/build/types/types/src/schemes/events/UserUpdated.d.ts +4 -0
- package/jest.config.ts +199 -0
- package/package.json +4 -22
- package/src/AbstractChatClient.ts +50 -16
- package/src/AbstractRestClient.ts +65 -65
- package/src/IndexedObjectCollection.ts +3 -3
- package/src/Permissions.ts +46 -0
- package/src/WebApiChatClient.ts +1 -1
- package/src/WebSocketChatClient.ts +2 -2
- package/src/index.ts +7 -2
- package/src/state-tracker/AsyncUtils.ts +38 -0
- package/src/state-tracker/ChatStateTracker.ts +42 -0
- package/src/state-tracker/MessagesManager.ts +154 -0
- package/src/state-tracker/PermissionsManager.ts +306 -0
- package/src/state-tracker/RoomsManager.ts +272 -0
- package/src/state-tracker/SpacesManager.ts +267 -0
- package/src/state-tracker/functions.ts +25 -0
- package/src/types/README.md +2 -0
- package/src/types/package-lock.json +31 -0
- package/src/types/package.json +16 -0
- package/src/types/src/index.ts +168 -0
- package/src/types/src/schemes/AckReport.ts +7 -0
- package/src/types/src/schemes/ChatLocation.ts +5 -0
- package/src/types/src/schemes/Envelope.ts +5 -0
- package/src/types/src/schemes/Message.ts +8 -0
- package/src/types/src/schemes/PermissionOverwritesValue.ts +4 -0
- package/src/types/src/schemes/Role.ts +6 -0
- package/src/types/src/schemes/Room.ts +12 -0
- package/src/types/src/schemes/RoomMember.ts +8 -0
- package/src/types/src/schemes/RoomSummary.ts +5 -0
- package/src/types/src/schemes/Space.ts +7 -0
- package/src/types/src/schemes/SpaceMember.ts +6 -0
- package/src/types/src/schemes/Topic.ts +5 -0
- package/src/types/src/schemes/User.ts +9 -0
- package/src/types/src/schemes/UserState.ts +7 -0
- package/src/types/src/schemes/commands/Ack.ts +6 -0
- package/src/types/src/schemes/commands/AssignRole.ts +7 -0
- package/src/types/src/schemes/commands/CreateMessage.ts +6 -0
- package/src/types/src/schemes/commands/CreateOwner.ts +6 -0
- package/src/types/src/schemes/commands/CreateRole.ts +5 -0
- package/src/types/src/schemes/commands/CreateRoom.ts +8 -0
- package/src/types/src/schemes/commands/CreateSpace.ts +3 -0
- package/src/types/src/schemes/commands/CreateTopic.ts +14 -0
- package/src/types/src/schemes/commands/DeassignRole.ts +7 -0
- package/src/types/src/schemes/commands/DeleteOwner.ts +6 -0
- package/src/types/src/schemes/commands/DeleteRole.ts +4 -0
- package/src/types/src/schemes/commands/DeleteRoom.ts +3 -0
- package/src/types/src/schemes/commands/DeleteSpace.ts +3 -0
- package/src/types/src/schemes/commands/DeleteTopic.ts +5 -0
- package/src/types/src/schemes/commands/GetAckReports.ts +5 -0
- package/src/types/src/schemes/commands/GetComputedPermissions.ts +5 -0
- package/src/types/src/schemes/commands/GetOwners.ts +5 -0
- package/src/types/src/schemes/commands/GetPermissionOverwriteTargets.ts +5 -0
- package/src/types/src/schemes/commands/GetPermissionOverwrites.ts +7 -0
- package/src/types/src/schemes/commands/GetRoomMembers.ts +3 -0
- package/src/types/src/schemes/commands/GetSession.ts +2 -0
- package/src/types/src/schemes/commands/GetSpaceMembers.ts +3 -0
- package/src/types/src/schemes/commands/GetSpaceRooms.ts +3 -0
- package/src/types/src/schemes/commands/JoinRoom.ts +3 -0
- package/src/types/src/schemes/commands/JoinSpace.ts +3 -0
- package/src/types/src/schemes/commands/LeaveRoom.ts +3 -0
- package/src/types/src/schemes/commands/LeaveSpace.ts +3 -0
- package/src/types/src/schemes/commands/SetPermissionOverwrites.ts +9 -0
- package/src/types/src/schemes/commands/UpdateRole.ts +7 -0
- package/src/types/src/schemes/commands/UpdateRoom.ts +5 -0
- package/src/types/src/schemes/commands/UpdateSpace.ts +4 -0
- package/src/types/src/schemes/events/AckReports.ts +5 -0
- package/src/types/src/schemes/events/Bye.ts +3 -0
- package/src/types/src/schemes/events/ComputedPermissions.ts +6 -0
- package/src/types/src/schemes/events/Error.ts +4 -0
- package/src/types/src/schemes/events/NewMessage.ts +7 -0
- package/src/types/src/schemes/events/NewRole.ts +6 -0
- package/src/types/src/schemes/events/NewRoom.ts +6 -0
- package/src/types/src/schemes/events/NewTopic.ts +6 -0
- package/src/types/src/schemes/events/Ok.ts +3 -0
- package/src/types/src/schemes/events/Owners.ts +9 -0
- package/src/types/src/schemes/events/PermissionOverwriteTargets.ts +11 -0
- package/src/types/src/schemes/events/PermissionOverwrites.ts +9 -0
- package/src/types/src/schemes/events/PermissionOverwritesUpdated.ts +9 -0
- package/src/types/src/schemes/events/RoleDeleted.ts +4 -0
- package/src/types/src/schemes/events/RoleUpdated.ts +6 -0
- package/src/types/src/schemes/events/RoomDeleted.ts +3 -0
- package/src/types/src/schemes/events/RoomJoined.ts +5 -0
- package/src/types/src/schemes/events/RoomLeft.ts +3 -0
- package/src/types/src/schemes/events/RoomMemberJoined.ts +6 -0
- package/src/types/src/schemes/events/RoomMemberLeft.ts +4 -0
- package/src/types/src/schemes/events/RoomMemberUpdated.ts +7 -0
- package/src/types/src/schemes/events/RoomMembers.ts +6 -0
- package/src/types/src/schemes/events/RoomUpdated.ts +5 -0
- package/src/types/src/schemes/events/Session.ts +8 -0
- package/src/types/src/schemes/events/SpaceDeleted.ts +3 -0
- package/src/types/src/schemes/events/SpaceJoined.ts +5 -0
- package/src/types/src/schemes/events/SpaceLeft.ts +3 -0
- package/src/types/src/schemes/events/SpaceMemberJoined.ts +6 -0
- package/src/types/src/schemes/events/SpaceMemberLeft.ts +4 -0
- package/src/types/src/schemes/events/SpaceMemberUpdated.ts +7 -0
- package/src/types/src/schemes/events/SpaceMembers.ts +6 -0
- package/src/types/src/schemes/events/SpaceRooms.ts +6 -0
- package/src/types/src/schemes/events/SpaceUpdated.ts +5 -0
- package/src/types/src/schemes/events/TopicDeleted.ts +5 -0
- package/src/types/src/schemes/events/UserUpdated.ts +5 -0
- package/src/types/tsconfig.json +75 -0
- package/tests/async-utils.test.ts +30 -0
- package/tests/permissions.test.ts +14 -0
- package/tests/space-roles.test.ts +43 -0
- package/build/types/ChatStateTracker.d.ts +0 -54
- package/index.html +0 -8
- package/src/ChatStateTracker.ts +0 -336
package/build/index.js
CHANGED
|
@@ -52,8 +52,11 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
52
52
|
"AuthClient": () => (/* reexport */ AuthClient),
|
|
53
53
|
"IndexedCollection": () => (/* reexport */ IndexedCollection),
|
|
54
54
|
"IndexedObjectCollection": () => (/* reexport */ IndexedObjectCollection),
|
|
55
|
+
"Layer": () => (/* reexport */ Layer),
|
|
55
56
|
"ObservableIndexedCollection": () => (/* reexport */ ObservableIndexedCollection),
|
|
56
57
|
"ObservableIndexedObjectCollection": () => (/* reexport */ ObservableIndexedObjectCollection),
|
|
58
|
+
"PermissionDefinition": () => (/* reexport */ PermissionDefinition),
|
|
59
|
+
"Permissions": () => (/* reexport */ Permissions),
|
|
57
60
|
"WebApiChatClient": () => (/* reexport */ WebApiChatClient),
|
|
58
61
|
"WebSocketChatClient": () => (/* reexport */ WebSocketChatClient)
|
|
59
62
|
});
|
|
@@ -561,130 +564,557 @@ var ObservableIndexedObjectCollection = /*#__PURE__*/function (_IndexedObjectCol
|
|
|
561
564
|
}]);
|
|
562
565
|
return ObservableIndexedObjectCollection;
|
|
563
566
|
}(IndexedObjectCollection);
|
|
564
|
-
;// CONCATENATED MODULE: ./src/
|
|
565
|
-
function
|
|
566
|
-
function
|
|
567
|
-
function
|
|
568
|
-
function
|
|
569
|
-
function
|
|
570
|
-
function
|
|
571
|
-
function
|
|
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; }
|
|
567
|
+
;// CONCATENATED MODULE: ./src/state-tracker/AsyncUtils.ts
|
|
568
|
+
function AsyncUtils_typeof(obj) { "@babel/helpers - typeof"; return AsyncUtils_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; }, AsyncUtils_typeof(obj); }
|
|
569
|
+
function AsyncUtils_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, AsyncUtils_toPropertyKey(descriptor.key), descriptor); } }
|
|
570
|
+
function AsyncUtils_createClass(Constructor, protoProps, staticProps) { if (protoProps) AsyncUtils_defineProperties(Constructor.prototype, protoProps); if (staticProps) AsyncUtils_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
571
|
+
function AsyncUtils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
572
|
+
function AsyncUtils_defineProperty(obj, key, value) { key = AsyncUtils_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
573
|
+
function AsyncUtils_toPropertyKey(arg) { var key = AsyncUtils_toPrimitive(arg, "string"); return AsyncUtils_typeof(key) === "symbol" ? key : String(key); }
|
|
574
|
+
function AsyncUtils_toPrimitive(input, hint) { if (AsyncUtils_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (AsyncUtils_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
575
|
+
|
|
576
|
+
var DeferredTask = /*#__PURE__*/AsyncUtils_createClass(function DeferredTask() {
|
|
577
|
+
var _this = this;
|
|
578
|
+
AsyncUtils_classCallCheck(this, DeferredTask);
|
|
579
|
+
AsyncUtils_defineProperty(this, "promise", void 0);
|
|
580
|
+
AsyncUtils_defineProperty(this, "resolve", void 0);
|
|
581
|
+
this.promise = new Promise(function (resolve) {
|
|
582
|
+
return _this.resolve = resolve;
|
|
583
|
+
});
|
|
584
|
+
});
|
|
585
|
+
var PromiseRegistry = /*#__PURE__*/function () {
|
|
586
|
+
function PromiseRegistry() {
|
|
587
|
+
AsyncUtils_classCallCheck(this, PromiseRegistry);
|
|
588
|
+
AsyncUtils_defineProperty(this, "promises", new IndexedCollection());
|
|
589
|
+
}
|
|
590
|
+
AsyncUtils_createClass(PromiseRegistry, [{
|
|
591
|
+
key: "register",
|
|
592
|
+
value: function register(promise, key) {
|
|
593
|
+
this.promises.set([key, promise]);
|
|
594
|
+
}
|
|
595
|
+
}, {
|
|
596
|
+
key: "registerByFunction",
|
|
597
|
+
value: function registerByFunction(fn, key) {
|
|
598
|
+
this.register(fn(), key);
|
|
599
|
+
}
|
|
600
|
+
}, {
|
|
601
|
+
key: "get",
|
|
602
|
+
value: function get(key) {
|
|
603
|
+
return this.promises.get(key);
|
|
604
|
+
}
|
|
605
|
+
}, {
|
|
606
|
+
key: "has",
|
|
607
|
+
value: function has(key) {
|
|
608
|
+
return this.promises.has(key);
|
|
609
|
+
}
|
|
610
|
+
}, {
|
|
611
|
+
key: "notExist",
|
|
612
|
+
value: function notExist(key) {
|
|
613
|
+
return !this.has(key);
|
|
614
|
+
}
|
|
615
|
+
}, {
|
|
616
|
+
key: "forget",
|
|
617
|
+
value: function forget() {
|
|
618
|
+
var _this$promises;
|
|
619
|
+
(_this$promises = this.promises)["delete"].apply(_this$promises, arguments);
|
|
620
|
+
}
|
|
621
|
+
}]);
|
|
622
|
+
return PromiseRegistry;
|
|
623
|
+
}();
|
|
624
|
+
;// CONCATENATED MODULE: ./src/state-tracker/MessagesManager.ts
|
|
625
|
+
function MessagesManager_typeof(obj) { "@babel/helpers - typeof"; return MessagesManager_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; }, MessagesManager_typeof(obj); }
|
|
626
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
627
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { MessagesManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
628
|
+
function MessagesManager_toConsumableArray(arr) { return MessagesManager_arrayWithoutHoles(arr) || MessagesManager_iterableToArray(arr) || MessagesManager_unsupportedIterableToArray(arr) || MessagesManager_nonIterableSpread(); }
|
|
629
|
+
function MessagesManager_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."); }
|
|
630
|
+
function MessagesManager_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return MessagesManager_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 MessagesManager_arrayLikeToArray(o, minLen); }
|
|
631
|
+
function MessagesManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
632
|
+
function MessagesManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return MessagesManager_arrayLikeToArray(arr); }
|
|
633
|
+
function MessagesManager_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; }
|
|
634
|
+
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" == MessagesManager_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
635
|
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
636
|
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
|
|
576
|
-
function
|
|
577
|
-
function
|
|
578
|
-
function
|
|
579
|
-
function
|
|
580
|
-
function
|
|
637
|
+
function MessagesManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
638
|
+
function MessagesManager_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, MessagesManager_toPropertyKey(descriptor.key), descriptor); } }
|
|
639
|
+
function MessagesManager_createClass(Constructor, protoProps, staticProps) { if (protoProps) MessagesManager_defineProperties(Constructor.prototype, protoProps); if (staticProps) MessagesManager_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
640
|
+
function MessagesManager_defineProperty(obj, key, value) { key = MessagesManager_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
641
|
+
function MessagesManager_toPropertyKey(arg) { var key = MessagesManager_toPrimitive(arg, "string"); return MessagesManager_typeof(key) === "symbol" ? key : String(key); }
|
|
642
|
+
function MessagesManager_toPrimitive(input, hint) { if (MessagesManager_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (MessagesManager_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
581
643
|
|
|
582
|
-
var
|
|
644
|
+
var getCombinedId = function getCombinedId(location) {
|
|
645
|
+
var _location$roomId, _location$topicId;
|
|
646
|
+
return ((_location$roomId = location.roomId) !== null && _location$roomId !== void 0 ? _location$roomId : '') + ((_location$topicId = location.topicId) !== null && _location$topicId !== void 0 ? _location$topicId : '');
|
|
647
|
+
};
|
|
648
|
+
var MessagesManager = /*#__PURE__*/function () {
|
|
583
649
|
// Temporary not lazy loaded; server must implement GetTopicMessages command.
|
|
584
650
|
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
this
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
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();
|
|
651
|
+
function MessagesManager(tracker) {
|
|
652
|
+
var _this = this;
|
|
653
|
+
MessagesManager_classCallCheck(this, MessagesManager);
|
|
654
|
+
this.tracker = tracker;
|
|
655
|
+
MessagesManager_defineProperty(this, "list", new IndexedCollection());
|
|
656
|
+
MessagesManager_defineProperty(this, "acks", new IndexedCollection());
|
|
657
|
+
this.tracker.client.on('NewMessage', function (ev) {
|
|
658
|
+
return _this.handleNewMessage(ev);
|
|
659
|
+
});
|
|
660
|
+
this.tracker.client.on('AckReports', function (ev) {
|
|
661
|
+
return _this.handleAckReports(ev);
|
|
662
|
+
});
|
|
603
663
|
}
|
|
604
|
-
|
|
605
|
-
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Get collection of the messages written in topic.
|
|
667
|
+
*/
|
|
668
|
+
MessagesManager_createClass(MessagesManager, [{
|
|
669
|
+
key: "get",
|
|
606
670
|
value: function () {
|
|
607
|
-
var
|
|
671
|
+
var _get = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(location) {
|
|
608
672
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
609
673
|
while (1) {
|
|
610
674
|
switch (_context.prev = _context.next) {
|
|
611
675
|
case 0:
|
|
612
|
-
_context.
|
|
613
|
-
|
|
614
|
-
case 2:
|
|
615
|
-
return _context.abrupt("return", this.me);
|
|
616
|
-
case 3:
|
|
676
|
+
return _context.abrupt("return", this.list.get(getCombinedId(location)));
|
|
677
|
+
case 1:
|
|
617
678
|
case "end":
|
|
618
679
|
return _context.stop();
|
|
619
680
|
}
|
|
620
681
|
}
|
|
621
682
|
}, _callee, this);
|
|
622
683
|
}));
|
|
623
|
-
function
|
|
624
|
-
return
|
|
684
|
+
function get(_x) {
|
|
685
|
+
return _get.apply(this, arguments);
|
|
625
686
|
}
|
|
626
|
-
return
|
|
687
|
+
return get;
|
|
627
688
|
}()
|
|
689
|
+
/**
|
|
690
|
+
* Cache ack reports for all joined rooms in a space and fetch them in bulk if necessary.
|
|
691
|
+
* Then you can get the reports using getRoomAckReports().
|
|
692
|
+
* @see getRoomAckReports
|
|
693
|
+
*/
|
|
628
694
|
}, {
|
|
629
|
-
key: "
|
|
695
|
+
key: "cacheSpaceAckReports",
|
|
630
696
|
value: function () {
|
|
631
|
-
var
|
|
697
|
+
var _cacheSpaceAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(spaceId) {
|
|
698
|
+
var _this2 = this;
|
|
699
|
+
var roomIds, missingRoomIds, result;
|
|
632
700
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
633
701
|
while (1) {
|
|
634
702
|
switch (_context2.prev = _context2.next) {
|
|
635
703
|
case 0:
|
|
636
704
|
_context2.next = 2;
|
|
637
|
-
return this.
|
|
705
|
+
return this.tracker.spaces.get();
|
|
638
706
|
case 2:
|
|
639
|
-
|
|
640
|
-
|
|
707
|
+
if (_context2.sent.has(spaceId)) {
|
|
708
|
+
_context2.next = 4;
|
|
709
|
+
break;
|
|
710
|
+
}
|
|
711
|
+
throw new Error("You are not in space ".concat(spaceId));
|
|
712
|
+
case 4:
|
|
713
|
+
_context2.next = 6;
|
|
714
|
+
return this.tracker.rooms.get();
|
|
715
|
+
case 6:
|
|
716
|
+
roomIds = _context2.sent.findBy('spaceId', spaceId).map(function (room) {
|
|
717
|
+
return room.id;
|
|
718
|
+
});
|
|
719
|
+
missingRoomIds = roomIds.filter(function (roomId) {
|
|
720
|
+
return !_this2.acks.has(roomId);
|
|
721
|
+
});
|
|
722
|
+
if (!missingRoomIds.length) {
|
|
723
|
+
_context2.next = 15;
|
|
724
|
+
break;
|
|
725
|
+
}
|
|
726
|
+
_context2.next = 11;
|
|
727
|
+
return this.tracker.client.send('GetAckReports', {
|
|
728
|
+
location: {
|
|
729
|
+
spaceId: spaceId
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
case 11:
|
|
733
|
+
result = _context2.sent;
|
|
734
|
+
if (!result.error) {
|
|
735
|
+
_context2.next = 14;
|
|
736
|
+
break;
|
|
737
|
+
}
|
|
738
|
+
throw result.error;
|
|
739
|
+
case 14:
|
|
740
|
+
missingRoomIds.forEach(function (roomId) {
|
|
741
|
+
var reports = result.data.reports.filter(function (report) {
|
|
742
|
+
return report.roomId === roomId;
|
|
743
|
+
});
|
|
744
|
+
_this2.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', reports)]);
|
|
745
|
+
});
|
|
746
|
+
case 15:
|
|
641
747
|
case "end":
|
|
642
748
|
return _context2.stop();
|
|
643
749
|
}
|
|
644
750
|
}
|
|
645
751
|
}, _callee2, this);
|
|
646
752
|
}));
|
|
647
|
-
function
|
|
648
|
-
return
|
|
753
|
+
function cacheSpaceAckReports(_x2) {
|
|
754
|
+
return _cacheSpaceAckReports.apply(this, arguments);
|
|
649
755
|
}
|
|
650
|
-
return
|
|
756
|
+
return cacheSpaceAckReports;
|
|
651
757
|
}()
|
|
758
|
+
/**
|
|
759
|
+
* Get ack reports for the given room. Undefined if you are not in the room.
|
|
760
|
+
* @param roomId
|
|
761
|
+
*/
|
|
652
762
|
}, {
|
|
653
|
-
key: "
|
|
763
|
+
key: "getRoomAckReports",
|
|
654
764
|
value: function () {
|
|
655
|
-
var
|
|
765
|
+
var _getRoomAckReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(roomId) {
|
|
766
|
+
var room, result;
|
|
656
767
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
657
768
|
while (1) {
|
|
658
769
|
switch (_context3.prev = _context3.next) {
|
|
659
770
|
case 0:
|
|
660
771
|
_context3.next = 2;
|
|
661
|
-
return this.
|
|
772
|
+
return this.tracker.rooms.get();
|
|
662
773
|
case 2:
|
|
663
|
-
|
|
774
|
+
room = _context3.sent.get(roomId);
|
|
775
|
+
if (room) {
|
|
776
|
+
_context3.next = 5;
|
|
777
|
+
break;
|
|
778
|
+
}
|
|
779
|
+
return _context3.abrupt("return", undefined);
|
|
780
|
+
case 5:
|
|
781
|
+
if (this.acks.has(roomId)) {
|
|
782
|
+
_context3.next = 12;
|
|
783
|
+
break;
|
|
784
|
+
}
|
|
785
|
+
_context3.next = 8;
|
|
786
|
+
return this.tracker.client.send('GetAckReports', {
|
|
787
|
+
location: {
|
|
788
|
+
roomId: roomId
|
|
789
|
+
}
|
|
790
|
+
});
|
|
791
|
+
case 8:
|
|
792
|
+
result = _context3.sent;
|
|
793
|
+
if (!result.error) {
|
|
794
|
+
_context3.next = 11;
|
|
795
|
+
break;
|
|
796
|
+
}
|
|
797
|
+
throw result.error;
|
|
798
|
+
case 11:
|
|
799
|
+
this.acks.set([roomId, new ObservableIndexedObjectCollection('topicId', result.data.reports)]);
|
|
800
|
+
case 12:
|
|
801
|
+
return _context3.abrupt("return", this.acks.get(roomId));
|
|
802
|
+
case 13:
|
|
803
|
+
case "end":
|
|
804
|
+
return _context3.stop();
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}, _callee3, this);
|
|
808
|
+
}));
|
|
809
|
+
function getRoomAckReports(_x3) {
|
|
810
|
+
return _getRoomAckReports.apply(this, arguments);
|
|
811
|
+
}
|
|
812
|
+
return getRoomAckReports;
|
|
813
|
+
}()
|
|
814
|
+
/**
|
|
815
|
+
* For internal use. If you want to delete the message, execute a proper command on client object.
|
|
816
|
+
* @internal
|
|
817
|
+
*/
|
|
818
|
+
}, {
|
|
819
|
+
key: "_deleteByTopicIds",
|
|
820
|
+
value: function _deleteByTopicIds(roomId) {
|
|
821
|
+
var _this$list, _this$acks$get;
|
|
822
|
+
for (var _len = arguments.length, topicIds = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
823
|
+
topicIds[_key - 1] = arguments[_key];
|
|
824
|
+
}
|
|
825
|
+
(_this$list = this.list)["delete"].apply(_this$list, MessagesManager_toConsumableArray(topicIds.map(function (topicId) {
|
|
826
|
+
return getCombinedId({
|
|
827
|
+
roomId: roomId,
|
|
828
|
+
topicId: topicId
|
|
829
|
+
});
|
|
830
|
+
})));
|
|
831
|
+
(_this$acks$get = this.acks.get(roomId)) === null || _this$acks$get === void 0 ? void 0 : _this$acks$get["delete"].apply(_this$acks$get, topicIds);
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* For internal use. If you want to add new topic, execute a proper command on client object.
|
|
836
|
+
* @internal
|
|
837
|
+
*/
|
|
838
|
+
}, {
|
|
839
|
+
key: "_handleNewTopics",
|
|
840
|
+
value: function _handleNewTopics(roomId) {
|
|
841
|
+
var _this$list2;
|
|
842
|
+
for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
843
|
+
topics[_key2 - 1] = arguments[_key2];
|
|
844
|
+
}
|
|
845
|
+
(_this$list2 = this.list).set.apply(_this$list2, MessagesManager_toConsumableArray(topics.map(function (topic) {
|
|
846
|
+
return [getCombinedId({
|
|
847
|
+
roomId: roomId,
|
|
848
|
+
topicId: topic.id
|
|
849
|
+
}), new ObservableIndexedObjectCollection('id')];
|
|
850
|
+
})));
|
|
851
|
+
this.createAckReportsForNewTopics(roomId, topics);
|
|
852
|
+
}
|
|
853
|
+
}, {
|
|
854
|
+
key: "handleNewMessage",
|
|
855
|
+
value: function handleNewMessage(ev) {
|
|
856
|
+
this.list.get(getCombinedId(ev.location)).set(ev.message);
|
|
857
|
+
this.updateLocallyAckReportOnNewMessage(ev);
|
|
858
|
+
}
|
|
859
|
+
}, {
|
|
860
|
+
key: "handleAckReports",
|
|
861
|
+
value: function handleAckReports(ev) {
|
|
862
|
+
var _this3 = this;
|
|
863
|
+
ev.reports.forEach(function (report) {
|
|
864
|
+
var ackReports = _this3.acks.get(report.roomId);
|
|
865
|
+
if (ackReports) {
|
|
866
|
+
ackReports.set(report);
|
|
867
|
+
}
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
}, {
|
|
871
|
+
key: "createAckReportsForNewTopics",
|
|
872
|
+
value: function createAckReportsForNewTopics(roomId, topics) {
|
|
873
|
+
var ackReports = this.acks.get(roomId);
|
|
874
|
+
if (!ackReports) {
|
|
875
|
+
// If we don't follow ack reports for this room, skip
|
|
876
|
+
return;
|
|
877
|
+
}
|
|
878
|
+
var newReports = topics.map(function (topic) {
|
|
879
|
+
return {
|
|
880
|
+
roomId: roomId,
|
|
881
|
+
topicId: topic.id,
|
|
882
|
+
lastAckMessageId: null,
|
|
883
|
+
missed: 0,
|
|
884
|
+
missedMoreThan: null
|
|
885
|
+
};
|
|
886
|
+
});
|
|
887
|
+
ackReports.set.apply(ackReports, MessagesManager_toConsumableArray(newReports));
|
|
888
|
+
}
|
|
889
|
+
}, {
|
|
890
|
+
key: "updateLocallyAckReportOnNewMessage",
|
|
891
|
+
value: function updateLocallyAckReportOnNewMessage(ev) {
|
|
892
|
+
var _this$tracker$me;
|
|
893
|
+
var ackReports = this.acks.get(ev.location.roomId);
|
|
894
|
+
if (!ackReports) {
|
|
895
|
+
// If we don't follow ack reports for this room, skip
|
|
896
|
+
return;
|
|
897
|
+
}
|
|
898
|
+
var isMe = ev.message.author.id === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id);
|
|
899
|
+
var currentAckReport = ackReports.get(ev.location.topicId);
|
|
900
|
+
var update;
|
|
901
|
+
if (isMe) {
|
|
902
|
+
// Reset missed messages count if new message is authored by me
|
|
903
|
+
update = {
|
|
904
|
+
missed: 0,
|
|
905
|
+
missedMoreThan: null,
|
|
906
|
+
lastAckMessageId: ev.message.id
|
|
907
|
+
};
|
|
908
|
+
} else {
|
|
909
|
+
// ...add 1 otherwise
|
|
910
|
+
update = {
|
|
911
|
+
missed: currentAckReport.missed === null ? null : currentAckReport.missed + 1,
|
|
912
|
+
missedMoreThan: currentAckReport.missedMoreThan === null ? null : currentAckReport.missedMoreThan
|
|
913
|
+
};
|
|
914
|
+
}
|
|
915
|
+
ackReports.set(_objectSpread(_objectSpread({}, currentAckReport), update));
|
|
916
|
+
}
|
|
917
|
+
}]);
|
|
918
|
+
return MessagesManager;
|
|
919
|
+
}();
|
|
920
|
+
;// CONCATENATED MODULE: ./src/state-tracker/RoomsManager.ts
|
|
921
|
+
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); }
|
|
922
|
+
function RoomsManager_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
923
|
+
function RoomsManager_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? RoomsManager_ownKeys(Object(source), !0).forEach(function (key) { RoomsManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : RoomsManager_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
924
|
+
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; } } }; }
|
|
925
|
+
function RoomsManager_toConsumableArray(arr) { return RoomsManager_arrayWithoutHoles(arr) || RoomsManager_iterableToArray(arr) || RoomsManager_unsupportedIterableToArray(arr) || RoomsManager_nonIterableSpread(); }
|
|
926
|
+
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."); }
|
|
927
|
+
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); }
|
|
928
|
+
function RoomsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
929
|
+
function RoomsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return RoomsManager_arrayLikeToArray(arr); }
|
|
930
|
+
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; }
|
|
931
|
+
function RoomsManager_regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ RoomsManager_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; }
|
|
932
|
+
function RoomsManager_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); } }
|
|
933
|
+
function RoomsManager_asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { RoomsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { RoomsManager_asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
934
|
+
function RoomsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
935
|
+
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); } }
|
|
936
|
+
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; }
|
|
937
|
+
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; }
|
|
938
|
+
function RoomsManager_toPropertyKey(arg) { var key = RoomsManager_toPrimitive(arg, "string"); return RoomsManager_typeof(key) === "symbol" ? key : String(key); }
|
|
939
|
+
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); }
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
var RoomsManager = /*#__PURE__*/function () {
|
|
944
|
+
function RoomsManager(tracker) {
|
|
945
|
+
var _this = this;
|
|
946
|
+
RoomsManager_classCallCheck(this, RoomsManager);
|
|
947
|
+
this.tracker = tracker;
|
|
948
|
+
RoomsManager_defineProperty(this, "messages", void 0);
|
|
949
|
+
RoomsManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
|
|
950
|
+
RoomsManager_defineProperty(this, "topics", new IndexedCollection());
|
|
951
|
+
RoomsManager_defineProperty(this, "members", new IndexedCollection());
|
|
952
|
+
RoomsManager_defineProperty(this, "deferredSession", new DeferredTask());
|
|
953
|
+
RoomsManager_defineProperty(this, "membersPromises", new PromiseRegistry());
|
|
954
|
+
this.messages = new MessagesManager(tracker);
|
|
955
|
+
this.tracker.client.on('NewTopic', function (ev) {
|
|
956
|
+
return _this.handleNewTopic(ev);
|
|
957
|
+
});
|
|
958
|
+
this.tracker.client.on('TopicDeleted', function (ev) {
|
|
959
|
+
return _this.handleTopicDeleted(ev);
|
|
960
|
+
});
|
|
961
|
+
this.tracker.client.on('RoomJoined', function (ev) {
|
|
962
|
+
return _this.handleRoomJoined(ev);
|
|
963
|
+
});
|
|
964
|
+
this.tracker.client.on('RoomLeft', function (ev) {
|
|
965
|
+
return _this.handleRoomLeft(ev);
|
|
966
|
+
});
|
|
967
|
+
this.tracker.client.on('RoomUpdated', function (ev) {
|
|
968
|
+
return _this.handleRoomUpdated(ev);
|
|
969
|
+
});
|
|
970
|
+
this.tracker.client.on('RoomDeleted', function (ev) {
|
|
971
|
+
return _this.handleRoomDeleted(ev);
|
|
972
|
+
});
|
|
973
|
+
this.tracker.client.on('RoomMemberJoined', function (ev) {
|
|
974
|
+
return _this.handleRoomMemberJoined(ev);
|
|
975
|
+
});
|
|
976
|
+
this.tracker.client.on('RoomMemberLeft', function (ev) {
|
|
977
|
+
return _this.handleRoomMemberLeft(ev);
|
|
978
|
+
});
|
|
979
|
+
this.tracker.client.on('RoomMembers', function (ev) {
|
|
980
|
+
return _this.handleRoomMembers(ev);
|
|
981
|
+
});
|
|
982
|
+
this.tracker.client.on('RoomMemberUpdated', function (ev) {
|
|
983
|
+
return _this.handleRoomMemberUpdated(ev);
|
|
984
|
+
});
|
|
985
|
+
this.tracker.client.on('SpaceMemberLeft', function (ev) {
|
|
986
|
+
return _this.handleSpaceMemberLeft(ev);
|
|
987
|
+
});
|
|
988
|
+
this.tracker.client.on('SpaceMemberUpdated', function (ev) {
|
|
989
|
+
return _this.handleSpaceMemberUpdated(ev);
|
|
990
|
+
});
|
|
991
|
+
this.tracker.client.on('SpaceDeleted', function (ev) {
|
|
992
|
+
return _this.handleSpaceDeleted(ev);
|
|
993
|
+
});
|
|
994
|
+
this.tracker.client.on('SpaceLeft', function (ev) {
|
|
995
|
+
return _this.handleSpaceDeleted(ev);
|
|
996
|
+
});
|
|
997
|
+
this.tracker.client.on('UserUpdated', function (ev) {
|
|
998
|
+
return _this.handleUserUpdated(ev);
|
|
999
|
+
});
|
|
1000
|
+
this.tracker.client.on('Session', function (ev) {
|
|
1001
|
+
return _this.handleSession(ev);
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
/**
|
|
1006
|
+
* Get collection of room members.
|
|
1007
|
+
*/
|
|
1008
|
+
RoomsManager_createClass(RoomsManager, [{
|
|
1009
|
+
key: "getMembers",
|
|
1010
|
+
value: function () {
|
|
1011
|
+
var _getMembers = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
|
|
1012
|
+
var _this2 = this;
|
|
1013
|
+
return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
1014
|
+
while (1) {
|
|
1015
|
+
switch (_context2.prev = _context2.next) {
|
|
1016
|
+
case 0:
|
|
1017
|
+
if (this.membersPromises.notExist(roomId)) {
|
|
1018
|
+
this.membersPromises.registerByFunction( /*#__PURE__*/RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee() {
|
|
1019
|
+
var result;
|
|
1020
|
+
return RoomsManager_regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1021
|
+
while (1) {
|
|
1022
|
+
switch (_context.prev = _context.next) {
|
|
1023
|
+
case 0:
|
|
1024
|
+
_context.next = 2;
|
|
1025
|
+
return _this2.tracker.client.send('GetRoomMembers', {
|
|
1026
|
+
id: roomId
|
|
1027
|
+
});
|
|
1028
|
+
case 2:
|
|
1029
|
+
result = _context.sent;
|
|
1030
|
+
if (!result.error) {
|
|
1031
|
+
_context.next = 5;
|
|
1032
|
+
break;
|
|
1033
|
+
}
|
|
1034
|
+
throw result.error;
|
|
1035
|
+
case 5:
|
|
1036
|
+
_this2.handleRoomMembers(result.data);
|
|
1037
|
+
case 6:
|
|
1038
|
+
case "end":
|
|
1039
|
+
return _context.stop();
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
}, _callee);
|
|
1043
|
+
})), roomId);
|
|
1044
|
+
}
|
|
1045
|
+
_context2.next = 3;
|
|
1046
|
+
return this.membersPromises.get(roomId);
|
|
664
1047
|
case 3:
|
|
1048
|
+
return _context2.abrupt("return", this.members.get(roomId));
|
|
1049
|
+
case 4:
|
|
1050
|
+
case "end":
|
|
1051
|
+
return _context2.stop();
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
}, _callee2, this);
|
|
1055
|
+
}));
|
|
1056
|
+
function getMembers(_x) {
|
|
1057
|
+
return _getMembers.apply(this, arguments);
|
|
1058
|
+
}
|
|
1059
|
+
return getMembers;
|
|
1060
|
+
}()
|
|
1061
|
+
/**
|
|
1062
|
+
* Get a room member representing the current user.
|
|
1063
|
+
*/
|
|
1064
|
+
}, {
|
|
1065
|
+
key: "getMe",
|
|
1066
|
+
value: function () {
|
|
1067
|
+
var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3(roomId) {
|
|
1068
|
+
var userId, members;
|
|
1069
|
+
return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
1070
|
+
while (1) {
|
|
1071
|
+
switch (_context3.prev = _context3.next) {
|
|
1072
|
+
case 0:
|
|
1073
|
+
_context3.next = 2;
|
|
1074
|
+
return this.tracker.getMe();
|
|
1075
|
+
case 2:
|
|
1076
|
+
userId = _context3.sent.id;
|
|
1077
|
+
if (this.list.has(roomId)) {
|
|
1078
|
+
_context3.next = 5;
|
|
1079
|
+
break;
|
|
1080
|
+
}
|
|
1081
|
+
return _context3.abrupt("return", undefined);
|
|
1082
|
+
case 5:
|
|
1083
|
+
_context3.next = 7;
|
|
1084
|
+
return this.getMembers(roomId);
|
|
1085
|
+
case 7:
|
|
1086
|
+
members = _context3.sent;
|
|
1087
|
+
return _context3.abrupt("return", members.items.find(function (member) {
|
|
1088
|
+
var _member$user$id, _member$user;
|
|
1089
|
+
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;
|
|
1090
|
+
}));
|
|
1091
|
+
case 9:
|
|
665
1092
|
case "end":
|
|
666
1093
|
return _context3.stop();
|
|
667
1094
|
}
|
|
668
1095
|
}
|
|
669
1096
|
}, _callee3, this);
|
|
670
1097
|
}));
|
|
671
|
-
function
|
|
672
|
-
return
|
|
1098
|
+
function getMe(_x2) {
|
|
1099
|
+
return _getMe.apply(this, arguments);
|
|
673
1100
|
}
|
|
674
|
-
return
|
|
1101
|
+
return getMe;
|
|
675
1102
|
}()
|
|
1103
|
+
/**
|
|
1104
|
+
* Get collection of all the rooms you are in.
|
|
1105
|
+
*/
|
|
676
1106
|
}, {
|
|
677
|
-
key: "
|
|
1107
|
+
key: "get",
|
|
678
1108
|
value: function () {
|
|
679
|
-
var
|
|
680
|
-
return
|
|
1109
|
+
var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4() {
|
|
1110
|
+
return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
681
1111
|
while (1) {
|
|
682
1112
|
switch (_context4.prev = _context4.next) {
|
|
683
1113
|
case 0:
|
|
684
1114
|
_context4.next = 2;
|
|
685
|
-
return this.
|
|
1115
|
+
return this.deferredSession.promise;
|
|
686
1116
|
case 2:
|
|
687
|
-
return _context4.abrupt("return", this.
|
|
1117
|
+
return _context4.abrupt("return", this.list);
|
|
688
1118
|
case 3:
|
|
689
1119
|
case "end":
|
|
690
1120
|
return _context4.stop();
|
|
@@ -692,23 +1122,26 @@ var ChatStateTracker = /*#__PURE__*/function () {
|
|
|
692
1122
|
}
|
|
693
1123
|
}, _callee4, this);
|
|
694
1124
|
}));
|
|
695
|
-
function
|
|
696
|
-
return
|
|
1125
|
+
function get() {
|
|
1126
|
+
return _get.apply(this, arguments);
|
|
697
1127
|
}
|
|
698
|
-
return
|
|
1128
|
+
return get;
|
|
699
1129
|
}()
|
|
1130
|
+
/**
|
|
1131
|
+
* Get collection of room topics.
|
|
1132
|
+
*/
|
|
700
1133
|
}, {
|
|
701
|
-
key: "
|
|
1134
|
+
key: "getTopics",
|
|
702
1135
|
value: function () {
|
|
703
|
-
var
|
|
704
|
-
return
|
|
1136
|
+
var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee5(roomId) {
|
|
1137
|
+
return RoomsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
705
1138
|
while (1) {
|
|
706
1139
|
switch (_context5.prev = _context5.next) {
|
|
707
1140
|
case 0:
|
|
708
1141
|
_context5.next = 2;
|
|
709
|
-
return this.
|
|
1142
|
+
return this.deferredSession.promise;
|
|
710
1143
|
case 2:
|
|
711
|
-
return _context5.abrupt("return", this.
|
|
1144
|
+
return _context5.abrupt("return", this.topics.get(roomId));
|
|
712
1145
|
case 3:
|
|
713
1146
|
case "end":
|
|
714
1147
|
return _context5.stop();
|
|
@@ -716,449 +1149,1507 @@ var ChatStateTracker = /*#__PURE__*/function () {
|
|
|
716
1149
|
}
|
|
717
1150
|
}, _callee5, this);
|
|
718
1151
|
}));
|
|
719
|
-
function
|
|
720
|
-
return
|
|
1152
|
+
function getTopics(_x3) {
|
|
1153
|
+
return _getTopics.apply(this, arguments);
|
|
1154
|
+
}
|
|
1155
|
+
return getTopics;
|
|
1156
|
+
}()
|
|
1157
|
+
}, {
|
|
1158
|
+
key: "deleteRoom",
|
|
1159
|
+
value: function deleteRoom() {
|
|
1160
|
+
var _this$list, _this$members, _this$membersPromises, _this$topics;
|
|
1161
|
+
for (var _len = arguments.length, roomIds = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1162
|
+
roomIds[_key] = arguments[_key];
|
|
1163
|
+
}
|
|
1164
|
+
(_this$list = this.list)["delete"].apply(_this$list, roomIds);
|
|
1165
|
+
(_this$members = this.members)["delete"].apply(_this$members, roomIds);
|
|
1166
|
+
(_this$membersPromises = this.membersPromises).forget.apply(_this$membersPromises, roomIds);
|
|
1167
|
+
for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
|
|
1168
|
+
var _this$topics$get$map, _this$topics$get, _this$messages;
|
|
1169
|
+
var roomId = _roomIds[_i];
|
|
1170
|
+
var topicIds = (_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) {
|
|
1171
|
+
return topic.id;
|
|
1172
|
+
})) !== null && _this$topics$get$map !== void 0 ? _this$topics$get$map : [];
|
|
1173
|
+
(_this$messages = this.messages)._deleteByTopicIds.apply(_this$messages, [roomId].concat(RoomsManager_toConsumableArray(topicIds)));
|
|
1174
|
+
}
|
|
1175
|
+
(_this$topics = this.topics)["delete"].apply(_this$topics, roomIds);
|
|
1176
|
+
}
|
|
1177
|
+
}, {
|
|
1178
|
+
key: "deleteRoomsBySpaceId",
|
|
1179
|
+
value: function deleteRoomsBySpaceId(spaceId) {
|
|
1180
|
+
this.deleteRoom.apply(this, RoomsManager_toConsumableArray(this.list.findBy('spaceId', spaceId).map(function (room) {
|
|
1181
|
+
return room.id;
|
|
1182
|
+
})));
|
|
1183
|
+
}
|
|
1184
|
+
}, {
|
|
1185
|
+
key: "handleSpaceMemberUpdated",
|
|
1186
|
+
value: function handleSpaceMemberUpdated(ev) {
|
|
1187
|
+
// Update members of rooms related to this space
|
|
1188
|
+
var _iterator = RoomsManager_createForOfIteratorHelper(this.list.findBy('spaceId', ev.spaceId).items),
|
|
1189
|
+
_step;
|
|
1190
|
+
try {
|
|
1191
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
1192
|
+
var room = _step.value;
|
|
1193
|
+
var roomMembers = this.members.get(room.id);
|
|
1194
|
+
if (!roomMembers || !roomMembers.has(ev.userId)) {
|
|
1195
|
+
// Skip update if member list for this room is not loaded
|
|
1196
|
+
// or user is not in room
|
|
1197
|
+
continue;
|
|
1198
|
+
}
|
|
1199
|
+
var roomMember = roomMembers.get(ev.userId);
|
|
1200
|
+
var user = roomMember.spaceMember.user;
|
|
1201
|
+
|
|
1202
|
+
// Update space member but first fill user object (it's null in event object)
|
|
1203
|
+
roomMember.spaceMember = RoomsManager_objectSpread(RoomsManager_objectSpread({}, ev.member), {}, {
|
|
1204
|
+
user: user
|
|
1205
|
+
});
|
|
1206
|
+
roomMembers.set(roomMember);
|
|
1207
|
+
}
|
|
1208
|
+
} catch (err) {
|
|
1209
|
+
_iterator.e(err);
|
|
1210
|
+
} finally {
|
|
1211
|
+
_iterator.f();
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}, {
|
|
1215
|
+
key: "handleSpaceMemberLeft",
|
|
1216
|
+
value: function handleSpaceMemberLeft(ev) {
|
|
1217
|
+
var _this3 = this;
|
|
1218
|
+
this.list.findBy('spaceId', ev.spaceId).items.forEach(function (room) {
|
|
1219
|
+
var _this3$members$get;
|
|
1220
|
+
return (_this3$members$get = _this3.members.get(room.id)) === null || _this3$members$get === void 0 ? void 0 : _this3$members$get["delete"](ev.userId);
|
|
1221
|
+
});
|
|
1222
|
+
}
|
|
1223
|
+
}, {
|
|
1224
|
+
key: "handleRoomMemberUpdated",
|
|
1225
|
+
value: function handleRoomMemberUpdated(ev) {
|
|
1226
|
+
var _member$spaceMember$u, _member$spaceMember;
|
|
1227
|
+
if (!this.members.has(ev.roomId)) {
|
|
1228
|
+
// We do not track member list for this room.
|
|
1229
|
+
return;
|
|
1230
|
+
}
|
|
1231
|
+
var members = this.members.get(ev.roomId);
|
|
1232
|
+
var member = members.get(ev.userId);
|
|
1233
|
+
var newMember = ev.member;
|
|
1234
|
+
var user = (_member$spaceMember$u = (_member$spaceMember = member.spaceMember) === null || _member$spaceMember === void 0 ? void 0 : _member$spaceMember.user) !== null && _member$spaceMember$u !== void 0 ? _member$spaceMember$u : member.user;
|
|
1235
|
+
if (newMember.spaceMember) {
|
|
1236
|
+
newMember.spaceMember.user = user;
|
|
1237
|
+
} else {
|
|
1238
|
+
newMember.user = user;
|
|
1239
|
+
}
|
|
1240
|
+
members.set(newMember);
|
|
1241
|
+
}
|
|
1242
|
+
}, {
|
|
1243
|
+
key: "handleSpaceDeleted",
|
|
1244
|
+
value: function handleSpaceDeleted(ev) {
|
|
1245
|
+
this.deleteRoomsBySpaceId(ev.id);
|
|
1246
|
+
}
|
|
1247
|
+
}, {
|
|
1248
|
+
key: "handleTopicDeleted",
|
|
1249
|
+
value: function handleTopicDeleted(ev) {
|
|
1250
|
+
var _room$defaultTopic;
|
|
1251
|
+
var collection = this.topics.get(ev.location.roomId);
|
|
1252
|
+
collection["delete"](ev.location.topicId);
|
|
1253
|
+
var room = this.list.get(ev.location.roomId);
|
|
1254
|
+
if (((_room$defaultTopic = room.defaultTopic) === null || _room$defaultTopic === void 0 ? void 0 : _room$defaultTopic.id) === ev.location.topicId) {
|
|
1255
|
+
this.list.set(RoomsManager_objectSpread(RoomsManager_objectSpread({}, room), {}, {
|
|
1256
|
+
defaultTopic: null
|
|
1257
|
+
}));
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
}, {
|
|
1261
|
+
key: "handleNewTopic",
|
|
1262
|
+
value: function handleNewTopic(ev) {
|
|
1263
|
+
this.addJoinedRoomTopics(ev.roomId, ev.topic);
|
|
1264
|
+
}
|
|
1265
|
+
}, {
|
|
1266
|
+
key: "addJoinedRoomTopics",
|
|
1267
|
+
value: function addJoinedRoomTopics(roomId) {
|
|
1268
|
+
var _this$messages2;
|
|
1269
|
+
for (var _len2 = arguments.length, topics = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
1270
|
+
topics[_key2 - 1] = arguments[_key2];
|
|
1271
|
+
}
|
|
1272
|
+
if (this.topics.has(roomId)) {
|
|
1273
|
+
var _this$topics$get2;
|
|
1274
|
+
(_this$topics$get2 = this.topics.get(roomId)).set.apply(_this$topics$get2, topics);
|
|
1275
|
+
} else {
|
|
1276
|
+
this.topics.set([roomId, new ObservableIndexedObjectCollection('id', topics)]);
|
|
1277
|
+
}
|
|
1278
|
+
(_this$messages2 = this.messages)._handleNewTopics.apply(_this$messages2, [roomId].concat(topics));
|
|
1279
|
+
}
|
|
1280
|
+
}, {
|
|
1281
|
+
key: "handleRoomJoined",
|
|
1282
|
+
value: function handleRoomJoined(ev) {
|
|
1283
|
+
this.addJoinedRooms(ev.room);
|
|
1284
|
+
}
|
|
1285
|
+
}, {
|
|
1286
|
+
key: "handleRoomUpdated",
|
|
1287
|
+
value: function handleRoomUpdated(ev) {
|
|
1288
|
+
this.list.set(RoomsManager_objectSpread(RoomsManager_objectSpread({}, this.list.get(ev.room.id)), {}, {
|
|
1289
|
+
name: ev.room.name,
|
|
1290
|
+
description: ev.room.description
|
|
1291
|
+
}));
|
|
1292
|
+
}
|
|
1293
|
+
}, {
|
|
1294
|
+
key: "handleRoomDeleted",
|
|
1295
|
+
value: function handleRoomDeleted(ev) {
|
|
1296
|
+
this.deleteRoom(ev.id);
|
|
1297
|
+
}
|
|
1298
|
+
}, {
|
|
1299
|
+
key: "addJoinedRooms",
|
|
1300
|
+
value: function addJoinedRooms() {
|
|
1301
|
+
var _this$list2;
|
|
1302
|
+
for (var _len3 = arguments.length, rooms = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
1303
|
+
rooms[_key3] = arguments[_key3];
|
|
1304
|
+
}
|
|
1305
|
+
for (var _i2 = 0, _rooms = rooms; _i2 < _rooms.length; _i2++) {
|
|
1306
|
+
var room = _rooms[_i2];
|
|
1307
|
+
if (room.defaultTopic) {
|
|
1308
|
+
this.addJoinedRoomTopics(room.id, room.defaultTopic);
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
(_this$list2 = this.list).set.apply(_this$list2, rooms);
|
|
1312
|
+
}
|
|
1313
|
+
}, {
|
|
1314
|
+
key: "handleRoomLeft",
|
|
1315
|
+
value: function handleRoomLeft(ev) {
|
|
1316
|
+
this.deleteRoom(ev.id);
|
|
1317
|
+
}
|
|
1318
|
+
}, {
|
|
1319
|
+
key: "handleRoomMemberJoined",
|
|
1320
|
+
value: function handleRoomMemberJoined(ev) {
|
|
1321
|
+
if (this.members.has(ev.roomId)) {
|
|
1322
|
+
this.members.get(ev.roomId).set(ev.member);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
}, {
|
|
1326
|
+
key: "handleRoomMemberLeft",
|
|
1327
|
+
value: function handleRoomMemberLeft(ev) {
|
|
1328
|
+
if (this.members.has(ev.roomId)) {
|
|
1329
|
+
this.members.get(ev.roomId)["delete"](ev.userId);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
}, {
|
|
1333
|
+
key: "handleRoomMembers",
|
|
1334
|
+
value: function handleRoomMembers(ev) {
|
|
1335
|
+
if (!this.members.has(ev.id)) {
|
|
1336
|
+
this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
|
|
1337
|
+
var _member$user$id2, _member$user2;
|
|
1338
|
+
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;
|
|
1339
|
+
}, ev.members)]);
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
}, {
|
|
1343
|
+
key: "handleSession",
|
|
1344
|
+
value: function handleSession(ev) {
|
|
1345
|
+
this.list.deleteAll();
|
|
1346
|
+
this.topics.deleteAll();
|
|
1347
|
+
this.members.deleteAll();
|
|
1348
|
+
this.addJoinedRooms.apply(this, RoomsManager_toConsumableArray(ev.state.rooms));
|
|
1349
|
+
this.deferredSession.resolve();
|
|
1350
|
+
}
|
|
1351
|
+
}, {
|
|
1352
|
+
key: "handleUserUpdated",
|
|
1353
|
+
value: function handleUserUpdated(ev) {
|
|
1354
|
+
this.members.items.forEach(function (members) {
|
|
1355
|
+
var member = members.get(ev.user.id);
|
|
1356
|
+
if (!member) {
|
|
1357
|
+
// Skip room; updated user is not here
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
var newMember = RoomsManager_objectSpread({}, member);
|
|
1361
|
+
if (member.user) {
|
|
1362
|
+
newMember.user = ev.user;
|
|
1363
|
+
} else {
|
|
1364
|
+
newMember.spaceMember.user = ev.user;
|
|
1365
|
+
}
|
|
1366
|
+
members.set(newMember);
|
|
1367
|
+
});
|
|
1368
|
+
}
|
|
1369
|
+
}]);
|
|
1370
|
+
return RoomsManager;
|
|
1371
|
+
}();
|
|
1372
|
+
;// CONCATENATED MODULE: ./src/state-tracker/functions.ts
|
|
1373
|
+
function reorderRolesOnPriorityUpdate(allRoles, oldRole, updatedRole) {
|
|
1374
|
+
// If the priority has changed, adjust the rest of roles
|
|
1375
|
+
var increased = updatedRole.priority - oldRole.priority > 0;
|
|
1376
|
+
var decreased = !increased;
|
|
1377
|
+
var changedRoles = [];
|
|
1378
|
+
allRoles.forEach(function (role) {
|
|
1379
|
+
if (role.id === updatedRole.id) {
|
|
1380
|
+
// Skip the updated role
|
|
1381
|
+
return;
|
|
1382
|
+
}
|
|
1383
|
+
if (increased && oldRole.priority <= role.priority) {
|
|
1384
|
+
role.priority--;
|
|
1385
|
+
changedRoles.push(role);
|
|
1386
|
+
}
|
|
1387
|
+
if (decreased && updatedRole.priority <= role.priority) {
|
|
1388
|
+
role.priority++;
|
|
1389
|
+
changedRoles.push(role);
|
|
1390
|
+
}
|
|
1391
|
+
});
|
|
1392
|
+
return changedRoles;
|
|
1393
|
+
}
|
|
1394
|
+
;// CONCATENATED MODULE: ./src/state-tracker/SpacesManager.ts
|
|
1395
|
+
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); }
|
|
1396
|
+
function SpacesManager_toConsumableArray(arr) { return SpacesManager_arrayWithoutHoles(arr) || SpacesManager_iterableToArray(arr) || SpacesManager_unsupportedIterableToArray(arr) || SpacesManager_nonIterableSpread(); }
|
|
1397
|
+
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."); }
|
|
1398
|
+
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); }
|
|
1399
|
+
function SpacesManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
1400
|
+
function SpacesManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return SpacesManager_arrayLikeToArray(arr); }
|
|
1401
|
+
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; }
|
|
1402
|
+
function SpacesManager_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1403
|
+
function SpacesManager_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? SpacesManager_ownKeys(Object(source), !0).forEach(function (key) { SpacesManager_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : SpacesManager_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1404
|
+
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; }
|
|
1405
|
+
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); } }
|
|
1406
|
+
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); }); }; }
|
|
1407
|
+
function SpacesManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
1408
|
+
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); } }
|
|
1409
|
+
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; }
|
|
1410
|
+
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; }
|
|
1411
|
+
function SpacesManager_toPropertyKey(arg) { var key = SpacesManager_toPrimitive(arg, "string"); return SpacesManager_typeof(key) === "symbol" ? key : String(key); }
|
|
1412
|
+
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); }
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
var SpacesManager = /*#__PURE__*/function () {
|
|
1417
|
+
function SpacesManager(tracker) {
|
|
1418
|
+
var _this = this;
|
|
1419
|
+
SpacesManager_classCallCheck(this, SpacesManager);
|
|
1420
|
+
this.tracker = tracker;
|
|
1421
|
+
SpacesManager_defineProperty(this, "list", new ObservableIndexedObjectCollection('id'));
|
|
1422
|
+
SpacesManager_defineProperty(this, "roles", new IndexedCollection());
|
|
1423
|
+
SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
|
|
1424
|
+
SpacesManager_defineProperty(this, "roomIdToSpaceId", new IndexedCollection());
|
|
1425
|
+
SpacesManager_defineProperty(this, "members", new IndexedCollection());
|
|
1426
|
+
SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
|
|
1427
|
+
SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
|
|
1428
|
+
SpacesManager_defineProperty(this, "membersPromises", new PromiseRegistry());
|
|
1429
|
+
this.tracker.client.on('NewRoom', function (ev) {
|
|
1430
|
+
return _this.handleNewRoom(ev);
|
|
1431
|
+
});
|
|
1432
|
+
this.tracker.client.on('RoomDeleted', function (ev) {
|
|
1433
|
+
return _this.handleRoomDeleted(ev);
|
|
1434
|
+
});
|
|
1435
|
+
this.tracker.client.on('RoomUpdated', function (ev) {
|
|
1436
|
+
return _this.handleRoomUpdated(ev);
|
|
1437
|
+
});
|
|
1438
|
+
this.tracker.client.on('SpaceDeleted', function (ev) {
|
|
1439
|
+
return _this.handleSpaceDeleted(ev);
|
|
1440
|
+
});
|
|
1441
|
+
this.tracker.client.on('SpaceUpdated', function (ev) {
|
|
1442
|
+
return _this.handleSpaceUpdated(ev);
|
|
1443
|
+
});
|
|
1444
|
+
this.tracker.client.on('SpaceJoined', function (ev) {
|
|
1445
|
+
return _this.handleSpaceJoined(ev);
|
|
1446
|
+
});
|
|
1447
|
+
this.tracker.client.on('SpaceLeft', function (ev) {
|
|
1448
|
+
return _this.handleSpaceDeleted(ev);
|
|
1449
|
+
});
|
|
1450
|
+
this.tracker.client.on('SpaceMemberJoined', function (ev) {
|
|
1451
|
+
return _this.handleSpaceMemberJoined(ev);
|
|
1452
|
+
});
|
|
1453
|
+
this.tracker.client.on('SpaceMemberLeft', function (ev) {
|
|
1454
|
+
return _this.handleSpaceMemberLeft(ev);
|
|
1455
|
+
});
|
|
1456
|
+
this.tracker.client.on('SpaceMembers', function (ev) {
|
|
1457
|
+
return _this.handleSpaceMembers(ev);
|
|
1458
|
+
});
|
|
1459
|
+
this.tracker.client.on('SpaceRooms', function (ev) {
|
|
1460
|
+
return _this.handleSpaceRooms(ev);
|
|
1461
|
+
});
|
|
1462
|
+
this.tracker.client.on('SpaceMemberUpdated', function (ev) {
|
|
1463
|
+
return _this.handleSpaceMemberUpdated(ev);
|
|
1464
|
+
});
|
|
1465
|
+
this.tracker.client.on('UserUpdated', function (ev) {
|
|
1466
|
+
return _this.handleUserUpdated(ev);
|
|
1467
|
+
});
|
|
1468
|
+
this.tracker.client.on('NewRole', function (ev) {
|
|
1469
|
+
return _this.handleNewRole(ev);
|
|
1470
|
+
});
|
|
1471
|
+
this.tracker.client.on('RoleDeleted', function (ev) {
|
|
1472
|
+
return _this.handleRoleDeleted(ev);
|
|
1473
|
+
});
|
|
1474
|
+
this.tracker.client.on('RoleUpdated', function (ev) {
|
|
1475
|
+
return _this.handleRoleUpdated(ev);
|
|
1476
|
+
});
|
|
1477
|
+
this.tracker.client.on('Session', function (ev) {
|
|
1478
|
+
return _this.handleSession(ev);
|
|
1479
|
+
});
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
/**
|
|
1483
|
+
* Get collection of all the spaces you are in.
|
|
1484
|
+
*/
|
|
1485
|
+
SpacesManager_createClass(SpacesManager, [{
|
|
1486
|
+
key: "get",
|
|
1487
|
+
value: function () {
|
|
1488
|
+
var _get = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee() {
|
|
1489
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1490
|
+
while (1) {
|
|
1491
|
+
switch (_context.prev = _context.next) {
|
|
1492
|
+
case 0:
|
|
1493
|
+
_context.next = 2;
|
|
1494
|
+
return this.deferredSession.promise;
|
|
1495
|
+
case 2:
|
|
1496
|
+
return _context.abrupt("return", this.list);
|
|
1497
|
+
case 3:
|
|
1498
|
+
case "end":
|
|
1499
|
+
return _context.stop();
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
}, _callee, this);
|
|
1503
|
+
}));
|
|
1504
|
+
function get() {
|
|
1505
|
+
return _get.apply(this, arguments);
|
|
1506
|
+
}
|
|
1507
|
+
return get;
|
|
1508
|
+
}()
|
|
1509
|
+
/**
|
|
1510
|
+
* Get collection of space roles.
|
|
1511
|
+
*/
|
|
1512
|
+
}, {
|
|
1513
|
+
key: "getRoles",
|
|
1514
|
+
value: function () {
|
|
1515
|
+
var _getRoles = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee2(spaceId) {
|
|
1516
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
1517
|
+
while (1) {
|
|
1518
|
+
switch (_context2.prev = _context2.next) {
|
|
1519
|
+
case 0:
|
|
1520
|
+
_context2.next = 2;
|
|
1521
|
+
return this.deferredSession.promise;
|
|
1522
|
+
case 2:
|
|
1523
|
+
return _context2.abrupt("return", this.roles.get(spaceId));
|
|
1524
|
+
case 3:
|
|
1525
|
+
case "end":
|
|
1526
|
+
return _context2.stop();
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
}, _callee2, this);
|
|
1530
|
+
}));
|
|
1531
|
+
function getRoles(_x) {
|
|
1532
|
+
return _getRoles.apply(this, arguments);
|
|
1533
|
+
}
|
|
1534
|
+
return getRoles;
|
|
1535
|
+
}()
|
|
1536
|
+
/**
|
|
1537
|
+
* Get collection of the all available rooms inside given space.
|
|
1538
|
+
*/
|
|
1539
|
+
}, {
|
|
1540
|
+
key: "getRooms",
|
|
1541
|
+
value: function () {
|
|
1542
|
+
var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
|
|
1543
|
+
var _this2 = this;
|
|
1544
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
1545
|
+
while (1) {
|
|
1546
|
+
switch (_context4.prev = _context4.next) {
|
|
1547
|
+
case 0:
|
|
1548
|
+
if (this.roomsPromises.notExist(spaceId)) {
|
|
1549
|
+
this.roomsPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3() {
|
|
1550
|
+
var result;
|
|
1551
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
1552
|
+
while (1) {
|
|
1553
|
+
switch (_context3.prev = _context3.next) {
|
|
1554
|
+
case 0:
|
|
1555
|
+
_context3.next = 2;
|
|
1556
|
+
return _this2.tracker.client.send('GetSpaceRooms', {
|
|
1557
|
+
id: spaceId
|
|
1558
|
+
});
|
|
1559
|
+
case 2:
|
|
1560
|
+
result = _context3.sent;
|
|
1561
|
+
if (!result.error) {
|
|
1562
|
+
_context3.next = 5;
|
|
1563
|
+
break;
|
|
1564
|
+
}
|
|
1565
|
+
throw result.error;
|
|
1566
|
+
case 5:
|
|
1567
|
+
_this2.handleSpaceRooms(result.data);
|
|
1568
|
+
case 6:
|
|
1569
|
+
case "end":
|
|
1570
|
+
return _context3.stop();
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
}, _callee3);
|
|
1574
|
+
})), spaceId);
|
|
1575
|
+
}
|
|
1576
|
+
_context4.next = 3;
|
|
1577
|
+
return this.roomsPromises.get(spaceId);
|
|
1578
|
+
case 3:
|
|
1579
|
+
return _context4.abrupt("return", this.rooms.get(spaceId));
|
|
1580
|
+
case 4:
|
|
1581
|
+
case "end":
|
|
1582
|
+
return _context4.stop();
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
}, _callee4, this);
|
|
1586
|
+
}));
|
|
1587
|
+
function getRooms(_x2) {
|
|
1588
|
+
return _getRooms.apply(this, arguments);
|
|
1589
|
+
}
|
|
1590
|
+
return getRooms;
|
|
1591
|
+
}()
|
|
1592
|
+
/**
|
|
1593
|
+
* Get collection of space members.
|
|
1594
|
+
*/
|
|
1595
|
+
}, {
|
|
1596
|
+
key: "getMembers",
|
|
1597
|
+
value: function () {
|
|
1598
|
+
var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee6(spaceId) {
|
|
1599
|
+
var _this3 = this;
|
|
1600
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
1601
|
+
while (1) {
|
|
1602
|
+
switch (_context6.prev = _context6.next) {
|
|
1603
|
+
case 0:
|
|
1604
|
+
if (this.membersPromises.notExist(spaceId)) {
|
|
1605
|
+
this.membersPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5() {
|
|
1606
|
+
var result;
|
|
1607
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
1608
|
+
while (1) {
|
|
1609
|
+
switch (_context5.prev = _context5.next) {
|
|
1610
|
+
case 0:
|
|
1611
|
+
_context5.next = 2;
|
|
1612
|
+
return _this3.tracker.client.send('GetSpaceMembers', {
|
|
1613
|
+
id: spaceId
|
|
1614
|
+
});
|
|
1615
|
+
case 2:
|
|
1616
|
+
result = _context5.sent;
|
|
1617
|
+
if (!result.error) {
|
|
1618
|
+
_context5.next = 5;
|
|
1619
|
+
break;
|
|
1620
|
+
}
|
|
1621
|
+
throw result.error;
|
|
1622
|
+
case 5:
|
|
1623
|
+
_this3.handleSpaceMembers(result.data);
|
|
1624
|
+
case 6:
|
|
1625
|
+
case "end":
|
|
1626
|
+
return _context5.stop();
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
}, _callee5);
|
|
1630
|
+
})), spaceId);
|
|
1631
|
+
}
|
|
1632
|
+
_context6.next = 3;
|
|
1633
|
+
return this.membersPromises.get(spaceId);
|
|
1634
|
+
case 3:
|
|
1635
|
+
return _context6.abrupt("return", this.members.get(spaceId));
|
|
1636
|
+
case 4:
|
|
1637
|
+
case "end":
|
|
1638
|
+
return _context6.stop();
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
}, _callee6, this);
|
|
1642
|
+
}));
|
|
1643
|
+
function getMembers(_x3) {
|
|
1644
|
+
return _getMembers.apply(this, arguments);
|
|
1645
|
+
}
|
|
1646
|
+
return getMembers;
|
|
1647
|
+
}()
|
|
1648
|
+
/**
|
|
1649
|
+
* Get a space member representing the current user.
|
|
1650
|
+
*/
|
|
1651
|
+
}, {
|
|
1652
|
+
key: "getMe",
|
|
1653
|
+
value: function () {
|
|
1654
|
+
var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee7(spaceId) {
|
|
1655
|
+
var userId, members;
|
|
1656
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
1657
|
+
while (1) {
|
|
1658
|
+
switch (_context7.prev = _context7.next) {
|
|
1659
|
+
case 0:
|
|
1660
|
+
_context7.next = 2;
|
|
1661
|
+
return this.tracker.getMe();
|
|
1662
|
+
case 2:
|
|
1663
|
+
userId = _context7.sent.id;
|
|
1664
|
+
if (this.list.has(spaceId)) {
|
|
1665
|
+
_context7.next = 5;
|
|
1666
|
+
break;
|
|
1667
|
+
}
|
|
1668
|
+
return _context7.abrupt("return", undefined);
|
|
1669
|
+
case 5:
|
|
1670
|
+
_context7.next = 7;
|
|
1671
|
+
return this.getMembers(spaceId);
|
|
1672
|
+
case 7:
|
|
1673
|
+
members = _context7.sent;
|
|
1674
|
+
return _context7.abrupt("return", members.items.find(function (member) {
|
|
1675
|
+
return member.user.id === userId;
|
|
1676
|
+
}));
|
|
1677
|
+
case 9:
|
|
1678
|
+
case "end":
|
|
1679
|
+
return _context7.stop();
|
|
1680
|
+
}
|
|
1681
|
+
}
|
|
1682
|
+
}, _callee7, this);
|
|
1683
|
+
}));
|
|
1684
|
+
function getMe(_x4) {
|
|
1685
|
+
return _getMe.apply(this, arguments);
|
|
1686
|
+
}
|
|
1687
|
+
return getMe;
|
|
1688
|
+
}()
|
|
1689
|
+
}, {
|
|
1690
|
+
key: "handleNewRole",
|
|
1691
|
+
value: function handleNewRole(ev) {
|
|
1692
|
+
var collection = this.roles.get(ev.spaceId);
|
|
1693
|
+
collection.set(ev.role);
|
|
1694
|
+
this.list.get(ev.spaceId).roles = collection.items;
|
|
1695
|
+
}
|
|
1696
|
+
}, {
|
|
1697
|
+
key: "handleNewRoom",
|
|
1698
|
+
value: function handleNewRoom(ev) {
|
|
1699
|
+
var _this$rooms$get;
|
|
1700
|
+
(_this$rooms$get = this.rooms.get(ev.spaceId)) === null || _this$rooms$get === void 0 ? void 0 : _this$rooms$get.set(ev.summary);
|
|
1701
|
+
this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);
|
|
1702
|
+
}
|
|
1703
|
+
}, {
|
|
1704
|
+
key: "handleRoomUpdated",
|
|
1705
|
+
value: function handleRoomUpdated(ev) {
|
|
1706
|
+
if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {
|
|
1707
|
+
var rooms = this.rooms.get(ev.room.spaceId);
|
|
1708
|
+
rooms.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, rooms.get(ev.room.id)), {}, {
|
|
1709
|
+
name: ev.room.name,
|
|
1710
|
+
description: ev.room.description
|
|
1711
|
+
}));
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
}, {
|
|
1715
|
+
key: "handleRoomDeleted",
|
|
1716
|
+
value: function () {
|
|
1717
|
+
var _handleRoomDeleted = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee8(ev) {
|
|
1718
|
+
var spaceId;
|
|
1719
|
+
return SpacesManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
1720
|
+
while (1) {
|
|
1721
|
+
switch (_context8.prev = _context8.next) {
|
|
1722
|
+
case 0:
|
|
1723
|
+
spaceId = this.roomIdToSpaceId.get(ev.id);
|
|
1724
|
+
if (spaceId && this.rooms.has(spaceId)) {
|
|
1725
|
+
this.rooms.get(spaceId)["delete"](ev.id);
|
|
1726
|
+
}
|
|
1727
|
+
case 2:
|
|
1728
|
+
case "end":
|
|
1729
|
+
return _context8.stop();
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
}, _callee8, this);
|
|
1733
|
+
}));
|
|
1734
|
+
function handleRoomDeleted(_x5) {
|
|
1735
|
+
return _handleRoomDeleted.apply(this, arguments);
|
|
1736
|
+
}
|
|
1737
|
+
return handleRoomDeleted;
|
|
1738
|
+
}()
|
|
1739
|
+
}, {
|
|
1740
|
+
key: "handleRoleDeleted",
|
|
1741
|
+
value: function handleRoleDeleted(ev) {
|
|
1742
|
+
var collection = this.roles.get(ev.spaceId);
|
|
1743
|
+
collection["delete"](ev.id);
|
|
1744
|
+
this.list.get(ev.spaceId).roles = collection.items;
|
|
1745
|
+
}
|
|
1746
|
+
}, {
|
|
1747
|
+
key: "handleSpaceUpdated",
|
|
1748
|
+
value: function handleSpaceUpdated(ev) {
|
|
1749
|
+
this.list.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, this.list.get(ev.space.id)), {}, {
|
|
1750
|
+
name: ev.space.name
|
|
1751
|
+
}));
|
|
1752
|
+
}
|
|
1753
|
+
}, {
|
|
1754
|
+
key: "handleSpaceDeleted",
|
|
1755
|
+
value: function handleSpaceDeleted(ev) {
|
|
1756
|
+
var _this$rooms$get$map, _this$rooms$get2, _this$roomIdToSpaceId;
|
|
1757
|
+
var roomIds = (_this$rooms$get$map = (_this$rooms$get2 = this.rooms.get(ev.id)) === null || _this$rooms$get2 === void 0 ? void 0 : _this$rooms$get2.map(function (item) {
|
|
1758
|
+
return item.id;
|
|
1759
|
+
})) !== null && _this$rooms$get$map !== void 0 ? _this$rooms$get$map : [];
|
|
1760
|
+
(_this$roomIdToSpaceId = this.roomIdToSpaceId)["delete"].apply(_this$roomIdToSpaceId, SpacesManager_toConsumableArray(roomIds));
|
|
1761
|
+
this.roles["delete"](ev.id);
|
|
1762
|
+
this.members["delete"](ev.id);
|
|
1763
|
+
this.membersPromises.forget(ev.id);
|
|
1764
|
+
this.rooms["delete"](ev.id);
|
|
1765
|
+
this.roomsPromises.forget(ev.id);
|
|
1766
|
+
this.list["delete"](ev.id);
|
|
1767
|
+
}
|
|
1768
|
+
}, {
|
|
1769
|
+
key: "handleSpaceJoined",
|
|
1770
|
+
value: function handleSpaceJoined(ev) {
|
|
1771
|
+
this.addJoinedSpaces(ev.space);
|
|
1772
|
+
}
|
|
1773
|
+
}, {
|
|
1774
|
+
key: "addJoinedSpaces",
|
|
1775
|
+
value: function addJoinedSpaces() {
|
|
1776
|
+
var _this$roles, _this$list;
|
|
1777
|
+
for (var _len = arguments.length, spaces = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1778
|
+
spaces[_key] = arguments[_key];
|
|
1779
|
+
}
|
|
1780
|
+
(_this$roles = this.roles).set.apply(_this$roles, SpacesManager_toConsumableArray(spaces.map(function (space) {
|
|
1781
|
+
return [space.id, new ObservableIndexedObjectCollection('id', space.roles)];
|
|
1782
|
+
})));
|
|
1783
|
+
(_this$list = this.list).set.apply(_this$list, spaces);
|
|
1784
|
+
}
|
|
1785
|
+
}, {
|
|
1786
|
+
key: "handleSpaceMemberJoined",
|
|
1787
|
+
value: function handleSpaceMemberJoined(ev) {
|
|
1788
|
+
if (this.members.has(ev.spaceId)) {
|
|
1789
|
+
this.members.get(ev.spaceId).set(ev.member);
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
}, {
|
|
1793
|
+
key: "handleSpaceMemberLeft",
|
|
1794
|
+
value: function handleSpaceMemberLeft(ev) {
|
|
1795
|
+
if (this.members.has(ev.spaceId)) {
|
|
1796
|
+
this.members.get(ev.spaceId)["delete"](ev.userId);
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
}, {
|
|
1800
|
+
key: "handleSpaceMembers",
|
|
1801
|
+
value: function handleSpaceMembers(ev) {
|
|
1802
|
+
if (!this.members.has(ev.id)) {
|
|
1803
|
+
this.members.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
|
|
1804
|
+
return member === null || member === void 0 ? void 0 : member.user.id;
|
|
1805
|
+
}, ev.members)]);
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
}, {
|
|
1809
|
+
key: "handleSpaceRooms",
|
|
1810
|
+
value: function handleSpaceRooms(ev) {
|
|
1811
|
+
if (!this.rooms.has(ev.id)) {
|
|
1812
|
+
this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
}, {
|
|
1816
|
+
key: "handleSpaceMemberUpdated",
|
|
1817
|
+
value: function handleSpaceMemberUpdated(ev) {
|
|
1818
|
+
if (this.members.has(ev.spaceId)) {
|
|
1819
|
+
var members = this.members.get(ev.spaceId);
|
|
1820
|
+
var member = members.get(ev.userId);
|
|
1821
|
+
members.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, ev.member), {}, {
|
|
1822
|
+
user: member.user
|
|
1823
|
+
}));
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
}, {
|
|
1827
|
+
key: "handleRoleUpdated",
|
|
1828
|
+
value: function handleRoleUpdated(ev) {
|
|
1829
|
+
var _this$roles$get;
|
|
1830
|
+
var roles = this.roles.get(ev.spaceId);
|
|
1831
|
+
var oldRole = roles.get(ev.role.id);
|
|
1832
|
+
var newRole = ev.role;
|
|
1833
|
+
var rolesToUpdate = [newRole];
|
|
1834
|
+
if (oldRole.priority !== newRole.priority) {
|
|
1835
|
+
rolesToUpdate.push.apply(rolesToUpdate, SpacesManager_toConsumableArray(reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)));
|
|
1836
|
+
}
|
|
1837
|
+
(_this$roles$get = this.roles.get(ev.spaceId)).set.apply(_this$roles$get, rolesToUpdate);
|
|
1838
|
+
}
|
|
1839
|
+
}, {
|
|
1840
|
+
key: "handleSession",
|
|
1841
|
+
value: function handleSession(ev) {
|
|
1842
|
+
this.list.deleteAll();
|
|
1843
|
+
this.roles.deleteAll();
|
|
1844
|
+
this.rooms.deleteAll();
|
|
1845
|
+
this.members.deleteAll();
|
|
1846
|
+
this.roomIdToSpaceId.deleteAll();
|
|
1847
|
+
this.addJoinedSpaces.apply(this, SpacesManager_toConsumableArray(ev.state.spaces));
|
|
1848
|
+
this.deferredSession.resolve();
|
|
1849
|
+
}
|
|
1850
|
+
}, {
|
|
1851
|
+
key: "handleUserUpdated",
|
|
1852
|
+
value: function handleUserUpdated(ev) {
|
|
1853
|
+
this.members.items.forEach(function (members) {
|
|
1854
|
+
var member = members.get(ev.user.id);
|
|
1855
|
+
if (!member) {
|
|
1856
|
+
// Skip space; updated user is not here
|
|
1857
|
+
return;
|
|
1858
|
+
}
|
|
1859
|
+
members.set(SpacesManager_objectSpread(SpacesManager_objectSpread({}, member), {}, {
|
|
1860
|
+
user: ev.user
|
|
1861
|
+
}));
|
|
1862
|
+
});
|
|
1863
|
+
}
|
|
1864
|
+
}]);
|
|
1865
|
+
return SpacesManager;
|
|
1866
|
+
}();
|
|
1867
|
+
;// CONCATENATED MODULE: ./src/Permissions.ts
|
|
1868
|
+
function Permissions_typeof(obj) { "@babel/helpers - typeof"; return Permissions_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; }, Permissions_typeof(obj); }
|
|
1869
|
+
function Permissions_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, Permissions_toPropertyKey(descriptor.key), descriptor); } }
|
|
1870
|
+
function Permissions_createClass(Constructor, protoProps, staticProps) { if (protoProps) Permissions_defineProperties(Constructor.prototype, protoProps); if (staticProps) Permissions_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
1871
|
+
function Permissions_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
1872
|
+
function Permissions_defineProperty(obj, key, value) { key = Permissions_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1873
|
+
function Permissions_toPropertyKey(arg) { var key = Permissions_toPrimitive(arg, "string"); return Permissions_typeof(key) === "symbol" ? key : String(key); }
|
|
1874
|
+
function Permissions_toPrimitive(input, hint) { if (Permissions_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (Permissions_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
1875
|
+
var Layer;
|
|
1876
|
+
(function (Layer) {
|
|
1877
|
+
Layer[Layer["Global"] = 0] = "Global";
|
|
1878
|
+
Layer[Layer["Space"] = 1] = "Space";
|
|
1879
|
+
Layer[Layer["Room"] = 2] = "Room";
|
|
1880
|
+
Layer[Layer["Topic"] = 3] = "Topic";
|
|
1881
|
+
})(Layer || (Layer = {}));
|
|
1882
|
+
var PermissionDefinition = /*#__PURE__*/Permissions_createClass(function PermissionDefinition() {
|
|
1883
|
+
Permissions_classCallCheck(this, PermissionDefinition);
|
|
1884
|
+
Permissions_defineProperty(this, "value", void 0);
|
|
1885
|
+
Permissions_defineProperty(this, "maxLayer", void 0);
|
|
1886
|
+
});
|
|
1887
|
+
var Permissions = /*#__PURE__*/function () {
|
|
1888
|
+
function Permissions() {
|
|
1889
|
+
Permissions_classCallCheck(this, Permissions);
|
|
1890
|
+
}
|
|
1891
|
+
Permissions_createClass(Permissions, null, [{
|
|
1892
|
+
key: "getNames",
|
|
1893
|
+
value: function getNames() {
|
|
1894
|
+
return Object.keys(this.list);
|
|
1895
|
+
}
|
|
1896
|
+
}, {
|
|
1897
|
+
key: "getByName",
|
|
1898
|
+
value: function getByName(name) {
|
|
1899
|
+
return this.list[name];
|
|
1900
|
+
}
|
|
1901
|
+
}, {
|
|
1902
|
+
key: "canBeDefinedOnLayer",
|
|
1903
|
+
value: function canBeDefinedOnLayer(permissionName, layer) {
|
|
1904
|
+
var def = this.getByName(permissionName);
|
|
1905
|
+
if (!def) {
|
|
1906
|
+
throw new Error("Invalid permission name: ".concat(permissionName));
|
|
1907
|
+
}
|
|
1908
|
+
return layer <= this.getByName(permissionName).maxLayer;
|
|
1909
|
+
}
|
|
1910
|
+
}]);
|
|
1911
|
+
return Permissions;
|
|
1912
|
+
}();
|
|
1913
|
+
Permissions_defineProperty(Permissions, "list", {
|
|
1914
|
+
Root: {
|
|
1915
|
+
value: 1 << 0,
|
|
1916
|
+
maxLayer: Layer.Room
|
|
1917
|
+
},
|
|
1918
|
+
CreateSpaces: {
|
|
1919
|
+
value: 1 << 1,
|
|
1920
|
+
maxLayer: Layer.Global
|
|
1921
|
+
},
|
|
1922
|
+
ManageSpace: {
|
|
1923
|
+
value: 1 << 2,
|
|
1924
|
+
maxLayer: Layer.Space
|
|
1925
|
+
},
|
|
1926
|
+
ManageSpaceRoles: {
|
|
1927
|
+
value: 1 << 3,
|
|
1928
|
+
maxLayer: Layer.Space
|
|
1929
|
+
},
|
|
1930
|
+
ManageRoom: {
|
|
1931
|
+
value: 1 << 4,
|
|
1932
|
+
maxLayer: Layer.Room
|
|
1933
|
+
},
|
|
1934
|
+
ManageTopic: {
|
|
1935
|
+
value: 1 << 5,
|
|
1936
|
+
maxLayer: Layer.Topic
|
|
1937
|
+
},
|
|
1938
|
+
ManageSpaceMembers: {
|
|
1939
|
+
value: 1 << 6,
|
|
1940
|
+
maxLayer: Layer.Space
|
|
1941
|
+
},
|
|
1942
|
+
ManageRoomMembers: {
|
|
1943
|
+
value: 1 << 7,
|
|
1944
|
+
maxLayer: Layer.Room
|
|
1945
|
+
},
|
|
1946
|
+
CreateMessages: {
|
|
1947
|
+
value: 1 << 8,
|
|
1948
|
+
maxLayer: Layer.Topic
|
|
1949
|
+
},
|
|
1950
|
+
ManagePermissions: {
|
|
1951
|
+
value: 1 << 9,
|
|
1952
|
+
maxLayer: Layer.Topic
|
|
1953
|
+
},
|
|
1954
|
+
CreateSpaceRooms: {
|
|
1955
|
+
value: 1 << 10,
|
|
1956
|
+
maxLayer: Layer.Space
|
|
1957
|
+
},
|
|
1958
|
+
ManageSpaceRooms: {
|
|
1959
|
+
value: 1 << 11,
|
|
1960
|
+
maxLayer: Layer.Space
|
|
1961
|
+
}
|
|
1962
|
+
});
|
|
1963
|
+
;// CONCATENATED MODULE: ./src/state-tracker/PermissionsManager.ts
|
|
1964
|
+
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); }
|
|
1965
|
+
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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
1966
|
+
function PermissionsManager_toConsumableArray(arr) { return PermissionsManager_arrayWithoutHoles(arr) || PermissionsManager_iterableToArray(arr) || PermissionsManager_unsupportedIterableToArray(arr) || PermissionsManager_nonIterableSpread(); }
|
|
1967
|
+
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."); }
|
|
1968
|
+
function PermissionsManager_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
1969
|
+
function PermissionsManager_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return PermissionsManager_arrayLikeToArray(arr); }
|
|
1970
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || PermissionsManager_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
1971
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1972
|
+
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); }
|
|
1973
|
+
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; }
|
|
1974
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
1975
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1976
|
+
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; }
|
|
1977
|
+
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); } }
|
|
1978
|
+
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); }); }; }
|
|
1979
|
+
function PermissionsManager_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
1980
|
+
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); } }
|
|
1981
|
+
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; }
|
|
1982
|
+
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); }
|
|
1983
|
+
function PermissionsManager_superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = PermissionsManager_getPrototypeOf(object); if (object === null) break; } return object; }
|
|
1984
|
+
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); }
|
|
1985
|
+
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); }
|
|
1986
|
+
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); }; }
|
|
1987
|
+
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); }
|
|
1988
|
+
function PermissionsManager_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
1989
|
+
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; } }
|
|
1990
|
+
function PermissionsManager_getPrototypeOf(o) { PermissionsManager_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return PermissionsManager_getPrototypeOf(o); }
|
|
1991
|
+
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; }
|
|
1992
|
+
function PermissionsManager_toPropertyKey(arg) { var key = PermissionsManager_toPrimitive(arg, "string"); return PermissionsManager_typeof(key) === "symbol" ? key : String(key); }
|
|
1993
|
+
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); }
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
var getOvId = function getOvId(location, target, targetId) {
|
|
1999
|
+
var _location$spaceId, _location$roomId, _location$topicId;
|
|
2000
|
+
return ((_location$spaceId = location.spaceId) !== null && _location$spaceId !== void 0 ? _location$spaceId : '') + ((_location$roomId = location.roomId) !== null && _location$roomId !== void 0 ? _location$roomId : '') + ((_location$topicId = location.topicId) !== null && _location$topicId !== void 0 ? _location$topicId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
|
|
2001
|
+
};
|
|
2002
|
+
var getOvIdByObject = function getOvIdByObject(overwrites) {
|
|
2003
|
+
return getOvId(overwrites.location, overwrites.target, overwrites.targetId);
|
|
2004
|
+
};
|
|
2005
|
+
var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
|
|
2006
|
+
PermissionsManager_inherits(PermissionsManager, _EventTarget);
|
|
2007
|
+
var _super = PermissionsManager_createSuper(PermissionsManager);
|
|
2008
|
+
function PermissionsManager(tracker) {
|
|
2009
|
+
var _this;
|
|
2010
|
+
PermissionsManager_classCallCheck(this, PermissionsManager);
|
|
2011
|
+
_this = _super.call(this);
|
|
2012
|
+
_this.tracker = tracker;
|
|
2013
|
+
PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
|
|
2014
|
+
PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwritesPromises", new PromiseRegistry());
|
|
2015
|
+
_this.tracker.client.on('PermissionOverwrites', function (ev) {
|
|
2016
|
+
return _this.handlePermissionOverwrites(ev);
|
|
2017
|
+
});
|
|
2018
|
+
_this.tracker.client.on('PermissionOverwritesUpdated', function (ev) {
|
|
2019
|
+
return _this.handlePermissionOverwrites(ev);
|
|
2020
|
+
});
|
|
2021
|
+
_this.tracker.client.on('SpaceDeleted', function (ev) {
|
|
2022
|
+
return _this.handleSpaceDeleted(ev);
|
|
2023
|
+
});
|
|
2024
|
+
_this.tracker.client.on('SpaceLeft', function (ev) {
|
|
2025
|
+
return _this.handleSpaceDeleted(ev);
|
|
2026
|
+
});
|
|
2027
|
+
_this.tracker.client.on('RoomDeleted', function (ev) {
|
|
2028
|
+
return _this.handleRoomDeleted(ev);
|
|
2029
|
+
});
|
|
2030
|
+
_this.tracker.client.on('RoomLeft', function (ev) {
|
|
2031
|
+
return _this.handleRoomDeleted(ev);
|
|
2032
|
+
});
|
|
2033
|
+
_this.tracker.client.on('TopicDeleted', function (ev) {
|
|
2034
|
+
return _this.handleTopicDeleted(ev);
|
|
2035
|
+
});
|
|
2036
|
+
_this.tracker.client.on('RoleDeleted', function (ev) {
|
|
2037
|
+
return _this.handleRoleDeleted(ev);
|
|
2038
|
+
});
|
|
2039
|
+
_this.tracker.client.on('SpaceMemberUpdated', function (ev) {
|
|
2040
|
+
return _this.handleSpaceMemberUpdated(ev);
|
|
2041
|
+
});
|
|
2042
|
+
_this.tracker.client.on('RoomMemberUpdated', function (ev) {
|
|
2043
|
+
return _this.handleRoomMemberUpdated(ev);
|
|
2044
|
+
});
|
|
2045
|
+
return _this;
|
|
2046
|
+
}
|
|
2047
|
+
PermissionsManager_createClass(PermissionsManager, [{
|
|
2048
|
+
key: "getOverwrites",
|
|
2049
|
+
value: function () {
|
|
2050
|
+
var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(location, target, targetId) {
|
|
2051
|
+
var _this2 = this;
|
|
2052
|
+
var id;
|
|
2053
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
2054
|
+
while (1) {
|
|
2055
|
+
switch (_context2.prev = _context2.next) {
|
|
2056
|
+
case 0:
|
|
2057
|
+
this.validateLocation(location);
|
|
2058
|
+
id = getOvId(location, target, targetId);
|
|
2059
|
+
if (this.overwritesPromises.notExist(id)) {
|
|
2060
|
+
this.overwritesPromises.registerByFunction( /*#__PURE__*/PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee() {
|
|
2061
|
+
var result;
|
|
2062
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
|
|
2063
|
+
while (1) {
|
|
2064
|
+
switch (_context.prev = _context.next) {
|
|
2065
|
+
case 0:
|
|
2066
|
+
_context.next = 2;
|
|
2067
|
+
return _this2.tracker.client.send('GetPermissionOverwrites', {
|
|
2068
|
+
location: location,
|
|
2069
|
+
target: target,
|
|
2070
|
+
targetId: targetId
|
|
2071
|
+
});
|
|
2072
|
+
case 2:
|
|
2073
|
+
result = _context.sent;
|
|
2074
|
+
if (!result.error) {
|
|
2075
|
+
_context.next = 5;
|
|
2076
|
+
break;
|
|
2077
|
+
}
|
|
2078
|
+
throw result.error;
|
|
2079
|
+
case 5:
|
|
2080
|
+
_this2.handlePermissionOverwrites(result.data);
|
|
2081
|
+
case 6:
|
|
2082
|
+
case "end":
|
|
2083
|
+
return _context.stop();
|
|
2084
|
+
}
|
|
2085
|
+
}
|
|
2086
|
+
}, _callee);
|
|
2087
|
+
})), id);
|
|
2088
|
+
}
|
|
2089
|
+
_context2.next = 5;
|
|
2090
|
+
return this.overwritesPromises.get(id);
|
|
2091
|
+
case 5:
|
|
2092
|
+
return _context2.abrupt("return", this.overwrites.get(id));
|
|
2093
|
+
case 6:
|
|
2094
|
+
case "end":
|
|
2095
|
+
return _context2.stop();
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
2098
|
+
}, _callee2, this);
|
|
2099
|
+
}));
|
|
2100
|
+
function getOverwrites(_x, _x2, _x3) {
|
|
2101
|
+
return _getOverwrites.apply(this, arguments);
|
|
2102
|
+
}
|
|
2103
|
+
return getOverwrites;
|
|
2104
|
+
}()
|
|
2105
|
+
}, {
|
|
2106
|
+
key: "on",
|
|
2107
|
+
value: function on(eventName, handler) {
|
|
2108
|
+
return PermissionsManager_get(PermissionsManager_getPrototypeOf(PermissionsManager.prototype), "on", this).call(this, eventName, handler);
|
|
2109
|
+
}
|
|
2110
|
+
}, {
|
|
2111
|
+
key: "check",
|
|
2112
|
+
value: function () {
|
|
2113
|
+
var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, location) {
|
|
2114
|
+
var ownedPermissions, missing;
|
|
2115
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
2116
|
+
while (1) {
|
|
2117
|
+
switch (_context3.prev = _context3.next) {
|
|
2118
|
+
case 0:
|
|
2119
|
+
if (permissionNames.length) {
|
|
2120
|
+
_context3.next = 2;
|
|
2121
|
+
break;
|
|
2122
|
+
}
|
|
2123
|
+
throw new Error('Permission names array cannot be empty');
|
|
2124
|
+
case 2:
|
|
2125
|
+
_context3.next = 4;
|
|
2126
|
+
return this.calculatePermissions(location);
|
|
2127
|
+
case 4:
|
|
2128
|
+
ownedPermissions = _context3.sent;
|
|
2129
|
+
missing = [];
|
|
2130
|
+
permissionNames.forEach(function (name) {
|
|
2131
|
+
if (~ownedPermissions & Permissions.getByName(name).value) {
|
|
2132
|
+
missing.push(name);
|
|
2133
|
+
}
|
|
2134
|
+
});
|
|
2135
|
+
return _context3.abrupt("return", {
|
|
2136
|
+
ok: missing.length === 0,
|
|
2137
|
+
hasAll: missing.length === 0,
|
|
2138
|
+
hasAny: missing.length < permissionNames.length,
|
|
2139
|
+
missing: missing
|
|
2140
|
+
});
|
|
2141
|
+
case 8:
|
|
2142
|
+
case "end":
|
|
2143
|
+
return _context3.stop();
|
|
2144
|
+
}
|
|
2145
|
+
}
|
|
2146
|
+
}, _callee3, this);
|
|
2147
|
+
}));
|
|
2148
|
+
function check(_x4, _x5) {
|
|
2149
|
+
return _check.apply(this, arguments);
|
|
2150
|
+
}
|
|
2151
|
+
return check;
|
|
2152
|
+
}()
|
|
2153
|
+
}, {
|
|
2154
|
+
key: "calculatePermissions",
|
|
2155
|
+
value: function () {
|
|
2156
|
+
var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(location) {
|
|
2157
|
+
var _spaceMember$roles, _roomMember$roles, _yield$this$tracker$s, _yield$this$tracker$r, _yield$this$tracker$r2;
|
|
2158
|
+
var userId, _yield$this$fetchMemb, _yield$this$fetchMemb2, spaceMember, roomMember, userRoles, promises, filterLocation, _filterLocation;
|
|
2159
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
2160
|
+
while (1) {
|
|
2161
|
+
switch (_context4.prev = _context4.next) {
|
|
2162
|
+
case 0:
|
|
2163
|
+
this.validateLocation(location);
|
|
2164
|
+
_context4.next = 3;
|
|
2165
|
+
return this.tracker.getMe();
|
|
2166
|
+
case 3:
|
|
2167
|
+
userId = _context4.sent.id;
|
|
2168
|
+
_context4.next = 6;
|
|
2169
|
+
return this.fetchMembersOrFail(location);
|
|
2170
|
+
case 6:
|
|
2171
|
+
_yield$this$fetchMemb = _context4.sent;
|
|
2172
|
+
_yield$this$fetchMemb2 = _slicedToArray(_yield$this$fetchMemb, 2);
|
|
2173
|
+
spaceMember = _yield$this$fetchMemb2[0];
|
|
2174
|
+
roomMember = _yield$this$fetchMemb2[1];
|
|
2175
|
+
userRoles = [].concat(PermissionsManager_toConsumableArray((_spaceMember$roles = spaceMember === null || spaceMember === void 0 ? void 0 : spaceMember.roles) !== null && _spaceMember$roles !== void 0 ? _spaceMember$roles : []), PermissionsManager_toConsumableArray((_roomMember$roles = roomMember === null || roomMember === void 0 ? void 0 : roomMember.roles) !== null && _roomMember$roles !== void 0 ? _roomMember$roles : []));
|
|
2176
|
+
promises = [
|
|
2177
|
+
// Global user overwrites
|
|
2178
|
+
this.getOverwrites({}, 'User', userId).then(function (v) {
|
|
2179
|
+
return v.overwrites;
|
|
2180
|
+
})];
|
|
2181
|
+
_context4.t0 = location.spaceId;
|
|
2182
|
+
if (!_context4.t0) {
|
|
2183
|
+
_context4.next = 24;
|
|
2184
|
+
break;
|
|
2185
|
+
}
|
|
2186
|
+
_context4.next = 16;
|
|
2187
|
+
return this.tracker.spaces.get();
|
|
2188
|
+
case 16:
|
|
2189
|
+
_context4.t3 = _yield$this$tracker$s = _context4.sent;
|
|
2190
|
+
_context4.t2 = _context4.t3 !== null;
|
|
2191
|
+
if (!_context4.t2) {
|
|
2192
|
+
_context4.next = 20;
|
|
2193
|
+
break;
|
|
2194
|
+
}
|
|
2195
|
+
_context4.t2 = _yield$this$tracker$s !== void 0;
|
|
2196
|
+
case 20:
|
|
2197
|
+
_context4.t1 = _context4.t2;
|
|
2198
|
+
if (!_context4.t1) {
|
|
2199
|
+
_context4.next = 23;
|
|
2200
|
+
break;
|
|
2201
|
+
}
|
|
2202
|
+
_context4.t1 = _yield$this$tracker$s.has(location.spaceId);
|
|
2203
|
+
case 23:
|
|
2204
|
+
_context4.t0 = _context4.t1;
|
|
2205
|
+
case 24:
|
|
2206
|
+
if (!_context4.t0) {
|
|
2207
|
+
_context4.next = 28;
|
|
2208
|
+
break;
|
|
2209
|
+
}
|
|
2210
|
+
filterLocation = {
|
|
2211
|
+
spaceId: location.spaceId
|
|
2212
|
+
};
|
|
2213
|
+
promises.push(this.collectRoleOverwrites(filterLocation, userRoles));
|
|
2214
|
+
promises.push(this.getOverwrites(filterLocation, 'User', userId).then(function (v) {
|
|
2215
|
+
return v.overwrites;
|
|
2216
|
+
}));
|
|
2217
|
+
case 28:
|
|
2218
|
+
_context4.t4 = location.roomId;
|
|
2219
|
+
if (!_context4.t4) {
|
|
2220
|
+
_context4.next = 40;
|
|
2221
|
+
break;
|
|
2222
|
+
}
|
|
2223
|
+
_context4.next = 32;
|
|
2224
|
+
return this.tracker.rooms.get();
|
|
2225
|
+
case 32:
|
|
2226
|
+
_context4.t7 = _yield$this$tracker$r = _context4.sent;
|
|
2227
|
+
_context4.t6 = _context4.t7 !== null;
|
|
2228
|
+
if (!_context4.t6) {
|
|
2229
|
+
_context4.next = 36;
|
|
2230
|
+
break;
|
|
2231
|
+
}
|
|
2232
|
+
_context4.t6 = _yield$this$tracker$r !== void 0;
|
|
2233
|
+
case 36:
|
|
2234
|
+
_context4.t5 = _context4.t6;
|
|
2235
|
+
if (!_context4.t5) {
|
|
2236
|
+
_context4.next = 39;
|
|
2237
|
+
break;
|
|
2238
|
+
}
|
|
2239
|
+
_context4.t5 = _yield$this$tracker$r.has(location.roomId);
|
|
2240
|
+
case 39:
|
|
2241
|
+
_context4.t4 = _context4.t5;
|
|
2242
|
+
case 40:
|
|
2243
|
+
if (!_context4.t4) {
|
|
2244
|
+
_context4.next = 44;
|
|
2245
|
+
break;
|
|
2246
|
+
}
|
|
2247
|
+
_filterLocation = {
|
|
2248
|
+
spaceId: location.spaceId,
|
|
2249
|
+
roomId: location.roomId
|
|
2250
|
+
};
|
|
2251
|
+
if (userRoles.length) {
|
|
2252
|
+
promises.push(this.collectRoleOverwrites(_filterLocation, userRoles));
|
|
2253
|
+
}
|
|
2254
|
+
promises.push(this.getOverwrites(_filterLocation, 'User', userId).then(function (v) {
|
|
2255
|
+
return v.overwrites;
|
|
2256
|
+
}));
|
|
2257
|
+
case 44:
|
|
2258
|
+
_context4.t8 = location.topicId;
|
|
2259
|
+
if (!_context4.t8) {
|
|
2260
|
+
_context4.next = 56;
|
|
2261
|
+
break;
|
|
2262
|
+
}
|
|
2263
|
+
_context4.next = 48;
|
|
2264
|
+
return this.tracker.rooms.getTopics(location.roomId);
|
|
2265
|
+
case 48:
|
|
2266
|
+
_context4.t11 = _yield$this$tracker$r2 = _context4.sent;
|
|
2267
|
+
_context4.t10 = _context4.t11 !== null;
|
|
2268
|
+
if (!_context4.t10) {
|
|
2269
|
+
_context4.next = 52;
|
|
2270
|
+
break;
|
|
2271
|
+
}
|
|
2272
|
+
_context4.t10 = _yield$this$tracker$r2 !== void 0;
|
|
2273
|
+
case 52:
|
|
2274
|
+
_context4.t9 = _context4.t10;
|
|
2275
|
+
if (!_context4.t9) {
|
|
2276
|
+
_context4.next = 55;
|
|
2277
|
+
break;
|
|
2278
|
+
}
|
|
2279
|
+
_context4.t9 = _yield$this$tracker$r2.has(location.topicId);
|
|
2280
|
+
case 55:
|
|
2281
|
+
_context4.t8 = _context4.t9;
|
|
2282
|
+
case 56:
|
|
2283
|
+
if (!_context4.t8) {
|
|
2284
|
+
_context4.next = 59;
|
|
2285
|
+
break;
|
|
2286
|
+
}
|
|
2287
|
+
if (userRoles.length) {
|
|
2288
|
+
promises.push(this.collectRoleOverwrites(location, userRoles));
|
|
2289
|
+
}
|
|
2290
|
+
promises.push(this.getOverwrites(location, 'User', userId).then(function (v) {
|
|
2291
|
+
return v.overwrites;
|
|
2292
|
+
}));
|
|
2293
|
+
case 59:
|
|
2294
|
+
_context4.t12 = this;
|
|
2295
|
+
_context4.next = 62;
|
|
2296
|
+
return Promise.all(promises);
|
|
2297
|
+
case 62:
|
|
2298
|
+
_context4.t13 = _context4.sent;
|
|
2299
|
+
return _context4.abrupt("return", _context4.t12.resolveOverwritesHierarchy.call(_context4.t12, _context4.t13));
|
|
2300
|
+
case 64:
|
|
2301
|
+
case "end":
|
|
2302
|
+
return _context4.stop();
|
|
2303
|
+
}
|
|
2304
|
+
}
|
|
2305
|
+
}, _callee4, this);
|
|
2306
|
+
}));
|
|
2307
|
+
function calculatePermissions(_x6) {
|
|
2308
|
+
return _calculatePermissions.apply(this, arguments);
|
|
2309
|
+
}
|
|
2310
|
+
return calculatePermissions;
|
|
2311
|
+
}()
|
|
2312
|
+
}, {
|
|
2313
|
+
key: "handlePermissionOverwrites",
|
|
2314
|
+
value: function handlePermissionOverwrites(ev) {
|
|
2315
|
+
this.overwrites.set([getOvIdByObject(ev), ev]);
|
|
2316
|
+
this.emit('change');
|
|
2317
|
+
}
|
|
2318
|
+
}, {
|
|
2319
|
+
key: "handleSpaceDeleted",
|
|
2320
|
+
value: function handleSpaceDeleted(ev) {
|
|
2321
|
+
var _this$overwritesPromi;
|
|
2322
|
+
var ids = this.deleteOverwritesByIdPrefix(getOvId({
|
|
2323
|
+
spaceId: ev.id
|
|
2324
|
+
}));
|
|
2325
|
+
(_this$overwritesPromi = this.overwritesPromises).forget.apply(_this$overwritesPromi, PermissionsManager_toConsumableArray(ids));
|
|
2326
|
+
}
|
|
2327
|
+
}, {
|
|
2328
|
+
key: "handleRoomDeleted",
|
|
2329
|
+
value: function () {
|
|
2330
|
+
var _handleRoomDeleted = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(ev) {
|
|
2331
|
+
var room, _this$overwritesPromi2, ids;
|
|
2332
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
2333
|
+
while (1) {
|
|
2334
|
+
switch (_context5.prev = _context5.next) {
|
|
2335
|
+
case 0:
|
|
2336
|
+
_context5.next = 2;
|
|
2337
|
+
return this.tracker.rooms.get();
|
|
2338
|
+
case 2:
|
|
2339
|
+
room = _context5.sent.get(ev.id);
|
|
2340
|
+
if (room) {
|
|
2341
|
+
ids = this.deleteOverwritesByIdPrefix(getOvId({
|
|
2342
|
+
spaceId: room.spaceId,
|
|
2343
|
+
roomId: room.id
|
|
2344
|
+
}));
|
|
2345
|
+
(_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
|
|
2346
|
+
}
|
|
2347
|
+
case 4:
|
|
2348
|
+
case "end":
|
|
2349
|
+
return _context5.stop();
|
|
2350
|
+
}
|
|
2351
|
+
}
|
|
2352
|
+
}, _callee5, this);
|
|
2353
|
+
}));
|
|
2354
|
+
function handleRoomDeleted(_x7) {
|
|
2355
|
+
return _handleRoomDeleted.apply(this, arguments);
|
|
721
2356
|
}
|
|
722
|
-
return
|
|
2357
|
+
return handleRoomDeleted;
|
|
723
2358
|
}()
|
|
724
2359
|
}, {
|
|
725
|
-
key: "
|
|
2360
|
+
key: "handleTopicDeleted",
|
|
2361
|
+
value: function handleTopicDeleted(ev) {
|
|
2362
|
+
var _this$overwritesPromi3;
|
|
2363
|
+
var ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));
|
|
2364
|
+
(_this$overwritesPromi3 = this.overwritesPromises).forget.apply(_this$overwritesPromi3, PermissionsManager_toConsumableArray(ids));
|
|
2365
|
+
}
|
|
2366
|
+
}, {
|
|
2367
|
+
key: "handleRoleDeleted",
|
|
2368
|
+
value: function handleRoleDeleted(ev) {
|
|
2369
|
+
var _this$overwritesPromi4;
|
|
2370
|
+
var ids = this.deleteOverwritesByIdPrefix(getOvId({
|
|
2371
|
+
spaceId: ev.spaceId
|
|
2372
|
+
}, 'Role', ev.id));
|
|
2373
|
+
(_this$overwritesPromi4 = this.overwritesPromises).forget.apply(_this$overwritesPromi4, PermissionsManager_toConsumableArray(ids));
|
|
2374
|
+
}
|
|
2375
|
+
}, {
|
|
2376
|
+
key: "handleSpaceMemberUpdated",
|
|
2377
|
+
value: function handleSpaceMemberUpdated(ev) {
|
|
2378
|
+
var _this$tracker$me;
|
|
2379
|
+
if (ev.userId === ((_this$tracker$me = this.tracker.me) === null || _this$tracker$me === void 0 ? void 0 : _this$tracker$me.id)) {
|
|
2380
|
+
// User roles in space could potentially have changed
|
|
2381
|
+
this.emit('change');
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2384
|
+
}, {
|
|
2385
|
+
key: "handleRoomMemberUpdated",
|
|
2386
|
+
value: function handleRoomMemberUpdated(ev) {
|
|
2387
|
+
var _this$tracker$me2;
|
|
2388
|
+
if (ev.userId === ((_this$tracker$me2 = this.tracker.me) === null || _this$tracker$me2 === void 0 ? void 0 : _this$tracker$me2.id)) {
|
|
2389
|
+
// User roles in room could potentially have changed
|
|
2390
|
+
this.emit('change');
|
|
2391
|
+
}
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
/**
|
|
2395
|
+
* @return Matched and deleted ids
|
|
2396
|
+
*/
|
|
2397
|
+
}, {
|
|
2398
|
+
key: "deleteOverwritesByIdPrefix",
|
|
2399
|
+
value: function deleteOverwritesByIdPrefix(prefix) {
|
|
2400
|
+
var _this3 = this;
|
|
2401
|
+
var ids = [];
|
|
2402
|
+
this.overwrites.items.forEach(function (overwrites) {
|
|
2403
|
+
var id = getOvIdByObject(overwrites);
|
|
2404
|
+
if (id.startsWith(prefix)) {
|
|
2405
|
+
ids.push(id);
|
|
2406
|
+
_this3.overwrites["delete"](id);
|
|
2407
|
+
}
|
|
2408
|
+
});
|
|
2409
|
+
return ids;
|
|
2410
|
+
}
|
|
2411
|
+
}, {
|
|
2412
|
+
key: "collectRoleOverwrites",
|
|
726
2413
|
value: function () {
|
|
727
|
-
var
|
|
728
|
-
|
|
2414
|
+
var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(location, userRoles) {
|
|
2415
|
+
var _this4 = this;
|
|
2416
|
+
var roleOverwrites;
|
|
2417
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
729
2418
|
while (1) {
|
|
730
2419
|
switch (_context6.prev = _context6.next) {
|
|
731
2420
|
case 0:
|
|
732
|
-
|
|
733
|
-
|
|
2421
|
+
_context6.next = 2;
|
|
2422
|
+
return Promise.all(userRoles.map(function (roleId) {
|
|
2423
|
+
return _this4.getOverwrites(location, 'Role', roleId);
|
|
2424
|
+
}));
|
|
2425
|
+
case 2:
|
|
2426
|
+
roleOverwrites = _context6.sent;
|
|
2427
|
+
return _context6.abrupt("return", this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites));
|
|
2428
|
+
case 4:
|
|
734
2429
|
case "end":
|
|
735
2430
|
return _context6.stop();
|
|
736
2431
|
}
|
|
737
2432
|
}
|
|
738
2433
|
}, _callee6, this);
|
|
739
2434
|
}));
|
|
740
|
-
function
|
|
741
|
-
return
|
|
2435
|
+
function collectRoleOverwrites(_x8, _x9) {
|
|
2436
|
+
return _collectRoleOverwrites.apply(this, arguments);
|
|
742
2437
|
}
|
|
743
|
-
return
|
|
2438
|
+
return collectRoleOverwrites;
|
|
744
2439
|
}()
|
|
745
2440
|
}, {
|
|
746
|
-
key: "
|
|
2441
|
+
key: "resolveOverwritesFromRolesByOrder",
|
|
747
2442
|
value: function () {
|
|
748
|
-
var
|
|
749
|
-
var
|
|
750
|
-
return
|
|
2443
|
+
var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee7(spaceId, overwrites) {
|
|
2444
|
+
var allows, denies, roles, sortedOverwrites, permissionsLength;
|
|
2445
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
751
2446
|
while (1) {
|
|
752
2447
|
switch (_context7.prev = _context7.next) {
|
|
753
2448
|
case 0:
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
2449
|
+
allows = 0, denies = 0;
|
|
2450
|
+
_context7.next = 3;
|
|
2451
|
+
return this.tracker.spaces.getRoles(spaceId);
|
|
2452
|
+
case 3:
|
|
2453
|
+
roles = _context7.sent;
|
|
2454
|
+
sortedOverwrites = overwrites.sort(function (a, b) {
|
|
2455
|
+
return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
|
|
2456
|
+
}); // Max length of bit word
|
|
2457
|
+
permissionsLength = overwrites.reduce(function (previousValue, currentValue) {
|
|
2458
|
+
var _currentValue$overwri, _currentValue$overwri2, _currentValue$overwri3, _currentValue$overwri4;
|
|
2459
|
+
return Math.max(previousValue, (_currentValue$overwri = (_currentValue$overwri2 = currentValue.overwrites.allow) === null || _currentValue$overwri2 === void 0 ? void 0 : _currentValue$overwri2.toString(2).length) !== null && _currentValue$overwri !== void 0 ? _currentValue$overwri : 0, (_currentValue$overwri3 = (_currentValue$overwri4 = currentValue.overwrites.deny) === null || _currentValue$overwri4 === void 0 ? void 0 : _currentValue$overwri4.toString(2).length) !== null && _currentValue$overwri3 !== void 0 ? _currentValue$overwri3 : 0);
|
|
2460
|
+
}, 0);
|
|
2461
|
+
sortedOverwrites.forEach(function (overwriteEvent) {
|
|
2462
|
+
var _overwrites$deny$toSt, _overwrites$deny, _overwrites$allow$toS, _overwrites$allow;
|
|
2463
|
+
var overwrites = overwriteEvent.overwrites;
|
|
2464
|
+
var revDecDenies = (_overwrites$deny$toSt = (_overwrites$deny = overwrites.deny) === null || _overwrites$deny === void 0 ? void 0 : _overwrites$deny.toString(2).split('').reverse().join('')) !== null && _overwrites$deny$toSt !== void 0 ? _overwrites$deny$toSt : '';
|
|
2465
|
+
var revDecAllows = (_overwrites$allow$toS = (_overwrites$allow = overwrites.allow) === null || _overwrites$allow === void 0 ? void 0 : _overwrites$allow.toString(2).split('').reverse().join('')) !== null && _overwrites$allow$toS !== void 0 ? _overwrites$allow$toS : '';
|
|
2466
|
+
for (var i = 0; i < permissionsLength; i++) {
|
|
2467
|
+
var _revDecDenies$i, _revDecAllows$i;
|
|
2468
|
+
var deny = parseInt((_revDecDenies$i = revDecDenies[i]) !== null && _revDecDenies$i !== void 0 ? _revDecDenies$i : '0');
|
|
2469
|
+
var allow = parseInt((_revDecAllows$i = revDecAllows[i]) !== null && _revDecAllows$i !== void 0 ? _revDecAllows$i : '0');
|
|
2470
|
+
if (deny) {
|
|
2471
|
+
denies |= 1 << i;
|
|
2472
|
+
}
|
|
2473
|
+
if (allow) {
|
|
2474
|
+
allows |= 1 << i;
|
|
2475
|
+
}
|
|
2476
|
+
}
|
|
2477
|
+
});
|
|
2478
|
+
return _context7.abrupt("return", {
|
|
2479
|
+
allow: allows,
|
|
2480
|
+
deny: denies
|
|
2481
|
+
});
|
|
2482
|
+
case 8:
|
|
766
2483
|
case "end":
|
|
767
2484
|
return _context7.stop();
|
|
768
2485
|
}
|
|
769
2486
|
}
|
|
770
2487
|
}, _callee7, this);
|
|
771
2488
|
}));
|
|
772
|
-
function
|
|
773
|
-
return
|
|
2489
|
+
function resolveOverwritesFromRolesByOrder(_x10, _x11) {
|
|
2490
|
+
return _resolveOverwritesFromRolesByOrder.apply(this, arguments);
|
|
774
2491
|
}
|
|
775
|
-
return
|
|
2492
|
+
return resolveOverwritesFromRolesByOrder;
|
|
776
2493
|
}()
|
|
777
2494
|
}, {
|
|
778
|
-
key: "
|
|
2495
|
+
key: "resolveOverwritesHierarchy",
|
|
2496
|
+
value: function resolveOverwritesHierarchy(permissionOverwritesValues) {
|
|
2497
|
+
var result = 0;
|
|
2498
|
+
var _iterator = PermissionsManager_createForOfIteratorHelper(permissionOverwritesValues),
|
|
2499
|
+
_step;
|
|
2500
|
+
try {
|
|
2501
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
2502
|
+
var value = _step.value;
|
|
2503
|
+
if (value.allow & Permissions.getByName('Root').value) {
|
|
2504
|
+
return this.getRootAccessValue();
|
|
2505
|
+
}
|
|
2506
|
+
result = result & ~value.deny | value.allow;
|
|
2507
|
+
}
|
|
2508
|
+
} catch (err) {
|
|
2509
|
+
_iterator.e(err);
|
|
2510
|
+
} finally {
|
|
2511
|
+
_iterator.f();
|
|
2512
|
+
}
|
|
2513
|
+
return result;
|
|
2514
|
+
}
|
|
2515
|
+
}, {
|
|
2516
|
+
key: "getRootAccessValue",
|
|
2517
|
+
value: function getRootAccessValue() {
|
|
2518
|
+
var result = 0;
|
|
2519
|
+
var _iterator2 = PermissionsManager_createForOfIteratorHelper(Permissions.getNames()),
|
|
2520
|
+
_step2;
|
|
2521
|
+
try {
|
|
2522
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
2523
|
+
var name = _step2.value;
|
|
2524
|
+
result |= Permissions.getByName(name).value;
|
|
2525
|
+
}
|
|
2526
|
+
} catch (err) {
|
|
2527
|
+
_iterator2.e(err);
|
|
2528
|
+
} finally {
|
|
2529
|
+
_iterator2.f();
|
|
2530
|
+
}
|
|
2531
|
+
return result;
|
|
2532
|
+
}
|
|
2533
|
+
}, {
|
|
2534
|
+
key: "fetchMembersOrFail",
|
|
779
2535
|
value: function () {
|
|
780
|
-
var
|
|
781
|
-
var
|
|
782
|
-
return
|
|
2536
|
+
var _fetchMembersOrFail = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee8(location) {
|
|
2537
|
+
var results, spaceFail, roomFail, layer;
|
|
2538
|
+
return PermissionsManager_regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
783
2539
|
while (1) {
|
|
784
2540
|
switch (_context8.prev = _context8.next) {
|
|
785
2541
|
case 0:
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
2542
|
+
_context8.next = 2;
|
|
2543
|
+
return Promise.all([location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null, location.roomId ? this.tracker.rooms.getMe(location.roomId) : null]);
|
|
2544
|
+
case 2:
|
|
2545
|
+
results = _context8.sent;
|
|
2546
|
+
spaceFail = location.spaceId && !results[0];
|
|
2547
|
+
roomFail = location.roomId && !results[1];
|
|
2548
|
+
if (!(spaceFail || roomFail)) {
|
|
2549
|
+
_context8.next = 8;
|
|
2550
|
+
break;
|
|
792
2551
|
}
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
case
|
|
796
|
-
return _context8.abrupt("return",
|
|
797
|
-
case
|
|
2552
|
+
layer = spaceFail ? "space (".concat(location.spaceId, ")") : "room (".concat(location.roomId, ")");
|
|
2553
|
+
throw new Error("Attempting to calculate permissions for a ".concat(layer, " that the user does not belong to"));
|
|
2554
|
+
case 8:
|
|
2555
|
+
return _context8.abrupt("return", results);
|
|
2556
|
+
case 9:
|
|
798
2557
|
case "end":
|
|
799
2558
|
return _context8.stop();
|
|
800
2559
|
}
|
|
801
2560
|
}
|
|
802
2561
|
}, _callee8, this);
|
|
803
2562
|
}));
|
|
804
|
-
function
|
|
805
|
-
return
|
|
2563
|
+
function fetchMembersOrFail(_x12) {
|
|
2564
|
+
return _fetchMembersOrFail.apply(this, arguments);
|
|
806
2565
|
}
|
|
807
|
-
return
|
|
2566
|
+
return fetchMembersOrFail;
|
|
808
2567
|
}()
|
|
809
2568
|
}, {
|
|
810
|
-
key: "
|
|
811
|
-
value: function () {
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
815
|
-
while (1) {
|
|
816
|
-
switch (_context9.prev = _context9.next) {
|
|
817
|
-
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
|
-
});
|
|
824
|
-
}
|
|
825
|
-
_context9.next = 4;
|
|
826
|
-
return this.deferredGetterReadiness(deferredGetterName);
|
|
827
|
-
case 4:
|
|
828
|
-
return _context9.abrupt("return", this.roomsMembers.get(roomId));
|
|
829
|
-
case 5:
|
|
830
|
-
case "end":
|
|
831
|
-
return _context9.stop();
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
}, _callee9, this);
|
|
835
|
-
}));
|
|
836
|
-
function getRoomMembers(_x6) {
|
|
837
|
-
return _getRoomMembers.apply(this, arguments);
|
|
2569
|
+
key: "validateLocation",
|
|
2570
|
+
value: function validateLocation(location) {
|
|
2571
|
+
if (location.topicId && !location.roomId) {
|
|
2572
|
+
throw new Error('Corrupted arguments hierarchy');
|
|
838
2573
|
}
|
|
839
|
-
|
|
840
|
-
|
|
2574
|
+
}
|
|
2575
|
+
}]);
|
|
2576
|
+
return PermissionsManager;
|
|
2577
|
+
}(EventTarget);
|
|
2578
|
+
;// CONCATENATED MODULE: ./src/state-tracker/ChatStateTracker.ts
|
|
2579
|
+
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); }
|
|
2580
|
+
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; }
|
|
2581
|
+
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); } }
|
|
2582
|
+
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); }); }; }
|
|
2583
|
+
function ChatStateTracker_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
2584
|
+
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); } }
|
|
2585
|
+
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; }
|
|
2586
|
+
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; }
|
|
2587
|
+
function ChatStateTracker_toPropertyKey(arg) { var key = ChatStateTracker_toPrimitive(arg, "string"); return ChatStateTracker_typeof(key) === "symbol" ? key : String(key); }
|
|
2588
|
+
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); }
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
var ChatStateTracker = /*#__PURE__*/function () {
|
|
2594
|
+
/**
|
|
2595
|
+
* State of your permissions.
|
|
2596
|
+
*/
|
|
2597
|
+
|
|
2598
|
+
/**
|
|
2599
|
+
* State of the rooms you are in.
|
|
2600
|
+
*/
|
|
2601
|
+
|
|
2602
|
+
/**
|
|
2603
|
+
* State of the spaces you are in.
|
|
2604
|
+
*/
|
|
2605
|
+
|
|
2606
|
+
function ChatStateTracker(client) {
|
|
2607
|
+
var _this = this;
|
|
2608
|
+
ChatStateTracker_classCallCheck(this, ChatStateTracker);
|
|
2609
|
+
this.client = client;
|
|
2610
|
+
ChatStateTracker_defineProperty(this, "permissions", new PermissionsManager(this));
|
|
2611
|
+
ChatStateTracker_defineProperty(this, "rooms", new RoomsManager(this));
|
|
2612
|
+
ChatStateTracker_defineProperty(this, "spaces", new SpacesManager(this));
|
|
2613
|
+
ChatStateTracker_defineProperty(this, "_me", null);
|
|
2614
|
+
ChatStateTracker_defineProperty(this, "deferredSession", new DeferredTask());
|
|
2615
|
+
this.client.on('Session', function (ev) {
|
|
2616
|
+
return _this.handleSession(ev);
|
|
2617
|
+
});
|
|
2618
|
+
}
|
|
2619
|
+
ChatStateTracker_createClass(ChatStateTracker, [{
|
|
2620
|
+
key: "me",
|
|
2621
|
+
get: function get() {
|
|
2622
|
+
return this._me;
|
|
2623
|
+
}
|
|
841
2624
|
}, {
|
|
842
|
-
key: "
|
|
2625
|
+
key: "getMe",
|
|
843
2626
|
value: function () {
|
|
844
|
-
var
|
|
845
|
-
|
|
846
|
-
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
2627
|
+
var _getMe = ChatStateTracker_asyncToGenerator( /*#__PURE__*/ChatStateTracker_regeneratorRuntime().mark(function _callee() {
|
|
2628
|
+
return ChatStateTracker_regeneratorRuntime().wrap(function _callee$(_context) {
|
|
847
2629
|
while (1) {
|
|
848
|
-
switch (
|
|
2630
|
+
switch (_context.prev = _context.next) {
|
|
849
2631
|
case 0:
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
_context10.next = 3;
|
|
855
|
-
return (_this$deferredGetters = this.deferredGetters.get(name)) === null || _this$deferredGetters === void 0 ? void 0 : _this$deferredGetters.promise;
|
|
2632
|
+
_context.next = 2;
|
|
2633
|
+
return this.deferredSession.promise;
|
|
2634
|
+
case 2:
|
|
2635
|
+
return _context.abrupt("return", this._me);
|
|
856
2636
|
case 3:
|
|
857
2637
|
case "end":
|
|
858
|
-
return
|
|
2638
|
+
return _context.stop();
|
|
859
2639
|
}
|
|
860
2640
|
}
|
|
861
|
-
},
|
|
2641
|
+
}, _callee, this);
|
|
862
2642
|
}));
|
|
863
|
-
function
|
|
864
|
-
return
|
|
2643
|
+
function getMe() {
|
|
2644
|
+
return _getMe.apply(this, arguments);
|
|
865
2645
|
}
|
|
866
|
-
return
|
|
2646
|
+
return getMe;
|
|
867
2647
|
}()
|
|
868
|
-
}, {
|
|
869
|
-
key: "bind",
|
|
870
|
-
value: function bind() {
|
|
871
|
-
var _this = this;
|
|
872
|
-
this.client.on(this.client.Event.disconnect, function (ev) {
|
|
873
|
-
return _this.handleDisconnect(ev);
|
|
874
|
-
});
|
|
875
|
-
this.client.on('NewMessage', function (ev) {
|
|
876
|
-
return _this.handleNewMessage(ev);
|
|
877
|
-
});
|
|
878
|
-
this.client.on('NewRole', function (ev) {
|
|
879
|
-
return _this.handleNewRole(ev);
|
|
880
|
-
});
|
|
881
|
-
this.client.on('NewRoom', function (ev) {
|
|
882
|
-
return _this.handleNewRoom(ev);
|
|
883
|
-
});
|
|
884
|
-
this.client.on('NewTopic', function (ev) {
|
|
885
|
-
return _this.handleNewTopic(ev);
|
|
886
|
-
});
|
|
887
|
-
this.client.on('RoleDeleted', function (ev) {
|
|
888
|
-
return _this.handleRoleDeleted(ev);
|
|
889
|
-
});
|
|
890
|
-
this.client.on('RoomDeleted', function (ev) {
|
|
891
|
-
return _this.handleRoomDeleted(ev);
|
|
892
|
-
});
|
|
893
|
-
this.client.on('RoomJoined', function (ev) {
|
|
894
|
-
return _this.handleRoomJoined(ev);
|
|
895
|
-
});
|
|
896
|
-
this.client.on('RoomLeft', function (ev) {
|
|
897
|
-
return _this.handleRoomLeft(ev);
|
|
898
|
-
});
|
|
899
|
-
this.client.on('RoomMemberJoined', function (ev) {
|
|
900
|
-
return _this.handleRoomMemberJoined(ev);
|
|
901
|
-
});
|
|
902
|
-
this.client.on('RoomMemberLeft', function (ev) {
|
|
903
|
-
return _this.handleRoomMemberLeft(ev);
|
|
904
|
-
});
|
|
905
|
-
this.client.on('RoomMembers', function (ev) {
|
|
906
|
-
return _this.handleRoomMembers(ev);
|
|
907
|
-
});
|
|
908
|
-
this.client.on('Session', function (ev) {
|
|
909
|
-
return _this.handleSession(ev);
|
|
910
|
-
});
|
|
911
|
-
this.client.on('SpaceDeleted', function (ev) {
|
|
912
|
-
return _this.handleSpaceDeleted(ev);
|
|
913
|
-
});
|
|
914
|
-
this.client.on('SpaceJoined', function (ev) {
|
|
915
|
-
return _this.handleSpaceJoined(ev);
|
|
916
|
-
});
|
|
917
|
-
this.client.on('SpaceLeft', function (ev) {
|
|
918
|
-
return _this.handleSpaceLeft(ev);
|
|
919
|
-
});
|
|
920
|
-
this.client.on('SpaceMemberJoined', function (ev) {
|
|
921
|
-
return _this.handleSpaceMemberJoined(ev);
|
|
922
|
-
});
|
|
923
|
-
this.client.on('SpaceMemberLeft', function (ev) {
|
|
924
|
-
return _this.handleSpaceMemberLeft(ev);
|
|
925
|
-
});
|
|
926
|
-
this.client.on('SpaceMembers', function (ev) {
|
|
927
|
-
return _this.handleSpaceMembers(ev);
|
|
928
|
-
});
|
|
929
|
-
this.client.on('SpaceRooms', function (ev) {
|
|
930
|
-
return _this.handleSpaceRooms(ev);
|
|
931
|
-
});
|
|
932
|
-
this.client.on('SpaceMemberUpdate', function (ev) {
|
|
933
|
-
return _this.handleSpaceMemberUpdate(ev);
|
|
934
|
-
});
|
|
935
|
-
this.client.on('TopicDeleted', function (ev) {
|
|
936
|
-
return _this.handleTopicDeleted(ev);
|
|
937
|
-
});
|
|
938
|
-
}
|
|
939
|
-
}, {
|
|
940
|
-
key: "createDeferredGetter",
|
|
941
|
-
value: function createDeferredGetter(name) {
|
|
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 = resolve;
|
|
951
|
-
});
|
|
952
|
-
this.deferredGetters.set([name, deferred]);
|
|
953
|
-
}
|
|
954
|
-
}, {
|
|
955
|
-
key: "handleDisconnect",
|
|
956
|
-
value: function handleDisconnect(reconnect) {
|
|
957
|
-
if (reconnect) {
|
|
958
|
-
this.reconnecting = true;
|
|
959
|
-
return;
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
}, {
|
|
963
|
-
key: "handleNewMessage",
|
|
964
|
-
value: function handleNewMessage(ev) {
|
|
965
|
-
this.topicsMessages.get(ev.topicId).set(ev.message);
|
|
966
|
-
}
|
|
967
|
-
}, {
|
|
968
|
-
key: "handleNewRole",
|
|
969
|
-
value: function handleNewRole(ev) {
|
|
970
|
-
var collection = this.spacesRoles.get(ev.spaceId);
|
|
971
|
-
collection.set(ev.role);
|
|
972
|
-
this.joinedSpaces.get(ev.spaceId).roles = collection.items;
|
|
973
|
-
}
|
|
974
|
-
}, {
|
|
975
|
-
key: "handleNewRoom",
|
|
976
|
-
value: function handleNewRoom(ev) {
|
|
977
|
-
var _this$spacesRooms$get;
|
|
978
|
-
(_this$spacesRooms$get = this.spacesRooms.get(ev.spaceId)) === null || _this$spacesRooms$get === void 0 ? void 0 : _this$spacesRooms$get.set(ev.summary);
|
|
979
|
-
}
|
|
980
|
-
}, {
|
|
981
|
-
key: "handleNewTopic",
|
|
982
|
-
value: function handleNewTopic(ev) {
|
|
983
|
-
var collection = this.roomsTopics.get(ev.roomId);
|
|
984
|
-
collection.set(ev.topic);
|
|
985
|
-
this.joinedRooms.get(ev.roomId).topics = collection.items;
|
|
986
|
-
}
|
|
987
|
-
}, {
|
|
988
|
-
key: "handleRoleDeleted",
|
|
989
|
-
value: function handleRoleDeleted(ev) {
|
|
990
|
-
var collection = this.spacesRoles.get(ev.spaceId);
|
|
991
|
-
collection["delete"](ev.id);
|
|
992
|
-
this.joinedSpaces.get(ev.spaceId).roles = collection.items;
|
|
993
|
-
}
|
|
994
|
-
}, {
|
|
995
|
-
key: "handleRoomDeleted",
|
|
996
|
-
value: function handleRoomDeleted(ev) {
|
|
997
|
-
if (ev.spaceId) {
|
|
998
|
-
this.spacesRooms.get(ev.spaceId)["delete"](ev.id);
|
|
999
|
-
}
|
|
1000
|
-
this.joinedRooms["delete"](ev.id);
|
|
1001
|
-
this.roomsMembers["delete"](ev.id);
|
|
1002
|
-
this.roomsTopics["delete"](ev.id);
|
|
1003
|
-
}
|
|
1004
|
-
}, {
|
|
1005
|
-
key: "handleRoomJoined",
|
|
1006
|
-
value: function handleRoomJoined(ev) {
|
|
1007
|
-
this.addJoinedRooms(ev.room);
|
|
1008
|
-
}
|
|
1009
|
-
}, {
|
|
1010
|
-
key: "addJoinedRooms",
|
|
1011
|
-
value: function addJoinedRooms() {
|
|
1012
|
-
var _this$roomsTopics, _this$topicsMessages, _this$joinedRooms;
|
|
1013
|
-
for (var _len = arguments.length, rooms = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1014
|
-
rooms[_key] = arguments[_key];
|
|
1015
|
-
}
|
|
1016
|
-
(_this$roomsTopics = this.roomsTopics).set.apply(_this$roomsTopics, ChatStateTracker_toConsumableArray(rooms.map(function (room) {
|
|
1017
|
-
return [room.id, new ObservableIndexedObjectCollection('id', room.topics)];
|
|
1018
|
-
})));
|
|
1019
|
-
var topicsMessages = [];
|
|
1020
|
-
for (var _i = 0, _rooms = rooms; _i < _rooms.length; _i++) {
|
|
1021
|
-
var room = _rooms[_i];
|
|
1022
|
-
topicsMessages.push.apply(topicsMessages, ChatStateTracker_toConsumableArray(room.topics.map(function (topic) {
|
|
1023
|
-
return [topic.id, new ObservableIndexedObjectCollection('id')];
|
|
1024
|
-
})));
|
|
1025
|
-
}
|
|
1026
|
-
(_this$topicsMessages = this.topicsMessages).set.apply(_this$topicsMessages, topicsMessages);
|
|
1027
|
-
(_this$joinedRooms = this.joinedRooms).set.apply(_this$joinedRooms, rooms);
|
|
1028
|
-
}
|
|
1029
|
-
}, {
|
|
1030
|
-
key: "handleRoomLeft",
|
|
1031
|
-
value: function handleRoomLeft(ev) {
|
|
1032
|
-
this.joinedRooms["delete"](ev.id);
|
|
1033
|
-
this.roomsMembers["delete"](ev.id);
|
|
1034
|
-
this.roomsTopics["delete"](ev.id);
|
|
1035
|
-
}
|
|
1036
|
-
}, {
|
|
1037
|
-
key: "handleRoomMemberJoined",
|
|
1038
|
-
value: function handleRoomMemberJoined(ev) {
|
|
1039
|
-
if (this.roomsMembers.has(ev.roomId)) {
|
|
1040
|
-
this.roomsMembers.get(ev.roomId).set(ev.member);
|
|
1041
|
-
}
|
|
1042
|
-
}
|
|
1043
|
-
}, {
|
|
1044
|
-
key: "handleRoomMemberLeft",
|
|
1045
|
-
value: function handleRoomMemberLeft(ev) {
|
|
1046
|
-
if (this.roomsMembers.has(ev.roomId)) {
|
|
1047
|
-
this.roomsMembers.get(ev.roomId)["delete"](ev.userId);
|
|
1048
|
-
}
|
|
1049
|
-
}
|
|
1050
|
-
}, {
|
|
1051
|
-
key: "handleRoomMembers",
|
|
1052
|
-
value: function handleRoomMembers(ev) {
|
|
1053
|
-
if (!this.roomsMembers.has(ev.id)) {
|
|
1054
|
-
var _this$deferredGetters2;
|
|
1055
|
-
this.roomsMembers.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
|
|
1056
|
-
var _member$user$id;
|
|
1057
|
-
return (_member$user$id = member === null || member === void 0 ? void 0 : member.user.id) !== null && _member$user$id !== void 0 ? _member$user$id : member.spaceMember.user.id;
|
|
1058
|
-
}, ev.members)]);
|
|
1059
|
-
(_this$deferredGetters2 = this.deferredGetters.get("rooms-members-".concat(ev.id))) === null || _this$deferredGetters2 === void 0 ? void 0 : _this$deferredGetters2.resolver();
|
|
1060
|
-
}
|
|
1061
|
-
}
|
|
1062
2648
|
}, {
|
|
1063
2649
|
key: "handleSession",
|
|
1064
2650
|
value: function handleSession(ev) {
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
return;
|
|
1068
|
-
}
|
|
1069
|
-
this.me = ev.user;
|
|
1070
|
-
this.reconnecting = false;
|
|
1071
|
-
this.joinedRooms.deleteAll();
|
|
1072
|
-
this.roomsTopics.deleteAll();
|
|
1073
|
-
this.roomsMembers.deleteAll();
|
|
1074
|
-
this.joinedSpaces.deleteAll();
|
|
1075
|
-
this.spacesRoles.deleteAll();
|
|
1076
|
-
this.spacesRooms.deleteAll();
|
|
1077
|
-
this.spacesMembers.deleteAll();
|
|
1078
|
-
this.addJoinedRooms.apply(this, ChatStateTracker_toConsumableArray(ev.state.rooms));
|
|
1079
|
-
this.addJoinedSpaces.apply(this, ChatStateTracker_toConsumableArray(ev.state.spaces));
|
|
1080
|
-
(_this$deferredGetters3 = this.deferredGetters.get('session')) === null || _this$deferredGetters3 === void 0 ? void 0 : _this$deferredGetters3.resolver();
|
|
1081
|
-
}
|
|
1082
|
-
}, {
|
|
1083
|
-
key: "handleSpaceDeleted",
|
|
1084
|
-
value: function handleSpaceDeleted(ev) {
|
|
1085
|
-
this.spacesRoles["delete"](ev.id);
|
|
1086
|
-
this.spacesMembers["delete"](ev.id);
|
|
1087
|
-
this.spacesRooms["delete"](ev.id);
|
|
1088
|
-
this.joinedSpaces["delete"](ev.id);
|
|
1089
|
-
}
|
|
1090
|
-
}, {
|
|
1091
|
-
key: "handleSpaceJoined",
|
|
1092
|
-
value: function handleSpaceJoined(ev) {
|
|
1093
|
-
this.addJoinedSpaces(ev.space);
|
|
1094
|
-
}
|
|
1095
|
-
}, {
|
|
1096
|
-
key: "addJoinedSpaces",
|
|
1097
|
-
value: function addJoinedSpaces() {
|
|
1098
|
-
var _this$spacesRoles, _this$joinedSpaces;
|
|
1099
|
-
for (var _len2 = arguments.length, spaces = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
1100
|
-
spaces[_key2] = arguments[_key2];
|
|
1101
|
-
}
|
|
1102
|
-
(_this$spacesRoles = this.spacesRoles).set.apply(_this$spacesRoles, ChatStateTracker_toConsumableArray(spaces.map(function (space) {
|
|
1103
|
-
return [space.id, new ObservableIndexedObjectCollection('id', space.roles)];
|
|
1104
|
-
})));
|
|
1105
|
-
(_this$joinedSpaces = this.joinedSpaces).set.apply(_this$joinedSpaces, spaces);
|
|
1106
|
-
}
|
|
1107
|
-
}, {
|
|
1108
|
-
key: "handleSpaceLeft",
|
|
1109
|
-
value: function handleSpaceLeft(ev) {
|
|
1110
|
-
this.spacesRoles["delete"](ev.id);
|
|
1111
|
-
this.spacesMembers["delete"](ev.id);
|
|
1112
|
-
this.spacesRooms["delete"](ev.id);
|
|
1113
|
-
this.joinedSpaces["delete"](ev.id);
|
|
1114
|
-
}
|
|
1115
|
-
}, {
|
|
1116
|
-
key: "handleSpaceMemberJoined",
|
|
1117
|
-
value: function handleSpaceMemberJoined(ev) {
|
|
1118
|
-
if (this.spacesMembers.has(ev.spaceId)) {
|
|
1119
|
-
this.spacesMembers.get(ev.spaceId).set(ev.member);
|
|
1120
|
-
}
|
|
1121
|
-
}
|
|
1122
|
-
}, {
|
|
1123
|
-
key: "handleSpaceMemberLeft",
|
|
1124
|
-
value: function handleSpaceMemberLeft(ev) {
|
|
1125
|
-
if (this.spacesMembers.has(ev.spaceId)) {
|
|
1126
|
-
this.spacesMembers.get(ev.spaceId)["delete"](ev.userId);
|
|
1127
|
-
}
|
|
1128
|
-
}
|
|
1129
|
-
}, {
|
|
1130
|
-
key: "handleSpaceMembers",
|
|
1131
|
-
value: function handleSpaceMembers(ev) {
|
|
1132
|
-
if (!this.spacesMembers.has(ev.id)) {
|
|
1133
|
-
var _this$deferredGetters4;
|
|
1134
|
-
this.spacesMembers.set([ev.id, new ObservableIndexedObjectCollection(function (member) {
|
|
1135
|
-
return member === null || member === void 0 ? void 0 : member.user.id;
|
|
1136
|
-
}, ev.members)]);
|
|
1137
|
-
(_this$deferredGetters4 = this.deferredGetters.get("spaces-members-".concat(ev.id))) === null || _this$deferredGetters4 === void 0 ? void 0 : _this$deferredGetters4.resolver();
|
|
1138
|
-
}
|
|
1139
|
-
}
|
|
1140
|
-
}, {
|
|
1141
|
-
key: "handleSpaceRooms",
|
|
1142
|
-
value: function handleSpaceRooms(ev) {
|
|
1143
|
-
if (!this.spacesRooms.has(ev.id)) {
|
|
1144
|
-
var _this$deferredGetters5;
|
|
1145
|
-
this.spacesRooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);
|
|
1146
|
-
(_this$deferredGetters5 = this.deferredGetters.get("spaces-rooms-".concat(ev.id))) === null || _this$deferredGetters5 === void 0 ? void 0 : _this$deferredGetters5.resolver();
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
}, {
|
|
1150
|
-
key: "handleSpaceMemberUpdate",
|
|
1151
|
-
value: function handleSpaceMemberUpdate(ev) {
|
|
1152
|
-
if (this.spacesMembers.has(ev.spaceId)) {
|
|
1153
|
-
this.spacesMembers.get(ev.spaceId).set(ev.member);
|
|
1154
|
-
}
|
|
1155
|
-
}
|
|
1156
|
-
}, {
|
|
1157
|
-
key: "handleTopicDeleted",
|
|
1158
|
-
value: function handleTopicDeleted(ev) {
|
|
1159
|
-
var collection = this.roomsTopics.get(ev.roomId);
|
|
1160
|
-
collection["delete"](ev.id);
|
|
1161
|
-
this.joinedRooms.get(ev.roomId).topics = collection.items;
|
|
2651
|
+
this._me = ev.user;
|
|
2652
|
+
this.deferredSession.resolve();
|
|
1162
2653
|
}
|
|
1163
2654
|
}]);
|
|
1164
2655
|
return ChatStateTracker;
|
|
@@ -1548,6 +3039,7 @@ var AbstractRestClient = /*#__PURE__*/function () {
|
|
|
1548
3039
|
key: "send",
|
|
1549
3040
|
value: function () {
|
|
1550
3041
|
var _send = AbstractRestClient_asyncToGenerator( /*#__PURE__*/AbstractRestClient_regeneratorRuntime().mark(function _callee(method, uri) {
|
|
3042
|
+
var _result$headers$get;
|
|
1551
3043
|
var data,
|
|
1552
3044
|
headers,
|
|
1553
3045
|
url,
|
|
@@ -1585,16 +3077,29 @@ var AbstractRestClient = /*#__PURE__*/function () {
|
|
|
1585
3077
|
result = _context.sent;
|
|
1586
3078
|
_context.t0 = result.ok;
|
|
1587
3079
|
_context.t1 = result.status;
|
|
1588
|
-
|
|
3080
|
+
if (!((_result$headers$get = result.headers.get('content-type')) !== null && _result$headers$get !== void 0 && _result$headers$get.includes('json'))) {
|
|
3081
|
+
_context.next = 17;
|
|
3082
|
+
break;
|
|
3083
|
+
}
|
|
3084
|
+
_context.next = 14;
|
|
1589
3085
|
return result.json();
|
|
1590
|
-
case
|
|
3086
|
+
case 14:
|
|
3087
|
+
_context.t2 = _context.sent;
|
|
3088
|
+
_context.next = 20;
|
|
3089
|
+
break;
|
|
3090
|
+
case 17:
|
|
3091
|
+
_context.next = 19;
|
|
3092
|
+
return result.text();
|
|
3093
|
+
case 19:
|
|
1591
3094
|
_context.t2 = _context.sent;
|
|
3095
|
+
case 20:
|
|
3096
|
+
_context.t3 = _context.t2;
|
|
1592
3097
|
return _context.abrupt("return", {
|
|
1593
3098
|
ok: _context.t0,
|
|
1594
3099
|
status: _context.t1,
|
|
1595
|
-
data: _context.
|
|
3100
|
+
data: _context.t3
|
|
1596
3101
|
});
|
|
1597
|
-
case
|
|
3102
|
+
case 22:
|
|
1598
3103
|
case "end":
|
|
1599
3104
|
return _context.stop();
|
|
1600
3105
|
}
|
|
@@ -1770,6 +3275,7 @@ var AuthClient = /*#__PURE__*/function (_AbstractRestClient) {
|
|
|
1770
3275
|
|
|
1771
3276
|
|
|
1772
3277
|
|
|
3278
|
+
|
|
1773
3279
|
/******/ return __webpack_exports__;
|
|
1774
3280
|
/******/ })()
|
|
1775
3281
|
;
|