polfan-server-js-client 0.1.36 → 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];
@@ -1318,6 +1373,8 @@ var SpacesManager = /*#__PURE__*/function () {
1318
1373
  SpacesManager_defineProperty(this, "rooms", new IndexedCollection());
1319
1374
  SpacesManager_defineProperty(this, "members", new IndexedCollection());
1320
1375
  SpacesManager_defineProperty(this, "deferredSession", new DeferredTask());
1376
+ SpacesManager_defineProperty(this, "roomsPromises", new PromiseRegistry());
1377
+ SpacesManager_defineProperty(this, "membersPromises", new PromiseRegistry());
1321
1378
  this.tracker.client.on('NewRoom', function (ev) {
1322
1379
  return _this.handleNewRoom(ev);
1323
1380
  });
@@ -1425,37 +1482,50 @@ var SpacesManager = /*#__PURE__*/function () {
1425
1482
  }, {
1426
1483
  key: "getRooms",
1427
1484
  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) {
1485
+ var _getRooms = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee4(spaceId) {
1486
+ var _this2 = this;
1487
+ return SpacesManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1431
1488
  while (1) {
1432
- switch (_context3.prev = _context3.next) {
1489
+ switch (_context4.prev = _context4.next) {
1433
1490
  case 0:
1434
- if (this.rooms.has(spaceId)) {
1435
- _context3.next = 7;
1436
- 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);
1437
1518
  }
1438
- _context3.next = 3;
1439
- return this.tracker.client.send('GetSpaceRooms', {
1440
- id: spaceId
1441
- });
1519
+ _context4.next = 3;
1520
+ return this.roomsPromises.get(spaceId);
1442
1521
  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:
1522
+ return _context4.abrupt("return", this.rooms.get(spaceId));
1523
+ case 4:
1454
1524
  case "end":
1455
- return _context3.stop();
1525
+ return _context4.stop();
1456
1526
  }
1457
1527
  }
1458
- }, _callee3, this);
1528
+ }, _callee4, this);
1459
1529
  }));
1460
1530
  function getRooms(_x2) {
1461
1531
  return _getRooms.apply(this, arguments);
@@ -1468,37 +1538,50 @@ var SpacesManager = /*#__PURE__*/function () {
1468
1538
  }, {
1469
1539
  key: "getMembers",
1470
1540
  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) {
1541
+ var _getMembers = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee6(spaceId) {
1542
+ var _this3 = this;
1543
+ return SpacesManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1474
1544
  while (1) {
1475
- switch (_context4.prev = _context4.next) {
1545
+ switch (_context6.prev = _context6.next) {
1476
1546
  case 0:
1477
- if (this.members.has(spaceId)) {
1478
- _context4.next = 7;
1479
- 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);
1480
1574
  }
1481
- _context4.next = 3;
1482
- return this.tracker.client.send('GetSpaceMembers', {
1483
- id: spaceId
1484
- });
1575
+ _context6.next = 3;
1576
+ return this.membersPromises.get(spaceId);
1485
1577
  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:
1578
+ return _context6.abrupt("return", this.members.get(spaceId));
1579
+ case 4:
1497
1580
  case "end":
1498
- return _context4.stop();
1581
+ return _context6.stop();
1499
1582
  }
1500
1583
  }
1501
- }, _callee4, this);
1584
+ }, _callee6, this);
1502
1585
  }));
1503
1586
  function getMembers(_x3) {
1504
1587
  return _getMembers.apply(this, arguments);
@@ -1511,35 +1594,35 @@ var SpacesManager = /*#__PURE__*/function () {
1511
1594
  }, {
1512
1595
  key: "getMe",
1513
1596
  value: function () {
1514
- var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee5(spaceId) {
1597
+ var _getMe = SpacesManager_asyncToGenerator( /*#__PURE__*/SpacesManager_regeneratorRuntime().mark(function _callee7(spaceId) {
1515
1598
  var userId, members;
1516
- return SpacesManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1599
+ return SpacesManager_regeneratorRuntime().wrap(function _callee7$(_context7) {
1517
1600
  while (1) {
1518
- switch (_context5.prev = _context5.next) {
1601
+ switch (_context7.prev = _context7.next) {
1519
1602
  case 0:
1520
- _context5.next = 2;
1603
+ _context7.next = 2;
1521
1604
  return this.tracker.getMe();
1522
1605
  case 2:
1523
- userId = _context5.sent.id;
1524
- _context5.next = 5;
1606
+ userId = _context7.sent.id;
1607
+ _context7.next = 5;
1525
1608
  return this.getMembers(spaceId);
1526
1609
  case 5:
1527
- members = _context5.sent;
1610
+ members = _context7.sent;
1528
1611
  if (members) {
1529
- _context5.next = 8;
1612
+ _context7.next = 8;
1530
1613
  break;
1531
1614
  }
1532
- return _context5.abrupt("return", undefined);
1615
+ return _context7.abrupt("return", undefined);
1533
1616
  case 8:
1534
- return _context5.abrupt("return", members.items.find(function (member) {
1617
+ return _context7.abrupt("return", members.items.find(function (member) {
1535
1618
  return member.user.id === userId;
1536
1619
  }));
1537
1620
  case 9:
1538
1621
  case "end":
1539
- return _context5.stop();
1622
+ return _context7.stop();
1540
1623
  }
1541
1624
  }
1542
- }, _callee5, this);
1625
+ }, _callee7, this);
1543
1626
  }));
1544
1627
  function getMe(_x4) {
1545
1628
  return _getMe.apply(this, arguments);
@@ -1580,7 +1663,9 @@ var SpacesManager = /*#__PURE__*/function () {
1580
1663
  this.tracker.rooms._deleteBySpaceId(ev.id);
1581
1664
  this.roles["delete"](ev.id);
1582
1665
  this.members["delete"](ev.id);
1666
+ this.membersPromises.forget(ev.id);
1583
1667
  this.rooms["delete"](ev.id);
1668
+ this.roomsPromises.forget(ev.id);
1584
1669
  this.list["delete"](ev.id);
1585
1670
  }
1586
1671
  }, {
@@ -1733,8 +1818,9 @@ function PermissionsManager_toPrimitive(input, hint) { if (PermissionsManager_ty
1733
1818
 
1734
1819
 
1735
1820
 
1821
+
1736
1822
  var getOvId = function getOvId(layer, layerId, target, targetId) {
1737
- 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 : '');
1738
1824
  };
1739
1825
  var getOvIdByObject = function getOvIdByObject(overwrites) {
1740
1826
  return getOvId(overwrites.layer, overwrites.layerId, overwrites.target, overwrites.targetId);
@@ -1748,46 +1834,85 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1748
1834
  _this = _super.call(this);
1749
1835
  _this.tracker = tracker;
1750
1836
  PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwrites", new IndexedCollection());
1837
+ PermissionsManager_defineProperty(PermissionsManager_assertThisInitialized(_this), "overwritesPromises", new PromiseRegistry());
1751
1838
  _this.tracker.client.on('PermissionOverwrites', function (ev) {
1752
1839
  return _this.handlePermissionOverwrites(ev);
1753
1840
  });
1754
1841
  _this.tracker.client.on('PermissionOverwritesChanged', function (ev) {
1755
1842
  return _this.handlePermissionOverwrites(ev);
1756
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
+ });
1757
1862
  return _this;
1758
1863
  }
1759
1864
  PermissionsManager_createClass(PermissionsManager, [{
1760
1865
  key: "getOverwrites",
1761
1866
  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) {
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) {
1765
1871
  while (1) {
1766
- switch (_context.prev = _context.next) {
1872
+ switch (_context2.prev = _context2.next) {
1767
1873
  case 0:
1768
1874
  id = getOvId(layer, layerId, target, targetId);
1769
- if (!this.overwrites.has(id)) {
1770
- _context.next = 3;
1771
- 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);
1772
1905
  }
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
- });
1906
+ _context2.next = 4;
1907
+ return this.overwritesPromises.get(id);
1908
+ case 4:
1909
+ return _context2.abrupt("return", this.overwrites.get(id));
1782
1910
  case 5:
1783
- result = _context.sent;
1784
- return _context.abrupt("return", result.error ? null : result.data);
1785
- case 7:
1786
1911
  case "end":
1787
- return _context.stop();
1912
+ return _context2.stop();
1788
1913
  }
1789
1914
  }
1790
- }, _callee, this);
1915
+ }, _callee2, this);
1791
1916
  }));
1792
1917
  function getOverwrites(_x, _x2, _x3, _x4) {
1793
1918
  return _getOverwrites.apply(this, arguments);
@@ -1802,32 +1927,32 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1802
1927
  }, {
1803
1928
  key: "check",
1804
1929
  value: function () {
1805
- 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) {
1806
1931
  var ownedPermissions, missing;
1807
- return PermissionsManager_regeneratorRuntime().wrap(function _callee2$(_context2) {
1932
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1808
1933
  while (1) {
1809
- switch (_context2.prev = _context2.next) {
1934
+ switch (_context3.prev = _context3.next) {
1810
1935
  case 0:
1811
- _context2.next = 2;
1936
+ _context3.next = 2;
1812
1937
  return this.calculatePermissions(spaceId, roomId, topicId);
1813
1938
  case 2:
1814
- ownedPermissions = _context2.sent;
1939
+ ownedPermissions = _context3.sent;
1815
1940
  missing = [];
1816
1941
  permissionNames.forEach(function (name) {
1817
1942
  if (~ownedPermissions & Permission[name]) {
1818
1943
  missing.push(name);
1819
1944
  }
1820
1945
  });
1821
- return _context2.abrupt("return", {
1946
+ return _context3.abrupt("return", {
1822
1947
  ok: missing.length === 0,
1823
1948
  missing: missing
1824
1949
  });
1825
1950
  case 6:
1826
1951
  case "end":
1827
- return _context2.stop();
1952
+ return _context3.stop();
1828
1953
  }
1829
1954
  }
1830
- }, _callee2, this);
1955
+ }, _callee3, this);
1831
1956
  }));
1832
1957
  function check(_x5, _x6, _x7, _x8) {
1833
1958
  return _check.apply(this, arguments);
@@ -1837,22 +1962,22 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1837
1962
  }, {
1838
1963
  key: "calculatePermissions",
1839
1964
  value: function () {
1840
- 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) {
1841
1966
  var userId, userRoles, promises, roomMember;
1842
- return PermissionsManager_regeneratorRuntime().wrap(function _callee3$(_context3) {
1967
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
1843
1968
  while (1) {
1844
- switch (_context3.prev = _context3.next) {
1969
+ switch (_context4.prev = _context4.next) {
1845
1970
  case 0:
1846
1971
  if (!(topicId && !roomId || roomId && !spaceId)) {
1847
- _context3.next = 2;
1972
+ _context4.next = 2;
1848
1973
  break;
1849
1974
  }
1850
1975
  throw new Error('Corrupted arguments hierarchy');
1851
1976
  case 2:
1852
- _context3.next = 4;
1977
+ _context4.next = 4;
1853
1978
  return this.tracker.getMe();
1854
1979
  case 4:
1855
- userId = _context3.sent.id;
1980
+ userId = _context4.sent.id;
1856
1981
  userRoles = [];
1857
1982
  promises = [
1858
1983
  // Global user overwrites
@@ -1860,31 +1985,31 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1860
1985
  return v.overwrites;
1861
1986
  })];
1862
1987
  if (!spaceId) {
1863
- _context3.next = 18;
1988
+ _context4.next = 18;
1864
1989
  break;
1865
1990
  }
1866
- _context3.t0 = userRoles.push;
1867
- _context3.t1 = userRoles;
1868
- _context3.t2 = PermissionsManager_toConsumableArray;
1869
- _context3.next = 13;
1991
+ _context4.t0 = userRoles.push;
1992
+ _context4.t1 = userRoles;
1993
+ _context4.t2 = PermissionsManager_toConsumableArray;
1994
+ _context4.next = 13;
1870
1995
  return this.tracker.spaces.getMe(spaceId);
1871
1996
  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);
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);
1875
2000
  promises.push(this.collectRoleOverwrites(spaceId, 'Space', spaceId, userRoles));
1876
2001
  promises.push(this.getOverwrites('Space', spaceId, 'User', userId).then(function (v) {
1877
2002
  return v.overwrites;
1878
2003
  }));
1879
2004
  case 18:
1880
2005
  if (!roomId) {
1881
- _context3.next = 24;
2006
+ _context4.next = 24;
1882
2007
  break;
1883
2008
  }
1884
- _context3.next = 21;
2009
+ _context4.next = 21;
1885
2010
  return this.tracker.rooms.getMe(roomId);
1886
2011
  case 21:
1887
- roomMember = _context3.sent;
2012
+ roomMember = _context4.sent;
1888
2013
  if (roomMember.roles !== null) {
1889
2014
  // Room overwrites from roles (only for space rooms)
1890
2015
  userRoles.push.apply(userRoles, PermissionsManager_toConsumableArray(roomMember.roles));
@@ -1902,18 +2027,18 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1902
2027
  return v.overwrites;
1903
2028
  }));
1904
2029
  }
1905
- _context3.t5 = this;
1906
- _context3.next = 28;
2030
+ _context4.t5 = this;
2031
+ _context4.next = 28;
1907
2032
  return Promise.all(promises);
1908
2033
  case 28:
1909
- _context3.t6 = _context3.sent;
1910
- 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));
1911
2036
  case 30:
1912
2037
  case "end":
1913
- return _context3.stop();
2038
+ return _context4.stop();
1914
2039
  }
1915
2040
  }
1916
- }, _callee3, this);
2041
+ }, _callee4, this);
1917
2042
  }));
1918
2043
  function calculatePermissions(_x9, _x10, _x11) {
1919
2044
  return _calculatePermissions.apply(this, arguments);
@@ -1926,29 +2051,75 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1926
2051
  this.overwrites.set([getOvIdByObject(ev), ev]);
1927
2052
  this.emit('change');
1928
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
+ }
1929
2100
  }, {
1930
2101
  key: "collectRoleOverwrites",
1931
2102
  value: function () {
1932
- var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee4(spaceId, layer, layerId, userRoles) {
1933
- var _this2 = this;
2103
+ var _collectRoleOverwrites = PermissionsManager_asyncToGenerator( /*#__PURE__*/PermissionsManager_regeneratorRuntime().mark(function _callee5(spaceId, layer, layerId, userRoles) {
2104
+ var _this4 = this;
1934
2105
  var roleOverwrites;
1935
- return PermissionsManager_regeneratorRuntime().wrap(function _callee4$(_context4) {
2106
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
1936
2107
  while (1) {
1937
- switch (_context4.prev = _context4.next) {
2108
+ switch (_context5.prev = _context5.next) {
1938
2109
  case 0:
1939
- _context4.next = 2;
2110
+ _context5.next = 2;
1940
2111
  return Promise.all(userRoles.map(function (roleId) {
1941
- return _this2.getOverwrites(layer, layerId, 'Role', roleId);
2112
+ return _this4.getOverwrites(layer, layerId, 'Role', roleId);
1942
2113
  }));
1943
2114
  case 2:
1944
- roleOverwrites = _context4.sent;
1945
- return _context4.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
2115
+ roleOverwrites = _context5.sent;
2116
+ return _context5.abrupt("return", this.resolveOverwritesFromRolesByOrder(spaceId, roleOverwrites));
1946
2117
  case 4:
1947
2118
  case "end":
1948
- return _context4.stop();
2119
+ return _context5.stop();
1949
2120
  }
1950
2121
  }
1951
- }, _callee4, this);
2122
+ }, _callee5, this);
1952
2123
  }));
1953
2124
  function collectRoleOverwrites(_x12, _x13, _x14, _x15) {
1954
2125
  return _collectRoleOverwrites.apply(this, arguments);
@@ -1958,17 +2129,17 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1958
2129
  }, {
1959
2130
  key: "resolveOverwritesFromRolesByOrder",
1960
2131
  value: function () {
1961
- 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) {
1962
2133
  var allows, denies, roles, sortedOverwrites, permissionsLength;
1963
- return PermissionsManager_regeneratorRuntime().wrap(function _callee5$(_context5) {
2134
+ return PermissionsManager_regeneratorRuntime().wrap(function _callee6$(_context6) {
1964
2135
  while (1) {
1965
- switch (_context5.prev = _context5.next) {
2136
+ switch (_context6.prev = _context6.next) {
1966
2137
  case 0:
1967
2138
  allows = 0, denies = 0;
1968
- _context5.next = 3;
2139
+ _context6.next = 3;
1969
2140
  return this.tracker.spaces.getRoles(spaceId);
1970
2141
  case 3:
1971
- roles = _context5.sent;
2142
+ roles = _context6.sent;
1972
2143
  sortedOverwrites = overwrites.sort(function (a, b) {
1973
2144
  return roles.get(a.targetId).priority - roles.get(b.targetId).priority;
1974
2145
  }); // Max length of bit word
@@ -1991,16 +2162,16 @@ var PermissionsManager = /*#__PURE__*/function (_EventTarget) {
1991
2162
  }
1992
2163
  }
1993
2164
  });
1994
- return _context5.abrupt("return", {
2165
+ return _context6.abrupt("return", {
1995
2166
  allow: allows,
1996
2167
  deny: denies
1997
2168
  });
1998
2169
  case 8:
1999
2170
  case "end":
2000
- return _context5.stop();
2171
+ return _context6.stop();
2001
2172
  }
2002
2173
  }
2003
- }, _callee5, this);
2174
+ }, _callee6, this);
2004
2175
  }));
2005
2176
  function resolveOverwritesFromRolesByOrder(_x16, _x17) {
2006
2177
  return _resolveOverwritesFromRolesByOrder.apply(this, arguments);