polfan-server-js-client 0.1.36 → 0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.js CHANGED
@@ -562,23 +562,63 @@ var ObservableIndexedObjectCollection = /*#__PURE__*/function (_IndexedObjectCol
562
562
  }]);
563
563
  return ObservableIndexedObjectCollection;
564
564
  }(IndexedObjectCollection);
565
- ;// CONCATENATED MODULE: ./src/state-tracker/DeferredTask.ts
566
- function DeferredTask_typeof(obj) { "@babel/helpers - typeof"; return DeferredTask_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, DeferredTask_typeof(obj); }
567
- function DeferredTask_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, DeferredTask_toPropertyKey(descriptor.key), descriptor); } }
568
- function DeferredTask_createClass(Constructor, protoProps, staticProps) { if (protoProps) DeferredTask_defineProperties(Constructor.prototype, protoProps); if (staticProps) DeferredTask_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
569
- function DeferredTask_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
570
- function DeferredTask_defineProperty(obj, key, value) { key = DeferredTask_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
571
- function DeferredTask_toPropertyKey(arg) { var key = DeferredTask_toPrimitive(arg, "string"); return DeferredTask_typeof(key) === "symbol" ? key : String(key); }
572
- function DeferredTask_toPrimitive(input, hint) { if (DeferredTask_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (DeferredTask_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
573
- var DeferredTask = /*#__PURE__*/DeferredTask_createClass(function DeferredTask() {
565
+ ;// CONCATENATED MODULE: ./src/state-tracker/AsyncUtils.ts
566
+ 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); }
567
+ 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); } }
568
+ 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; }
569
+ function AsyncUtils_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
570
+ 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; }
571
+ function AsyncUtils_toPropertyKey(arg) { var key = AsyncUtils_toPrimitive(arg, "string"); return AsyncUtils_typeof(key) === "symbol" ? key : String(key); }
572
+ 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); }
573
+
574
+ var DeferredTask = /*#__PURE__*/AsyncUtils_createClass(function DeferredTask() {
574
575
  var _this = this;
575
- DeferredTask_classCallCheck(this, DeferredTask);
576
- DeferredTask_defineProperty(this, "promise", void 0);
577
- DeferredTask_defineProperty(this, "resolve", void 0);
576
+ AsyncUtils_classCallCheck(this, DeferredTask);
577
+ AsyncUtils_defineProperty(this, "promise", void 0);
578
+ AsyncUtils_defineProperty(this, "resolve", void 0);
578
579
  this.promise = new Promise(function (resolve) {
579
580
  return _this.resolve = resolve;
580
581
  });
581
582
  });
583
+ var PromiseRegistry = /*#__PURE__*/function () {
584
+ function PromiseRegistry() {
585
+ AsyncUtils_classCallCheck(this, PromiseRegistry);
586
+ AsyncUtils_defineProperty(this, "promises", new IndexedCollection());
587
+ }
588
+ AsyncUtils_createClass(PromiseRegistry, [{
589
+ key: "register",
590
+ value: function register(promise, key) {
591
+ this.promises.set([key, promise]);
592
+ }
593
+ }, {
594
+ key: "registerByFunction",
595
+ value: function registerByFunction(fn, key) {
596
+ this.register(fn(), key);
597
+ }
598
+ }, {
599
+ key: "get",
600
+ value: function get(key) {
601
+ return this.promises.get(key);
602
+ }
603
+ }, {
604
+ key: "has",
605
+ value: function has(key) {
606
+ return this.promises.has(key);
607
+ }
608
+ }, {
609
+ key: "notExist",
610
+ value: function notExist(key) {
611
+ return !this.has(key);
612
+ }
613
+ }, {
614
+ key: "forget",
615
+ value: function forget() {
616
+ var _this$promises;
617
+ (_this$promises = this.promises)["delete"].apply(_this$promises, arguments);
618
+ }
619
+ }]);
620
+ return PromiseRegistry;
621
+ }();
582
622
  ;// CONCATENATED MODULE: ./src/state-tracker/MessagesManager.ts
583
623
  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); }
584
624
  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; }
@@ -900,6 +940,7 @@ var RoomsManager = /*#__PURE__*/function () {
900
940
  RoomsManager_defineProperty(this, "topics", new IndexedCollection());
901
941
  RoomsManager_defineProperty(this, "members", new IndexedCollection());
902
942
  RoomsManager_defineProperty(this, "deferredSession", new DeferredTask());
943
+ RoomsManager_defineProperty(this, "membersPromises", new PromiseRegistry());
903
944
  this.messages = new MessagesManager(tracker);
904
945
  this.tracker.client.on('NewTopic', function (ev) {
905
946
  return _this.handleNewTopic(ev);
@@ -913,6 +954,9 @@ var RoomsManager = /*#__PURE__*/function () {
913
954
  this.tracker.client.on('RoomLeft', function (ev) {
914
955
  return _this.handleRoomLeft(ev);
915
956
  });
957
+ this.tracker.client.on('RoomDeleted', function (ev) {
958
+ return _this.handleRoomDeleted(ev);
959
+ });
916
960
  this.tracker.client.on('RoomMemberJoined', function (ev) {
917
961
  return _this.handleRoomMemberJoined(ev);
918
962
  });
@@ -925,9 +969,15 @@ var RoomsManager = /*#__PURE__*/function () {
925
969
  this.tracker.client.on('RoomMemberUpdated', function (ev) {
926
970
  return _this.handleRoomMemberUpdated(ev);
927
971
  });
972
+ this.tracker.client.on('SpaceMemberLeft', function (ev) {
973
+ return _this.handleSpaceMemberLeft(ev);
974
+ });
928
975
  this.tracker.client.on('SpaceMemberUpdated', function (ev) {
929
976
  return _this.handleSpaceMemberUpdated(ev);
930
977
  });
978
+ this.tracker.client.on('SpaceDeleted', function (ev) {
979
+ return _this.handleSpaceDeleted(ev);
980
+ });
931
981
  this.tracker.client.on('UserChanged', function (ev) {
932
982
  return _this.handleUserChanged(ev);
933
983
  });
@@ -942,37 +992,50 @@ var RoomsManager = /*#__PURE__*/function () {
942
992
  RoomsManager_createClass(RoomsManager, [{
943
993
  key: "getMembers",
944
994
  value: function () {
945
- var _getMembers = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee(roomId) {
946
- var result;
947
- return RoomsManager_regeneratorRuntime().wrap(function _callee$(_context) {
995
+ var _getMembers = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
996
+ var _this2 = this;
997
+ return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
948
998
  while (1) {
949
- switch (_context.prev = _context.next) {
999
+ switch (_context2.prev = _context2.next) {
950
1000
  case 0:
951
- if (this.members.has(roomId)) {
952
- _context.next = 7;
953
- break;
1001
+ if (this.membersPromises.notExist(roomId)) {
1002
+ this.membersPromises.registerByFunction( /*#__PURE__*/RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee() {
1003
+ var result;
1004
+ return RoomsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1005
+ while (1) {
1006
+ switch (_context.prev = _context.next) {
1007
+ case 0:
1008
+ _context.next = 2;
1009
+ return _this2.tracker.client.send('GetRoomMembers', {
1010
+ id: roomId
1011
+ });
1012
+ case 2:
1013
+ result = _context.sent;
1014
+ if (!result.error) {
1015
+ _context.next = 5;
1016
+ break;
1017
+ }
1018
+ throw result.error;
1019
+ case 5:
1020
+ _this2.handleRoomMembers(result.data);
1021
+ case 6:
1022
+ case "end":
1023
+ return _context.stop();
1024
+ }
1025
+ }
1026
+ }, _callee);
1027
+ })), roomId);
954
1028
  }
955
- _context.next = 3;
956
- return this.tracker.client.send('GetRoomMembers', {
957
- id: roomId
958
- });
1029
+ _context2.next = 3;
1030
+ return this.membersPromises.get(roomId);
959
1031
  case 3:
960
- result = _context.sent;
961
- if (!result.error) {
962
- _context.next = 6;
963
- break;
964
- }
965
- throw result.error;
966
- case 6:
967
- this.handleRoomMembers(result.data);
968
- case 7:
969
- return _context.abrupt("return", this.members.get(roomId));
970
- case 8:
1032
+ return _context2.abrupt("return", this.members.get(roomId));
1033
+ case 4:
971
1034
  case "end":
972
- return _context.stop();
1035
+ return _context2.stop();
973
1036
  }
974
1037
  }
975
- }, _callee, this);
1038
+ }, _callee2, this);
976
1039
  }));
977
1040
  function getMembers(_x) {
978
1041
  return _getMembers.apply(this, arguments);
@@ -985,36 +1048,36 @@ var RoomsManager = /*#__PURE__*/function () {
985
1048
  }, {
986
1049
  key: "getMe",
987
1050
  value: function () {
988
- var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
1051
+ var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3(roomId) {
989
1052
  var userId, members;
990
- return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1053
+ return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
991
1054
  while (1) {
992
- switch (_context2.prev = _context2.next) {
1055
+ switch (_context3.prev = _context3.next) {
993
1056
  case 0:
994
- _context2.next = 2;
1057
+ _context3.next = 2;
995
1058
  return this.tracker.getMe();
996
1059
  case 2:
997
- userId = _context2.sent.id;
998
- _context2.next = 5;
1060
+ userId = _context3.sent.id;
1061
+ _context3.next = 5;
999
1062
  return this.getMembers(roomId);
1000
1063
  case 5:
1001
- members = _context2.sent;
1064
+ members = _context3.sent;
1002
1065
  if (members) {
1003
- _context2.next = 8;
1066
+ _context3.next = 8;
1004
1067
  break;
1005
1068
  }
1006
- return _context2.abrupt("return", undefined);
1069
+ return _context3.abrupt("return", undefined);
1007
1070
  case 8:
1008
- return _context2.abrupt("return", members.items.find(function (member) {
1071
+ return _context3.abrupt("return", members.items.find(function (member) {
1009
1072
  var _member$user$id, _member$user;
1010
1073
  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;
1011
1074
  }));
1012
1075
  case 9:
1013
1076
  case "end":
1014
- return _context2.stop();
1077
+ return _context3.stop();
1015
1078
  }
1016
1079
  }
1017
- }, _callee2, this);
1080
+ }, _callee3, this);
1018
1081
  }));
1019
1082
  function getMe(_x2) {
1020
1083
  return _getMe.apply(this, arguments);
@@ -1027,21 +1090,21 @@ var RoomsManager = /*#__PURE__*/function () {
1027
1090
  }, {
1028
1091
  key: "get",
1029
1092
  value: function () {
1030
- var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3() {
1031
- return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1093
+ var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4() {
1094
+ return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1032
1095
  while (1) {
1033
- switch (_context3.prev = _context3.next) {
1096
+ switch (_context4.prev = _context4.next) {
1034
1097
  case 0:
1035
- _context3.next = 2;
1098
+ _context4.next = 2;
1036
1099
  return this.deferredSession.promise;
1037
1100
  case 2:
1038
- return _context3.abrupt("return", this.list);
1101
+ return _context4.abrupt("return", this.list);
1039
1102
  case 3:
1040
1103
  case "end":
1041
- return _context3.stop();
1104
+ return _context4.stop();
1042
1105
  }
1043
1106
  }
1044
- }, _callee3, this);
1107
+ }, _callee4, this);
1045
1108
  }));
1046
1109
  function get() {
1047
1110
  return _get.apply(this, arguments);
@@ -1054,40 +1117,37 @@ var RoomsManager = /*#__PURE__*/function () {
1054
1117
  }, {
1055
1118
  key: "getTopics",
1056
1119
  value: function () {
1057
- var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4(roomId) {
1058
- return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1120
+ var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee5(roomId) {
1121
+ return RoomsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1059
1122
  while (1) {
1060
- switch (_context4.prev = _context4.next) {
1123
+ switch (_context5.prev = _context5.next) {
1061
1124
  case 0:
1062
- _context4.next = 2;
1125
+ _context5.next = 2;
1063
1126
  return this.deferredSession.promise;
1064
1127
  case 2:
1065
- return _context4.abrupt("return", this.topics.get(roomId));
1128
+ return _context5.abrupt("return", this.topics.get(roomId));
1066
1129
  case 3:
1067
1130
  case "end":
1068
- return _context4.stop();
1131
+ return _context5.stop();
1069
1132
  }
1070
1133
  }
1071
- }, _callee4, this);
1134
+ }, _callee5, this);
1072
1135
  }));
1073
1136
  function getTopics(_x3) {
1074
1137
  return _getTopics.apply(this, arguments);
1075
1138
  }
1076
1139
  return getTopics;
1077
1140
  }()
1078
- /**
1079
- * For internal use. If you want to leave the room, execute a proper command on client object.
1080
- * @internal
1081
- */
1082
1141
  }, {
1083
- key: "_delete",
1084
- value: function _delete() {
1085
- var _this$list, _this$members, _this$topics;
1142
+ key: "deleteRoom",
1143
+ value: function deleteRoom() {
1144
+ var _this$list, _this$members, _this$membersPromises, _this$topics;
1086
1145
  for (var _len = arguments.length, roomIds = new Array(_len), _key = 0; _key < _len; _key++) {
1087
1146
  roomIds[_key] = arguments[_key];
1088
1147
  }
1089
1148
  (_this$list = this.list)["delete"].apply(_this$list, roomIds);
1090
1149
  (_this$members = this.members)["delete"].apply(_this$members, roomIds);
1150
+ (_this$membersPromises = this.membersPromises).forget.apply(_this$membersPromises, roomIds);
1091
1151
  for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
1092
1152
  var _this$topics$get$map, _this$topics$get, _this$messages;
1093
1153
  var roomId = _roomIds[_i];
@@ -1098,15 +1158,10 @@ var RoomsManager = /*#__PURE__*/function () {
1098
1158
  }
1099
1159
  (_this$topics = this.topics)["delete"].apply(_this$topics, roomIds);
1100
1160
  }
1101
-
1102
- /**
1103
- * For internal use. If you want to leave the room, execute a proper command on client object.
1104
- * @internal
1105
- */
1106
1161
  }, {
1107
- key: "_deleteBySpaceId",
1108
- value: function _deleteBySpaceId(spaceId) {
1109
- this._delete.apply(this, RoomsManager_toConsumableArray(this.list.findBy('spaceId', spaceId).map(function (room) {
1162
+ key: "deleteRoomsBySpaceId",
1163
+ value: function deleteRoomsBySpaceId(spaceId) {
1164
+ this.deleteRoom.apply(this, RoomsManager_toConsumableArray(this.list.findBy('spaceId', spaceId).map(function (room) {
1110
1165
  return room.id;
1111
1166
  })));
1112
1167
  }
@@ -1140,6 +1195,11 @@ var RoomsManager = /*#__PURE__*/function () {
1140
1195
  _iterator.f();
1141
1196
  }
1142
1197
  }
1198
+ }, {
1199
+ key: "handleSpaceMemberLeft",
1200
+ value: function handleSpaceMemberLeft(ev) {
1201
+ this.deleteRoomsBySpaceId(ev.spaceId);
1202
+ }
1143
1203
  }, {
1144
1204
  key: "handleRoomMemberUpdated",
1145
1205
  value: function handleRoomMemberUpdated(ev) {
@@ -1159,6 +1219,11 @@ var RoomsManager = /*#__PURE__*/function () {
1159
1219
  }
1160
1220
  members.set(newMember);
1161
1221
  }
1222
+ }, {
1223
+ key: "handleSpaceDeleted",
1224
+ value: function handleSpaceDeleted(ev) {
1225
+ this.deleteRoomsBySpaceId(ev.id);
1226
+ }
1162
1227
  }, {
1163
1228
  key: "handleTopicDeleted",
1164
1229
  value: function handleTopicDeleted(ev) {
@@ -1192,6 +1257,11 @@ var RoomsManager = /*#__PURE__*/function () {
1192
1257
  value: function handleRoomJoined(ev) {
1193
1258
  this.addJoinedRooms(ev.room);
1194
1259
  }
1260
+ }, {
1261
+ key: "handleRoomDeleted",
1262
+ value: function handleRoomDeleted(ev) {
1263
+ this.deleteRoom(ev.id);
1264
+ }
1195
1265
  }, {
1196
1266
  key: "addJoinedRooms",
1197
1267
  value: function addJoinedRooms() {
@@ -1208,7 +1278,7 @@ var RoomsManager = /*#__PURE__*/function () {
1208
1278
  }, {
1209
1279
  key: "handleRoomLeft",
1210
1280
  value: function handleRoomLeft(ev) {
1211
- this._delete(ev.id);
1281
+ this.deleteRoom(ev.id);
1212
1282
  }
1213
1283
  }, {
1214
1284
  key: "handleRoomMemberJoined",
@@ -1318,6 +1388,8 @@ var SpacesManager = /*#__PURE__*/function () {
1318
1388
  SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1319
1389
  SpacesManager_defineProperty(this, "members", new IndexedCollection());
1320
1390
  SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1391
+ SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
1392
+ SpacesManager_defineProperty(this, "membersPromises", new PromiseRegistry());
1321
1393
  this.tracker.client.on('NewRoom', function (ev) {
1322
1394
  return _this.handleNewRoom(ev);
1323
1395
  });
@@ -1331,7 +1403,7 @@ var SpacesManager = /*#__PURE__*/function () {
1331
1403
  return _this.handleSpaceJoined(ev);
1332
1404
  });
1333
1405
  this.tracker.client.on('SpaceLeft', function (ev) {
1334
- return _this.handleSpaceLeft(ev);
1406
+ return _this.handleSpaceDeleted(ev);
1335
1407
  });
1336
1408
  this.tracker.client.on('SpaceMemberJoined', function (ev) {
1337
1409
  return _this.handleSpaceMemberJoined(ev);
@@ -1425,37 +1497,50 @@ var SpacesManager = /*#__PURE__*/function () {
1425
1497
  }, {
1426
1498
  key: "getRooms",
1427
1499
  value: function () {
1428
- var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3(spaceId) {
1429
- var result;
1430
- return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1500
+ var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1501
+ var _this2 = this;
1502
+ return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1431
1503
  while (1) {
1432
- switch (_context3.prev = _context3.next) {
1504
+ switch (_context4.prev = _context4.next) {
1433
1505
  case 0:
1434
- if (this.rooms.has(spaceId)) {
1435
- _context3.next = 7;
1436
- break;
1506
+ if (this.roomsPromises.notExist(spaceId)) {
1507
+ this.roomsPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3() {
1508
+ var result;
1509
+ return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1510
+ while (1) {
1511
+ switch (_context3.prev = _context3.next) {
1512
+ case 0:
1513
+ _context3.next = 2;
1514
+ return _this2.tracker.client.send('GetSpaceRooms', {
1515
+ id: spaceId
1516
+ });
1517
+ case 2:
1518
+ result = _context3.sent;
1519
+ if (!result.error) {
1520
+ _context3.next = 5;
1521
+ break;
1522
+ }
1523
+ throw result.error;
1524
+ case 5:
1525
+ _this2.handleSpaceRooms(result.data);
1526
+ case 6:
1527
+ case "end":
1528
+ return _context3.stop();
1529
+ }
1530
+ }
1531
+ }, _callee3);
1532
+ })), spaceId);
1437
1533
  }
1438
- _context3.next = 3;
1439
- return this.tracker.client.send('GetSpaceRooms', {
1440
- id: spaceId
1441
- });
1534
+ _context4.next = 3;
1535
+ return this.roomsPromises.get(spaceId);
1442
1536
  case 3:
1443
- result = _context3.sent;
1444
- if (!result.error) {
1445
- _context3.next = 6;
1446
- break;
1447
- }
1448
- throw result.error;
1449
- case 6:
1450
- this.handleSpaceRooms(result.data);
1451
- case 7:
1452
- return _context3.abrupt("return", this.rooms.get(spaceId));
1453
- case 8:
1537
+ return _context4.abrupt("return", this.rooms.get(spaceId));
1538
+ case 4:
1454
1539
  case "end":
1455
- return _context3.stop();
1540
+ return _context4.stop();
1456
1541
  }
1457
1542
  }
1458
- }, _callee3, this);
1543
+ }, _callee4, this);
1459
1544
  }));
1460
1545
  function getRooms(_x2) {
1461
1546
  return _getRooms.apply(this, arguments);
@@ -1468,37 +1553,50 @@ var SpacesManager = /*#__PURE__*/function () {
1468
1553
  }, {
1469
1554
  key: "getMembers",
1470
1555
  value: function () {
1471
- var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1472
- var result;
1473
- return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1556
+ var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee6(spaceId) {
1557
+ var _this3 = this;
1558
+ return SpacesManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1474
1559
  while (1) {
1475
- switch (_context4.prev = _context4.next) {
1560
+ switch (_context6.prev = _context6.next) {
1476
1561
  case 0:
1477
- if (this.members.has(spaceId)) {
1478
- _context4.next = 7;
1479
- break;
1562
+ if (this.membersPromises.notExist(spaceId)) {
1563
+ this.membersPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5() {
1564
+ var result;
1565
+ return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1566
+ while (1) {
1567
+ switch (_context5.prev = _context5.next) {
1568
+ case 0:
1569
+ _context5.next = 2;
1570
+ return _this3.tracker.client.send('GetSpaceMembers', {
1571
+ id: spaceId
1572
+ });
1573
+ case 2:
1574
+ result = _context5.sent;
1575
+ if (!result.error) {
1576
+ _context5.next = 5;
1577
+ break;
1578
+ }
1579
+ throw result.error;
1580
+ case 5:
1581
+ _this3.handleSpaceMembers(result.data);
1582
+ case 6:
1583
+ case "end":
1584
+ return _context5.stop();
1585
+ }
1586
+ }
1587
+ }, _callee5);
1588
+ })), spaceId);
1480
1589
  }
1481
- _context4.next = 3;
1482
- return this.tracker.client.send('GetSpaceMembers', {
1483
- id: spaceId
1484
- });
1590
+ _context6.next = 3;
1591
+ return this.membersPromises.get(spaceId);
1485
1592
  case 3:
1486
- result = _context4.sent;
1487
- if (!result.error) {
1488
- _context4.next = 6;
1489
- break;
1490
- }
1491
- throw result.error;
1492
- case 6:
1493
- this.handleSpaceMembers(result.data);
1494
- case 7:
1495
- return _context4.abrupt("return", this.members.get(spaceId));
1496
- case 8:
1593
+ return _context6.abrupt("return", this.members.get(spaceId));
1594
+ case 4:
1497
1595
  case "end":
1498
- return _context4.stop();
1596
+ return _context6.stop();
1499
1597
  }
1500
1598
  }
1501
- }, _callee4, this);
1599
+ }, _callee6, this);
1502
1600
  }));
1503
1601
  function getMembers(_x3) {
1504
1602
  return _getMembers.apply(this, arguments);
@@ -1511,35 +1609,35 @@ var SpacesManager = /*#__PURE__*/function () {
1511
1609
  }, {
1512
1610
  key: "getMe",
1513
1611
  value: function () {
1514
- var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5(spaceId) {
1612
+ var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee7(spaceId) {
1515
1613
  var userId, members;
1516
- return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1614
+ return SpacesManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
1517
1615
  while (1) {
1518
- switch (_context5.prev = _context5.next) {
1616
+ switch (_context7.prev = _context7.next) {
1519
1617
  case 0:
1520
- _context5.next = 2;
1618
+ _context7.next = 2;
1521
1619
  return this.tracker.getMe();
1522
1620
  case 2:
1523
- userId = _context5.sent.id;
1524
- _context5.next = 5;
1621
+ userId = _context7.sent.id;
1622
+ _context7.next = 5;
1525
1623
  return this.getMembers(spaceId);
1526
1624
  case 5:
1527
- members = _context5.sent;
1625
+ members = _context7.sent;
1528
1626
  if (members) {
1529
- _context5.next = 8;
1627
+ _context7.next = 8;
1530
1628
  break;
1531
1629
  }
1532
- return _context5.abrupt("return", undefined);
1630
+ return _context7.abrupt("return", undefined);
1533
1631
  case 8:
1534
- return _context5.abrupt("return", members.items.find(function (member) {
1632
+ return _context7.abrupt("return", members.items.find(function (member) {
1535
1633
  return member.user.id === userId;
1536
1634
  }));
1537
1635
  case 9:
1538
1636
  case "end":
1539
- return _context5.stop();
1637
+ return _context7.stop();
1540
1638
  }
1541
1639
  }
1542
- }, _callee5, this);
1640
+ }, _callee7, this);
1543
1641
  }));
1544
1642
  function getMe(_x4) {
1545
1643
  return _getMe.apply(this, arguments);
@@ -1565,7 +1663,6 @@ var SpacesManager = /*#__PURE__*/function () {
1565
1663
  if (ev.spaceId) {
1566
1664
  this.rooms.get(ev.spaceId)["delete"](ev.id);
1567
1665
  }
1568
- this.tracker.rooms._delete(ev.id);
1569
1666
  }
1570
1667
  }, {
1571
1668
  key: "handleRoleDeleted",
@@ -1577,10 +1674,11 @@ var SpacesManager = /*#__PURE__*/function () {
1577
1674
  }, {
1578
1675
  key: "handleSpaceDeleted",
1579
1676
  value: function handleSpaceDeleted(ev) {
1580
- this.tracker.rooms._deleteBySpaceId(ev.id);
1581
1677
  this.roles["delete"](ev.id);
1582
1678
  this.members["delete"](ev.id);
1679
+ this.membersPromises.forget(ev.id);
1583
1680
  this.rooms["delete"](ev.id);
1681
+ this.roomsPromises.forget(ev.id);
1584
1682
  this.list["delete"](ev.id);
1585
1683
  }
1586
1684
  }, {
@@ -1600,11 +1698,6 @@ var SpacesManager = /*#__PURE__*/function () {
1600
1698
  })));
1601
1699
  (_this$list = this.list).set.apply(_this$list, spaces);
1602
1700
  }
1603
- }, {
1604
- key: "handleSpaceLeft",
1605
- value: function handleSpaceLeft(ev) {
1606
- this.handleSpaceDeleted(ev);
1607
- }
1608
1701
  }, {
1609
1702
  key: "handleSpaceMemberJoined",
1610
1703
  value: function handleSpaceMemberJoined(ev) {
@@ -1733,8 +1826,9 @@ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_ty
1733
1826
 
1734
1827
 
1735
1828
 
1829
+
1736
1830
  var getOvId = function getOvId(layer, layerId, target, targetId) {
1737
- return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + target + targetId;
1831
+ return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
1738
1832
  };
1739
1833
  var getOvIdByObject = function getOvIdByObject(overwrites) {
1740
1834
  return getOvId(overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId);
@@ -1748,46 +1842,85 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1748
1842
  _this = _super.call(this);
1749
1843
  _this.tracker = tracker;
1750
1844
  PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
1845
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwritesPromises", new PromiseRegistry());
1751
1846
  _this.tracker.client.on('PermissionOverwrites', function (ev) {
1752
1847
  return _this.handlePermissionOverwrites(ev);
1753
1848
  });
1754
1849
  _this.tracker.client.on('PermissionOverwritesChanged', function (ev) {
1755
1850
  return _this.handlePermissionOverwrites(ev);
1756
1851
  });
1852
+ _this.tracker.client.on('SpaceDeleted', function (ev) {
1853
+ return _this.handleSpaceDeleted(ev);
1854
+ });
1855
+ _this.tracker.client.on('SpaceLeft', function (ev) {
1856
+ return _this.handleSpaceDeleted(ev);
1857
+ });
1858
+ _this.tracker.client.on('RoomDeleted', function (ev) {
1859
+ return _this.handleRoomDeleted(ev);
1860
+ });
1861
+ _this.tracker.client.on('RoomLeft', function (ev) {
1862
+ return _this.handleRoomDeleted(ev);
1863
+ });
1864
+ _this.tracker.client.on('TopicDeleted', function (ev) {
1865
+ return _this.handleTopicDeleted(ev);
1866
+ });
1867
+ _this.tracker.client.on('RoleDeleted', function (ev) {
1868
+ return _this.handleRoleDeleted(ev);
1869
+ });
1757
1870
  return _this;
1758
1871
  }
1759
1872
  PermissionsManager_createClass(PermissionsManager, [{
1760
1873
  key: "getOverwrites",
1761
1874
  value: function () {
1762
- var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee(layer, layerId, target, targetId) {
1763
- var id, result;
1764
- return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1875
+ var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(layer, layerId, target, targetId) {
1876
+ var _this2 = this;
1877
+ var id;
1878
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1765
1879
  while (1) {
1766
- switch (_context.prev = _context.next) {
1880
+ switch (_context2.prev = _context2.next) {
1767
1881
  case 0:
1768
1882
  id = getOvId(layer, layerId, target, targetId);
1769
- if (!this.overwrites.has(id)) {
1770
- _context.next = 3;
1771
- break;
1883
+ if (this.overwritesPromises.notExist(id)) {
1884
+ this.overwritesPromises.registerByFunction( /*#__PURE__*/PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee() {
1885
+ var result;
1886
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1887
+ while (1) {
1888
+ switch (_context.prev = _context.next) {
1889
+ case 0:
1890
+ _context.next = 2;
1891
+ return _this2.tracker.client.send('GetPermissionOverwrites', {
1892
+ layer: layer,
1893
+ layerId: layerId,
1894
+ target: target,
1895
+ targetId: targetId
1896
+ });
1897
+ case 2:
1898
+ result = _context.sent;
1899
+ if (!result.error) {
1900
+ _context.next = 5;
1901
+ break;
1902
+ }
1903
+ throw result.error;
1904
+ case 5:
1905
+ _this2.handlePermissionOverwrites(result.data);
1906
+ case 6:
1907
+ case "end":
1908
+ return _context.stop();
1909
+ }
1910
+ }
1911
+ }, _callee);
1912
+ })), id);
1772
1913
  }
1773
- return _context.abrupt("return", this.overwrites.get(id));
1774
- case 3:
1775
- _context.next = 5;
1776
- return this.tracker.client.send('GetPermissionOverwrites', {
1777
- layer: layer,
1778
- layerId: layerId,
1779
- target: target,
1780
- targetId: targetId
1781
- });
1914
+ _context2.next = 4;
1915
+ return this.overwritesPromises.get(id);
1916
+ case 4:
1917
+ return _context2.abrupt("return", this.overwrites.get(id));
1782
1918
  case 5:
1783
- result = _context.sent;
1784
- return _context.abrupt("return", result.error ? null : result.data);
1785
- case 7:
1786
1919
  case "end":
1787
- return _context.stop();
1920
+ return _context2.stop();
1788
1921
  }
1789
1922
  }
1790
- }, _callee, this);
1923
+ }, _callee2, this);
1791
1924
  }));
1792
1925
  function getOverwrites(_x, _x2, _x3, _x4) {
1793
1926
  return _getOverwrites.apply(this, arguments);
@@ -1802,32 +1935,32 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1802
1935
  }, {
1803
1936
  key: "check",
1804
1937
  value: function () {
1805
- var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(permissionNames, spaceId, roomId, topicId) {
1938
+ var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, spaceId, roomId, topicId) {
1806
1939
  var ownedPermissions, missing;
1807
- return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1940
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1808
1941
  while (1) {
1809
- switch (_context2.prev = _context2.next) {
1942
+ switch (_context3.prev = _context3.next) {
1810
1943
  case 0:
1811
- _context2.next = 2;
1944
+ _context3.next = 2;
1812
1945
  return this.calculatePermissions(spaceId, roomId, topicId);
1813
1946
  case 2:
1814
- ownedPermissions = _context2.sent;
1947
+ ownedPermissions = _context3.sent;
1815
1948
  missing = [];
1816
1949
  permissionNames.forEach(function (name) {
1817
1950
  if (~ownedPermissions & Permission[name]) {
1818
1951
  missing.push(name);
1819
1952
  }
1820
1953
  });
1821
- return _context2.abrupt("return", {
1954
+ return _context3.abrupt("return", {
1822
1955
  ok: missing.length === 0,
1823
1956
  missing: missing
1824
1957
  });
1825
1958
  case 6:
1826
1959
  case "end":
1827
- return _context2.stop();
1960
+ return _context3.stop();
1828
1961
  }
1829
1962
  }
1830
- }, _callee2, this);
1963
+ }, _callee3, this);
1831
1964
  }));
1832
1965
  function check(_x5, _x6, _x7, _x8) {
1833
1966
  return _check.apply(this, arguments);
@@ -1837,22 +1970,22 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1837
1970
  }, {
1838
1971
  key: "calculatePermissions",
1839
1972
  value: function () {
1840
- var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(spaceId, roomId, topicId) {
1973
+ var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, roomId, topicId) {
1841
1974
  var userId, userRoles, promises, roomMember;
1842
- return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1975
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1843
1976
  while (1) {
1844
- switch (_context3.prev = _context3.next) {
1977
+ switch (_context4.prev = _context4.next) {
1845
1978
  case 0:
1846
1979
  if (!(topicId && !roomId || roomId && !spaceId)) {
1847
- _context3.next = 2;
1980
+ _context4.next = 2;
1848
1981
  break;
1849
1982
  }
1850
1983
  throw new Error('Corrupted arguments hierarchy');
1851
1984
  case 2:
1852
- _context3.next = 4;
1985
+ _context4.next = 4;
1853
1986
  return this.tracker.getMe();
1854
1987
  case 4:
1855
- userId = _context3.sent.id;
1988
+ userId = _context4.sent.id;
1856
1989
  userRoles = [];
1857
1990
  promises = [
1858
1991
  // Global user overwrites
@@ -1860,31 +1993,31 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1860
1993
  return v.overwrites;
1861
1994
  })];
1862
1995
  if (!spaceId) {
1863
- _context3.next = 18;
1996
+ _context4.next = 18;
1864
1997
  break;
1865
1998
  }
1866
- _context3.t0 = userRoles.push;
1867
- _context3.t1 = userRoles;
1868
- _context3.t2 = PermissionsManager_toConsumableArray;
1869
- _context3.next = 13;
1999
+ _context4.t0 = userRoles.push;
2000
+ _context4.t1 = userRoles;
2001
+ _context4.t2 = PermissionsManager_toConsumableArray;
2002
+ _context4.next = 13;
1870
2003
  return this.tracker.spaces.getMe(spaceId);
1871
2004
  case 13:
1872
- _context3.t3 = _context3.sent.roles;
1873
- _context3.t4 = (0, _context3.t2)(_context3.t3);
1874
- _context3.t0.apply.call(_context3.t0, _context3.t1, _context3.t4);
2005
+ _context4.t3 = _context4.sent.roles;
2006
+ _context4.t4 = (0, _context4.t2)(_context4.t3);
2007
+ _context4.t0.apply.call(_context4.t0, _context4.t1, _context4.t4);
1875
2008
  promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));
1876
2009
  promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(function (v) {
1877
2010
  return v.overwrites;
1878
2011
  }));
1879
2012
  case 18:
1880
2013
  if (!roomId) {
1881
- _context3.next = 24;
2014
+ _context4.next = 24;
1882
2015
  break;
1883
2016
  }
1884
- _context3.next = 21;
2017
+ _context4.next = 21;
1885
2018
  return this.tracker.rooms.getMe(roomId);
1886
2019
  case 21:
1887
- roomMember = _context3.sent;
2020
+ roomMember = _context4.sent;
1888
2021
  if (roomMember.roles !== null) {
1889
2022
  // Room overwrites from roles (only for space rooms)
1890
2023
  userRoles.push.apply(userRoles, PermissionsManager_toConsumableArray(roomMember.roles));
@@ -1902,18 +2035,18 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1902
2035
  return v.overwrites;
1903
2036
  }));
1904
2037
  }
1905
- _context3.t5 = this;
1906
- _context3.next = 28;
2038
+ _context4.t5 = this;
2039
+ _context4.next = 28;
1907
2040
  return Promise.all(promises);
1908
2041
  case 28:
1909
- _context3.t6 = _context3.sent;
1910
- return _context3.abrupt("return", _context3.t5.resolveOverwritesHierarchy.call(_context3.t5, _context3.t6));
2042
+ _context4.t6 = _context4.sent;
2043
+ return _context4.abrupt("return", _context4.t5.resolveOverwritesHierarchy.call(_context4.t5, _context4.t6));
1911
2044
  case 30:
1912
2045
  case "end":
1913
- return _context3.stop();
2046
+ return _context4.stop();
1914
2047
  }
1915
2048
  }
1916
- }, _callee3, this);
2049
+ }, _callee4, this);
1917
2050
  }));
1918
2051
  function calculatePermissions(_x9, _x10, _x11) {
1919
2052
  return _calculatePermissions.apply(this, arguments);
@@ -1926,29 +2059,75 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1926
2059
  this.overwrites.set([getOvIdByObject(ev), ev]);
1927
2060
  this.emit('change');
1928
2061
  }
2062
+ }, {
2063
+ key: "handleSpaceDeleted",
2064
+ value: function handleSpaceDeleted(ev) {
2065
+ var _this$overwritesPromi;
2066
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.id));
2067
+ (_this$overwritesPromi = this.overwritesPromises).forget.apply(_this$overwritesPromi, PermissionsManager_toConsumableArray(ids));
2068
+ }
2069
+ }, {
2070
+ key: "handleRoomDeleted",
2071
+ value: function handleRoomDeleted(ev) {
2072
+ var _this$overwritesPromi2;
2073
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Room', ev.id));
2074
+ (_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
2075
+ }
2076
+ }, {
2077
+ key: "handleTopicDeleted",
2078
+ value: function handleTopicDeleted(ev) {
2079
+ var _this$overwritesPromi3;
2080
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Topic', ev.id));
2081
+ (_this$overwritesPromi3 = this.overwritesPromises).forget.apply(_this$overwritesPromi3, PermissionsManager_toConsumableArray(ids));
2082
+ }
2083
+ }, {
2084
+ key: "handleRoleDeleted",
2085
+ value: function handleRoleDeleted(ev) {
2086
+ var _this$overwritesPromi4;
2087
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.spaceId, 'Role', ev.id));
2088
+ (_this$overwritesPromi4 = this.overwritesPromises).forget.apply(_this$overwritesPromi4, PermissionsManager_toConsumableArray(ids));
2089
+ }
2090
+
2091
+ /**
2092
+ * @return Matched and deleted ids
2093
+ */
2094
+ }, {
2095
+ key: "deleteOverwritesByIdPrefix",
2096
+ value: function deleteOverwritesByIdPrefix(prefix) {
2097
+ var _this3 = this;
2098
+ var ids = [];
2099
+ this.overwrites.items.forEach(function (overwrites) {
2100
+ var id = getOvIdByObject(overwrites);
2101
+ if (id.startsWith(prefix)) {
2102
+ ids.push(id);
2103
+ _this3.overwrites["delete"](id);
2104
+ }
2105
+ });
2106
+ return ids;
2107
+ }
1929
2108
  }, {
1930
2109
  key: "collectRoleOverwrites",
1931
2110
  value: function () {
1932
- var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, layer, layerId, userRoles) {
1933
- var _this2 = this;
2111
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, layer, layerId, userRoles) {
2112
+ var _this4 = this;
1934
2113
  var roleOverwrites;
1935
- return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
2114
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1936
2115
  while (1) {
1937
- switch (_context4.prev = _context4.next) {
2116
+ switch (_context5.prev = _context5.next) {
1938
2117
  case 0:
1939
- _context4.next = 2;
2118
+ _context5.next = 2;
1940
2119
  return Promise.all(userRoles.map(function (roleId) {
1941
- return _this2.getOverwrites(layer, layerId, 'Role', roleId);
2120
+ return _this4.getOverwrites(layer, layerId, 'Role', roleId);
1942
2121
  }));
1943
2122
  case 2:
1944
- roleOverwrites = _context4.sent;
1945
- return _context4.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
2123
+ roleOverwrites = _context5.sent;
2124
+ return _context5.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
1946
2125
  case 4:
1947
2126
  case "end":
1948
- return _context4.stop();
2127
+ return _context5.stop();
1949
2128
  }
1950
2129
  }
1951
- }, _callee4, this);
2130
+ }, _callee5, this);
1952
2131
  }));
1953
2132
  function collectRoleOverwrites(_x12, _x13, _x14, _x15) {
1954
2133
  return _collectRoleOverwrites.apply(this, arguments);
@@ -1958,17 +2137,17 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1958
2137
  }, {
1959
2138
  key: "resolveOverwritesFromRolesByOrder",
1960
2139
  value: function () {
1961
- var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, overwrites) {
2140
+ var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(spaceId, overwrites) {
1962
2141
  var allows, denies, roles, sortedOverwrites, permissionsLength;
1963
- return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2142
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1964
2143
  while (1) {
1965
- switch (_context5.prev = _context5.next) {
2144
+ switch (_context6.prev = _context6.next) {
1966
2145
  case 0:
1967
2146
  allows = 0, denies = 0;
1968
- _context5.next = 3;
2147
+ _context6.next = 3;
1969
2148
  return this.tracker.spaces.getRoles(spaceId);
1970
2149
  case 3:
1971
- roles = _context5.sent;
2150
+ roles = _context6.sent;
1972
2151
  sortedOverwrites = overwrites.sort(function (a, b) {
1973
2152
  return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
1974
2153
  }); // Max length of bit word
@@ -1991,16 +2170,16 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1991
2170
  }
1992
2171
  }
1993
2172
  });
1994
- return _context5.abrupt("return", {
2173
+ return _context6.abrupt("return", {
1995
2174
  allow: allows,
1996
2175
  deny: denies
1997
2176
  });
1998
2177
  case 8:
1999
2178
  case "end":
2000
- return _context5.stop();
2179
+ return _context6.stop();
2001
2180
  }
2002
2181
  }
2003
- }, _callee5, this);
2182
+ }, _callee6, this);
2004
2183
  }));
2005
2184
  function resolveOverwritesFromRolesByOrder(_x16, _x17) {
2006
2185
  return _resolveOverwritesFromRolesByOrder.apply(this, arguments);