polfan-server-js-client 0.1.35 → 0.1.37

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);
@@ -942,37 +983,50 @@ var RoomsManager = /*#__PURE__*/function () {
942
983
  RoomsManager_createClass(RoomsManager, [{
943
984
  key: "getMembers",
944
985
  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) {
986
+ var _getMembers = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
987
+ var _this2 = this;
988
+ return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
948
989
  while (1) {
949
- switch (_context.prev = _context.next) {
990
+ switch (_context2.prev = _context2.next) {
950
991
  case 0:
951
- if (this.members.has(roomId)) {
952
- _context.next = 7;
953
- break;
992
+ if (this.membersPromises.notExist(roomId)) {
993
+ this.membersPromises.registerByFunction( /*#__PURE__*/RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee() {
994
+ var result;
995
+ return RoomsManager_regeneratorRuntime().wrap(function _callee$(_context) {
996
+ while (1) {
997
+ switch (_context.prev = _context.next) {
998
+ case 0:
999
+ _context.next = 2;
1000
+ return _this2.tracker.client.send('GetRoomMembers', {
1001
+ id: roomId
1002
+ });
1003
+ case 2:
1004
+ result = _context.sent;
1005
+ if (!result.error) {
1006
+ _context.next = 5;
1007
+ break;
1008
+ }
1009
+ throw result.error;
1010
+ case 5:
1011
+ _this2.handleRoomMembers(result.data);
1012
+ case 6:
1013
+ case "end":
1014
+ return _context.stop();
1015
+ }
1016
+ }
1017
+ }, _callee);
1018
+ })), roomId);
954
1019
  }
955
- _context.next = 3;
956
- return this.tracker.client.send('GetRoomMembers', {
957
- id: roomId
958
- });
1020
+ _context2.next = 3;
1021
+ return this.membersPromises.get(roomId);
959
1022
  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:
1023
+ return _context2.abrupt("return", this.members.get(roomId));
1024
+ case 4:
971
1025
  case "end":
972
- return _context.stop();
1026
+ return _context2.stop();
973
1027
  }
974
1028
  }
975
- }, _callee, this);
1029
+ }, _callee2, this);
976
1030
  }));
977
1031
  function getMembers(_x) {
978
1032
  return _getMembers.apply(this, arguments);
@@ -985,36 +1039,36 @@ var RoomsManager = /*#__PURE__*/function () {
985
1039
  }, {
986
1040
  key: "getMe",
987
1041
  value: function () {
988
- var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee2(roomId) {
1042
+ var _getMe = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3(roomId) {
989
1043
  var userId, members;
990
- return RoomsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1044
+ return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
991
1045
  while (1) {
992
- switch (_context2.prev = _context2.next) {
1046
+ switch (_context3.prev = _context3.next) {
993
1047
  case 0:
994
- _context2.next = 2;
1048
+ _context3.next = 2;
995
1049
  return this.tracker.getMe();
996
1050
  case 2:
997
- userId = _context2.sent.id;
998
- _context2.next = 5;
1051
+ userId = _context3.sent.id;
1052
+ _context3.next = 5;
999
1053
  return this.getMembers(roomId);
1000
1054
  case 5:
1001
- members = _context2.sent;
1055
+ members = _context3.sent;
1002
1056
  if (members) {
1003
- _context2.next = 8;
1057
+ _context3.next = 8;
1004
1058
  break;
1005
1059
  }
1006
- return _context2.abrupt("return", undefined);
1060
+ return _context3.abrupt("return", undefined);
1007
1061
  case 8:
1008
- return _context2.abrupt("return", members.items.find(function (member) {
1062
+ return _context3.abrupt("return", members.items.find(function (member) {
1009
1063
  var _member$user$id, _member$user;
1010
1064
  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
1065
  }));
1012
1066
  case 9:
1013
1067
  case "end":
1014
- return _context2.stop();
1068
+ return _context3.stop();
1015
1069
  }
1016
1070
  }
1017
- }, _callee2, this);
1071
+ }, _callee3, this);
1018
1072
  }));
1019
1073
  function getMe(_x2) {
1020
1074
  return _getMe.apply(this, arguments);
@@ -1027,21 +1081,21 @@ var RoomsManager = /*#__PURE__*/function () {
1027
1081
  }, {
1028
1082
  key: "get",
1029
1083
  value: function () {
1030
- var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee3() {
1031
- return RoomsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1084
+ var _get = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4() {
1085
+ return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1032
1086
  while (1) {
1033
- switch (_context3.prev = _context3.next) {
1087
+ switch (_context4.prev = _context4.next) {
1034
1088
  case 0:
1035
- _context3.next = 2;
1089
+ _context4.next = 2;
1036
1090
  return this.deferredSession.promise;
1037
1091
  case 2:
1038
- return _context3.abrupt("return", this.list);
1092
+ return _context4.abrupt("return", this.list);
1039
1093
  case 3:
1040
1094
  case "end":
1041
- return _context3.stop();
1095
+ return _context4.stop();
1042
1096
  }
1043
1097
  }
1044
- }, _callee3, this);
1098
+ }, _callee4, this);
1045
1099
  }));
1046
1100
  function get() {
1047
1101
  return _get.apply(this, arguments);
@@ -1054,21 +1108,21 @@ var RoomsManager = /*#__PURE__*/function () {
1054
1108
  }, {
1055
1109
  key: "getTopics",
1056
1110
  value: function () {
1057
- var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee4(roomId) {
1058
- return RoomsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1111
+ var _getTopics = RoomsManager_asyncToGenerator( /*#__PURE__*/RoomsManager_regeneratorRuntime().mark(function _callee5(roomId) {
1112
+ return RoomsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1059
1113
  while (1) {
1060
- switch (_context4.prev = _context4.next) {
1114
+ switch (_context5.prev = _context5.next) {
1061
1115
  case 0:
1062
- _context4.next = 2;
1116
+ _context5.next = 2;
1063
1117
  return this.deferredSession.promise;
1064
1118
  case 2:
1065
- return _context4.abrupt("return", this.topics.get(roomId));
1119
+ return _context5.abrupt("return", this.topics.get(roomId));
1066
1120
  case 3:
1067
1121
  case "end":
1068
- return _context4.stop();
1122
+ return _context5.stop();
1069
1123
  }
1070
1124
  }
1071
- }, _callee4, this);
1125
+ }, _callee5, this);
1072
1126
  }));
1073
1127
  function getTopics(_x3) {
1074
1128
  return _getTopics.apply(this, arguments);
@@ -1082,12 +1136,13 @@ var RoomsManager = /*#__PURE__*/function () {
1082
1136
  }, {
1083
1137
  key: "_delete",
1084
1138
  value: function _delete() {
1085
- var _this$list, _this$members, _this$topics;
1139
+ var _this$list, _this$members, _this$membersPromises, _this$topics;
1086
1140
  for (var _len = arguments.length, roomIds = new Array(_len), _key = 0; _key < _len; _key++) {
1087
1141
  roomIds[_key] = arguments[_key];
1088
1142
  }
1089
1143
  (_this$list = this.list)["delete"].apply(_this$list, roomIds);
1090
1144
  (_this$members = this.members)["delete"].apply(_this$members, roomIds);
1145
+ (_this$membersPromises = this.membersPromises).forget.apply(_this$membersPromises, roomIds);
1091
1146
  for (var _i = 0, _roomIds = roomIds; _i < _roomIds.length; _i++) {
1092
1147
  var _this$topics$get$map, _this$topics$get, _this$messages;
1093
1148
  var roomId = _roomIds[_i];
@@ -1120,8 +1175,9 @@ var RoomsManager = /*#__PURE__*/function () {
1120
1175
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
1121
1176
  var room = _step.value;
1122
1177
  var roomMembers = this.members.get(room.id);
1123
- if (!roomMembers) {
1178
+ if (!roomMembers || !roomMembers.has(ev.userId)) {
1124
1179
  // Skip update if member list for this room is not loaded
1180
+ // or user is not in room
1125
1181
  continue;
1126
1182
  }
1127
1183
  var roomMember = roomMembers.get(ev.userId);
@@ -1317,6 +1373,8 @@ var SpacesManager = /*#__PURE__*/function () {
1317
1373
  SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1318
1374
  SpacesManager_defineProperty(this, "members", new IndexedCollection());
1319
1375
  SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1376
+ SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
1377
+ SpacesManager_defineProperty(this, "membersPromises", new PromiseRegistry());
1320
1378
  this.tracker.client.on('NewRoom', function (ev) {
1321
1379
  return _this.handleNewRoom(ev);
1322
1380
  });
@@ -1424,37 +1482,50 @@ var SpacesManager = /*#__PURE__*/function () {
1424
1482
  }, {
1425
1483
  key: "getRooms",
1426
1484
  value: function () {
1427
- var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3(spaceId) {
1428
- var result;
1429
- return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1485
+ var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1486
+ var _this2 = this;
1487
+ return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1430
1488
  while (1) {
1431
- switch (_context3.prev = _context3.next) {
1489
+ switch (_context4.prev = _context4.next) {
1432
1490
  case 0:
1433
- if (this.rooms.has(spaceId)) {
1434
- _context3.next = 7;
1435
- break;
1491
+ if (this.roomsPromises.notExist(spaceId)) {
1492
+ this.roomsPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee3() {
1493
+ var result;
1494
+ return SpacesManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1495
+ while (1) {
1496
+ switch (_context3.prev = _context3.next) {
1497
+ case 0:
1498
+ _context3.next = 2;
1499
+ return _this2.tracker.client.send('GetSpaceRooms', {
1500
+ id: spaceId
1501
+ });
1502
+ case 2:
1503
+ result = _context3.sent;
1504
+ if (!result.error) {
1505
+ _context3.next = 5;
1506
+ break;
1507
+ }
1508
+ throw result.error;
1509
+ case 5:
1510
+ _this2.handleSpaceRooms(result.data);
1511
+ case 6:
1512
+ case "end":
1513
+ return _context3.stop();
1514
+ }
1515
+ }
1516
+ }, _callee3);
1517
+ })), spaceId);
1436
1518
  }
1437
- _context3.next = 3;
1438
- return this.tracker.client.send('GetSpaceRooms', {
1439
- id: spaceId
1440
- });
1519
+ _context4.next = 3;
1520
+ return this.roomsPromises.get(spaceId);
1441
1521
  case 3:
1442
- result = _context3.sent;
1443
- if (!result.error) {
1444
- _context3.next = 6;
1445
- break;
1446
- }
1447
- throw result.error;
1448
- case 6:
1449
- this.handleSpaceRooms(result.data);
1450
- case 7:
1451
- return _context3.abrupt("return", this.rooms.get(spaceId));
1452
- case 8:
1522
+ return _context4.abrupt("return", this.rooms.get(spaceId));
1523
+ case 4:
1453
1524
  case "end":
1454
- return _context3.stop();
1525
+ return _context4.stop();
1455
1526
  }
1456
1527
  }
1457
- }, _callee3, this);
1528
+ }, _callee4, this);
1458
1529
  }));
1459
1530
  function getRooms(_x2) {
1460
1531
  return _getRooms.apply(this, arguments);
@@ -1467,37 +1538,50 @@ var SpacesManager = /*#__PURE__*/function () {
1467
1538
  }, {
1468
1539
  key: "getMembers",
1469
1540
  value: function () {
1470
- var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1471
- var result;
1472
- return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1541
+ var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee6(spaceId) {
1542
+ var _this3 = this;
1543
+ return SpacesManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1473
1544
  while (1) {
1474
- switch (_context4.prev = _context4.next) {
1545
+ switch (_context6.prev = _context6.next) {
1475
1546
  case 0:
1476
- if (this.members.has(spaceId)) {
1477
- _context4.next = 7;
1478
- break;
1547
+ if (this.membersPromises.notExist(spaceId)) {
1548
+ this.membersPromises.registerByFunction( /*#__PURE__*/SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5() {
1549
+ var result;
1550
+ return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1551
+ while (1) {
1552
+ switch (_context5.prev = _context5.next) {
1553
+ case 0:
1554
+ _context5.next = 2;
1555
+ return _this3.tracker.client.send('GetSpaceMembers', {
1556
+ id: spaceId
1557
+ });
1558
+ case 2:
1559
+ result = _context5.sent;
1560
+ if (!result.error) {
1561
+ _context5.next = 5;
1562
+ break;
1563
+ }
1564
+ throw result.error;
1565
+ case 5:
1566
+ _this3.handleSpaceMembers(result.data);
1567
+ case 6:
1568
+ case "end":
1569
+ return _context5.stop();
1570
+ }
1571
+ }
1572
+ }, _callee5);
1573
+ })), spaceId);
1479
1574
  }
1480
- _context4.next = 3;
1481
- return this.tracker.client.send('GetSpaceMembers', {
1482
- id: spaceId
1483
- });
1575
+ _context6.next = 3;
1576
+ return this.membersPromises.get(spaceId);
1484
1577
  case 3:
1485
- result = _context4.sent;
1486
- if (!result.error) {
1487
- _context4.next = 6;
1488
- break;
1489
- }
1490
- throw result.error;
1491
- case 6:
1492
- this.handleSpaceMembers(result.data);
1493
- case 7:
1494
- return _context4.abrupt("return", this.members.get(spaceId));
1495
- case 8:
1578
+ return _context6.abrupt("return", this.members.get(spaceId));
1579
+ case 4:
1496
1580
  case "end":
1497
- return _context4.stop();
1581
+ return _context6.stop();
1498
1582
  }
1499
1583
  }
1500
- }, _callee4, this);
1584
+ }, _callee6, this);
1501
1585
  }));
1502
1586
  function getMembers(_x3) {
1503
1587
  return _getMembers.apply(this, arguments);
@@ -1510,35 +1594,35 @@ var SpacesManager = /*#__PURE__*/function () {
1510
1594
  }, {
1511
1595
  key: "getMe",
1512
1596
  value: function () {
1513
- var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5(spaceId) {
1597
+ var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee7(spaceId) {
1514
1598
  var userId, members;
1515
- return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1599
+ return SpacesManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
1516
1600
  while (1) {
1517
- switch (_context5.prev = _context5.next) {
1601
+ switch (_context7.prev = _context7.next) {
1518
1602
  case 0:
1519
- _context5.next = 2;
1603
+ _context7.next = 2;
1520
1604
  return this.tracker.getMe();
1521
1605
  case 2:
1522
- userId = _context5.sent.id;
1523
- _context5.next = 5;
1606
+ userId = _context7.sent.id;
1607
+ _context7.next = 5;
1524
1608
  return this.getMembers(spaceId);
1525
1609
  case 5:
1526
- members = _context5.sent;
1610
+ members = _context7.sent;
1527
1611
  if (members) {
1528
- _context5.next = 8;
1612
+ _context7.next = 8;
1529
1613
  break;
1530
1614
  }
1531
- return _context5.abrupt("return", undefined);
1615
+ return _context7.abrupt("return", undefined);
1532
1616
  case 8:
1533
- return _context5.abrupt("return", members.items.find(function (member) {
1617
+ return _context7.abrupt("return", members.items.find(function (member) {
1534
1618
  return member.user.id === userId;
1535
1619
  }));
1536
1620
  case 9:
1537
1621
  case "end":
1538
- return _context5.stop();
1622
+ return _context7.stop();
1539
1623
  }
1540
1624
  }
1541
- }, _callee5, this);
1625
+ }, _callee7, this);
1542
1626
  }));
1543
1627
  function getMe(_x4) {
1544
1628
  return _getMe.apply(this, arguments);
@@ -1579,7 +1663,9 @@ var SpacesManager = /*#__PURE__*/function () {
1579
1663
  this.tracker.rooms._deleteBySpaceId(ev.id);
1580
1664
  this.roles["delete"](ev.id);
1581
1665
  this.members["delete"](ev.id);
1666
+ this.membersPromises.forget(ev.id);
1582
1667
  this.rooms["delete"](ev.id);
1668
+ this.roomsPromises.forget(ev.id);
1583
1669
  this.list["delete"](ev.id);
1584
1670
  }
1585
1671
  }, {
@@ -1732,8 +1818,9 @@ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_ty
1732
1818
 
1733
1819
 
1734
1820
 
1821
+
1735
1822
  var getOvId = function getOvId(layer, layerId, target, targetId) {
1736
- return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + target + targetId;
1823
+ return layer + (layerId !== null && layerId !== void 0 ? layerId : '') + (target !== null && target !== void 0 ? target : '') + (targetId !== null && targetId !== void 0 ? targetId : '');
1737
1824
  };
1738
1825
  var getOvIdByObject = function getOvIdByObject(overwrites) {
1739
1826
  return getOvId(overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId);
@@ -1747,46 +1834,85 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1747
1834
  _this = _super.call(this);
1748
1835
  _this.tracker = tracker;
1749
1836
  PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
1837
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwritesPromises", new PromiseRegistry());
1750
1838
  _this.tracker.client.on('PermissionOverwrites', function (ev) {
1751
1839
  return _this.handlePermissionOverwrites(ev);
1752
1840
  });
1753
1841
  _this.tracker.client.on('PermissionOverwritesChanged', function (ev) {
1754
1842
  return _this.handlePermissionOverwrites(ev);
1755
1843
  });
1844
+ _this.tracker.client.on('SpaceDeleted', function (ev) {
1845
+ return _this.handleSpaceDeleted(ev);
1846
+ });
1847
+ _this.tracker.client.on('SpaceLeft', function (ev) {
1848
+ return _this.handleSpaceDeleted(ev);
1849
+ });
1850
+ _this.tracker.client.on('RoomDeleted', function (ev) {
1851
+ return _this.handleRoomDeleted(ev);
1852
+ });
1853
+ _this.tracker.client.on('RoomLeft', function (ev) {
1854
+ return _this.handleRoomDeleted(ev);
1855
+ });
1856
+ _this.tracker.client.on('TopicDeleted', function (ev) {
1857
+ return _this.handleTopicDeleted(ev);
1858
+ });
1859
+ _this.tracker.client.on('RoleDeleted', function (ev) {
1860
+ return _this.handleRoleDeleted(ev);
1861
+ });
1756
1862
  return _this;
1757
1863
  }
1758
1864
  PermissionsManager_createClass(PermissionsManager, [{
1759
1865
  key: "getOverwrites",
1760
1866
  value: function () {
1761
- var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee(layer, layerId, target, targetId) {
1762
- var id, result;
1763
- return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1867
+ var _getOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(layer, layerId, target, targetId) {
1868
+ var _this2 = this;
1869
+ var id;
1870
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1764
1871
  while (1) {
1765
- switch (_context.prev = _context.next) {
1872
+ switch (_context2.prev = _context2.next) {
1766
1873
  case 0:
1767
1874
  id = getOvId(layer, layerId, target, targetId);
1768
- if (!this.overwrites.has(id)) {
1769
- _context.next = 3;
1770
- break;
1875
+ if (this.overwritesPromises.notExist(id)) {
1876
+ this.overwritesPromises.registerByFunction( /*#__PURE__*/PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee() {
1877
+ var result;
1878
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee$(_context) {
1879
+ while (1) {
1880
+ switch (_context.prev = _context.next) {
1881
+ case 0:
1882
+ _context.next = 2;
1883
+ return _this2.tracker.client.send('GetPermissionOverwrites', {
1884
+ layer: layer,
1885
+ layerId: layerId,
1886
+ target: target,
1887
+ targetId: targetId
1888
+ });
1889
+ case 2:
1890
+ result = _context.sent;
1891
+ if (!result.error) {
1892
+ _context.next = 5;
1893
+ break;
1894
+ }
1895
+ throw result.error;
1896
+ case 5:
1897
+ _this2.handlePermissionOverwrites(result.data);
1898
+ case 6:
1899
+ case "end":
1900
+ return _context.stop();
1901
+ }
1902
+ }
1903
+ }, _callee);
1904
+ })), id);
1771
1905
  }
1772
- return _context.abrupt("return", this.overwrites.get(id));
1773
- case 3:
1774
- _context.next = 5;
1775
- return this.tracker.client.send('GetPermissionOverwrites', {
1776
- layer: layer,
1777
- layerId: layerId,
1778
- target: target,
1779
- targetId: targetId
1780
- });
1906
+ _context2.next = 4;
1907
+ return this.overwritesPromises.get(id);
1908
+ case 4:
1909
+ return _context2.abrupt("return", this.overwrites.get(id));
1781
1910
  case 5:
1782
- result = _context.sent;
1783
- return _context.abrupt("return", result.error ? null : result.data);
1784
- case 7:
1785
1911
  case "end":
1786
- return _context.stop();
1912
+ return _context2.stop();
1787
1913
  }
1788
1914
  }
1789
- }, _callee, this);
1915
+ }, _callee2, this);
1790
1916
  }));
1791
1917
  function getOverwrites(_x, _x2, _x3, _x4) {
1792
1918
  return _getOverwrites.apply(this, arguments);
@@ -1801,32 +1927,32 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1801
1927
  }, {
1802
1928
  key: "check",
1803
1929
  value: function () {
1804
- var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee2(permissionNames, spaceId, roomId, topicId) {
1930
+ var _check = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(permissionNames, spaceId, roomId, topicId) {
1805
1931
  var ownedPermissions, missing;
1806
- return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1932
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1807
1933
  while (1) {
1808
- switch (_context2.prev = _context2.next) {
1934
+ switch (_context3.prev = _context3.next) {
1809
1935
  case 0:
1810
- _context2.next = 2;
1936
+ _context3.next = 2;
1811
1937
  return this.calculatePermissions(spaceId, roomId, topicId);
1812
1938
  case 2:
1813
- ownedPermissions = _context2.sent;
1939
+ ownedPermissions = _context3.sent;
1814
1940
  missing = [];
1815
1941
  permissionNames.forEach(function (name) {
1816
1942
  if (~ownedPermissions & Permission[name]) {
1817
1943
  missing.push(name);
1818
1944
  }
1819
1945
  });
1820
- return _context2.abrupt("return", {
1946
+ return _context3.abrupt("return", {
1821
1947
  ok: missing.length === 0,
1822
1948
  missing: missing
1823
1949
  });
1824
1950
  case 6:
1825
1951
  case "end":
1826
- return _context2.stop();
1952
+ return _context3.stop();
1827
1953
  }
1828
1954
  }
1829
- }, _callee2, this);
1955
+ }, _callee3, this);
1830
1956
  }));
1831
1957
  function check(_x5, _x6, _x7, _x8) {
1832
1958
  return _check.apply(this, arguments);
@@ -1836,22 +1962,22 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1836
1962
  }, {
1837
1963
  key: "calculatePermissions",
1838
1964
  value: function () {
1839
- var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee3(spaceId, roomId, topicId) {
1965
+ var _calculatePermissions = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, roomId, topicId) {
1840
1966
  var userId, userRoles, promises, roomMember;
1841
- return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1967
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1842
1968
  while (1) {
1843
- switch (_context3.prev = _context3.next) {
1969
+ switch (_context4.prev = _context4.next) {
1844
1970
  case 0:
1845
1971
  if (!(topicId && !roomId || roomId && !spaceId)) {
1846
- _context3.next = 2;
1972
+ _context4.next = 2;
1847
1973
  break;
1848
1974
  }
1849
1975
  throw new Error('Corrupted arguments hierarchy');
1850
1976
  case 2:
1851
- _context3.next = 4;
1977
+ _context4.next = 4;
1852
1978
  return this.tracker.getMe();
1853
1979
  case 4:
1854
- userId = _context3.sent.id;
1980
+ userId = _context4.sent.id;
1855
1981
  userRoles = [];
1856
1982
  promises = [
1857
1983
  // Global user overwrites
@@ -1859,31 +1985,31 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1859
1985
  return v.overwrites;
1860
1986
  })];
1861
1987
  if (!spaceId) {
1862
- _context3.next = 18;
1988
+ _context4.next = 18;
1863
1989
  break;
1864
1990
  }
1865
- _context3.t0 = userRoles.push;
1866
- _context3.t1 = userRoles;
1867
- _context3.t2 = PermissionsManager_toConsumableArray;
1868
- _context3.next = 13;
1991
+ _context4.t0 = userRoles.push;
1992
+ _context4.t1 = userRoles;
1993
+ _context4.t2 = PermissionsManager_toConsumableArray;
1994
+ _context4.next = 13;
1869
1995
  return this.tracker.spaces.getMe(spaceId);
1870
1996
  case 13:
1871
- _context3.t3 = _context3.sent.roles;
1872
- _context3.t4 = (0, _context3.t2)(_context3.t3);
1873
- _context3.t0.apply.call(_context3.t0, _context3.t1, _context3.t4);
1997
+ _context4.t3 = _context4.sent.roles;
1998
+ _context4.t4 = (0, _context4.t2)(_context4.t3);
1999
+ _context4.t0.apply.call(_context4.t0, _context4.t1, _context4.t4);
1874
2000
  promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));
1875
2001
  promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(function (v) {
1876
2002
  return v.overwrites;
1877
2003
  }));
1878
2004
  case 18:
1879
2005
  if (!roomId) {
1880
- _context3.next = 24;
2006
+ _context4.next = 24;
1881
2007
  break;
1882
2008
  }
1883
- _context3.next = 21;
2009
+ _context4.next = 21;
1884
2010
  return this.tracker.rooms.getMe(roomId);
1885
2011
  case 21:
1886
- roomMember = _context3.sent;
2012
+ roomMember = _context4.sent;
1887
2013
  if (roomMember.roles !== null) {
1888
2014
  // Room overwrites from roles (only for space rooms)
1889
2015
  userRoles.push.apply(userRoles, PermissionsManager_toConsumableArray(roomMember.roles));
@@ -1901,18 +2027,18 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1901
2027
  return v.overwrites;
1902
2028
  }));
1903
2029
  }
1904
- _context3.t5 = this;
1905
- _context3.next = 28;
2030
+ _context4.t5 = this;
2031
+ _context4.next = 28;
1906
2032
  return Promise.all(promises);
1907
2033
  case 28:
1908
- _context3.t6 = _context3.sent;
1909
- return _context3.abrupt("return", _context3.t5.resolveOverwritesHierarchy.call(_context3.t5, _context3.t6));
2034
+ _context4.t6 = _context4.sent;
2035
+ return _context4.abrupt("return", _context4.t5.resolveOverwritesHierarchy.call(_context4.t5, _context4.t6));
1910
2036
  case 30:
1911
2037
  case "end":
1912
- return _context3.stop();
2038
+ return _context4.stop();
1913
2039
  }
1914
2040
  }
1915
- }, _callee3, this);
2041
+ }, _callee4, this);
1916
2042
  }));
1917
2043
  function calculatePermissions(_x9, _x10, _x11) {
1918
2044
  return _calculatePermissions.apply(this, arguments);
@@ -1925,29 +2051,75 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1925
2051
  this.overwrites.set([getOvIdByObject(ev), ev]);
1926
2052
  this.emit('change');
1927
2053
  }
2054
+ }, {
2055
+ key: "handleSpaceDeleted",
2056
+ value: function handleSpaceDeleted(ev) {
2057
+ var _this$overwritesPromi;
2058
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.id));
2059
+ (_this$overwritesPromi = this.overwritesPromises).forget.apply(_this$overwritesPromi, PermissionsManager_toConsumableArray(ids));
2060
+ }
2061
+ }, {
2062
+ key: "handleRoomDeleted",
2063
+ value: function handleRoomDeleted(ev) {
2064
+ var _this$overwritesPromi2;
2065
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Room', ev.id));
2066
+ (_this$overwritesPromi2 = this.overwritesPromises).forget.apply(_this$overwritesPromi2, PermissionsManager_toConsumableArray(ids));
2067
+ }
2068
+ }, {
2069
+ key: "handleTopicDeleted",
2070
+ value: function handleTopicDeleted(ev) {
2071
+ var _this$overwritesPromi3;
2072
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Topic', ev.id));
2073
+ (_this$overwritesPromi3 = this.overwritesPromises).forget.apply(_this$overwritesPromi3, PermissionsManager_toConsumableArray(ids));
2074
+ }
2075
+ }, {
2076
+ key: "handleRoleDeleted",
2077
+ value: function handleRoleDeleted(ev) {
2078
+ var _this$overwritesPromi4;
2079
+ var ids = this.deleteOverwritesByIdPrefix(getOvId('Space', ev.spaceId, 'Role', ev.id));
2080
+ (_this$overwritesPromi4 = this.overwritesPromises).forget.apply(_this$overwritesPromi4, PermissionsManager_toConsumableArray(ids));
2081
+ }
2082
+
2083
+ /**
2084
+ * @return Matched and deleted ids
2085
+ */
2086
+ }, {
2087
+ key: "deleteOverwritesByIdPrefix",
2088
+ value: function deleteOverwritesByIdPrefix(prefix) {
2089
+ var _this3 = this;
2090
+ var ids = [];
2091
+ this.overwrites.items.forEach(function (overwrites) {
2092
+ var id = getOvIdByObject(overwrites);
2093
+ if (id.startsWith(prefix)) {
2094
+ ids.push(id);
2095
+ _this3.overwrites["delete"](id);
2096
+ }
2097
+ });
2098
+ return ids;
2099
+ }
1928
2100
  }, {
1929
2101
  key: "collectRoleOverwrites",
1930
2102
  value: function () {
1931
- var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, layer, layerId, userRoles) {
1932
- var _this2 = this;
2103
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, layer, layerId, userRoles) {
2104
+ var _this4 = this;
1933
2105
  var roleOverwrites;
1934
- return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
2106
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1935
2107
  while (1) {
1936
- switch (_context4.prev = _context4.next) {
2108
+ switch (_context5.prev = _context5.next) {
1937
2109
  case 0:
1938
- _context4.next = 2;
2110
+ _context5.next = 2;
1939
2111
  return Promise.all(userRoles.map(function (roleId) {
1940
- return _this2.getOverwrites(layer, layerId, 'Role', roleId);
2112
+ return _this4.getOverwrites(layer, layerId, 'Role', roleId);
1941
2113
  }));
1942
2114
  case 2:
1943
- roleOverwrites = _context4.sent;
1944
- return _context4.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
2115
+ roleOverwrites = _context5.sent;
2116
+ return _context5.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
1945
2117
  case 4:
1946
2118
  case "end":
1947
- return _context4.stop();
2119
+ return _context5.stop();
1948
2120
  }
1949
2121
  }
1950
- }, _callee4, this);
2122
+ }, _callee5, this);
1951
2123
  }));
1952
2124
  function collectRoleOverwrites(_x12, _x13, _x14, _x15) {
1953
2125
  return _collectRoleOverwrites.apply(this, arguments);
@@ -1957,17 +2129,17 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1957
2129
  }, {
1958
2130
  key: "resolveOverwritesFromRolesByOrder",
1959
2131
  value: function () {
1960
- var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, overwrites) {
2132
+ var _resolveOverwritesFromRolesByOrder = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee6(spaceId, overwrites) {
1961
2133
  var allows, denies, roles, sortedOverwrites, permissionsLength;
1962
- return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2134
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1963
2135
  while (1) {
1964
- switch (_context5.prev = _context5.next) {
2136
+ switch (_context6.prev = _context6.next) {
1965
2137
  case 0:
1966
2138
  allows = 0, denies = 0;
1967
- _context5.next = 3;
2139
+ _context6.next = 3;
1968
2140
  return this.tracker.spaces.getRoles(spaceId);
1969
2141
  case 3:
1970
- roles = _context5.sent;
2142
+ roles = _context6.sent;
1971
2143
  sortedOverwrites = overwrites.sort(function (a, b) {
1972
2144
  return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
1973
2145
  }); // Max length of bit word
@@ -1990,16 +2162,16 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1990
2162
  }
1991
2163
  }
1992
2164
  });
1993
- return _context5.abrupt("return", {
2165
+ return _context6.abrupt("return", {
1994
2166
  allow: allows,
1995
2167
  deny: denies
1996
2168
  });
1997
2169
  case 8:
1998
2170
  case "end":
1999
- return _context5.stop();
2171
+ return _context6.stop();
2000
2172
  }
2001
2173
  }
2002
- }, _callee5, this);
2174
+ }, _callee6, this);
2003
2175
  }));
2004
2176
  function resolveOverwritesFromRolesByOrder(_x16, _x17) {
2005
2177
  return _resolveOverwritesFromRolesByOrder.apply(this, arguments);