polfan-server-js-client 0.3.0 → 0.3.1

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.
Files changed (37) hide show
  1. package/.idea/workspace.xml +27 -17
  2. package/build/index.cjs.js +80 -52
  3. package/build/index.cjs.js.map +1 -1
  4. package/build/index.js +62 -62
  5. package/build/index.umd.js +1 -1
  6. package/build/index.umd.js.map +1 -1
  7. package/build/types/AbstractChatClient.d.ts +6 -2
  8. package/build/types/Permissions.d.ts +4 -0
  9. package/build/types/state-tracker/RoomsManager.d.ts +1 -1
  10. package/build/types/state-tracker/SpacesManager.d.ts +6 -0
  11. package/build/types/types/src/index.d.ts +6 -2
  12. package/build/types/types/src/schemes/Message.d.ts +1 -1
  13. package/build/types/types/src/schemes/RoomSummary.d.ts +1 -0
  14. package/build/types/types/src/schemes/commands/GetInvited.d.ts +3 -0
  15. package/build/types/types/src/schemes/commands/Invite.d.ts +5 -0
  16. package/build/types/types/src/schemes/commands/JoinRoom.d.ts +10 -0
  17. package/build/types/types/src/schemes/commands/Uninvite.d.ts +5 -0
  18. package/build/types/types/src/schemes/events/Invited.d.ts +10 -0
  19. package/build/types/types/src/schemes/events/RoomMembersJoined.d.ts +9 -0
  20. package/build/types/types/src/schemes/events/RoomSummaryUpdated.d.ts +2 -1
  21. package/package.json +1 -1
  22. package/src/AbstractChatClient.ts +10 -2
  23. package/src/Permissions.ts +1 -0
  24. package/src/state-tracker/RoomsManager.ts +4 -4
  25. package/src/state-tracker/SpacesManager.ts +10 -0
  26. package/src/state-tracker/UsersManager.ts +1 -1
  27. package/src/types/src/index.ts +10 -2
  28. package/src/types/src/schemes/Message.ts +1 -1
  29. package/src/types/src/schemes/RoomSummary.ts +2 -1
  30. package/src/types/src/schemes/commands/GetInvited.ts +3 -0
  31. package/src/types/src/schemes/commands/Invite.ts +5 -0
  32. package/src/types/src/schemes/commands/JoinRoom.ts +12 -0
  33. package/src/types/src/schemes/commands/Uninvite.ts +5 -0
  34. package/src/types/src/schemes/events/Invited.ts +13 -0
  35. package/src/types/src/schemes/events/RoomMembersJoined.ts +11 -0
  36. package/src/types/src/schemes/events/RoomSummaryUpdated.ts +3 -2
  37. package/src/types/src/schemes/events/RoomMemberJoined.ts +0 -6
@@ -4,8 +4,12 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="831dae43-0da1-47fd-a5f7-33dd5eec2992" name="Changes" comment="Reconcile tracked state on reconnect">
8
- <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
7
+ <list default="true" id="831dae43-0da1-47fd-a5f7-33dd5eec2992" name="Changes" comment="Introduce UserData support">
8
+ <change beforePath="$PROJECT_DIR$/src/AbstractChatClient.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/AbstractChatClient.ts" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/src/Permissions.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/Permissions.ts" afterDir="false" />
10
+ <change beforePath="$PROJECT_DIR$/src/state-tracker/RoomsManager.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/state-tracker/RoomsManager.ts" afterDir="false" />
11
+ <change beforePath="$PROJECT_DIR$/src/state-tracker/SpacesManager.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/state-tracker/SpacesManager.ts" afterDir="false" />
12
+ <change beforePath="$PROJECT_DIR$/src/types" beforeDir="false" afterPath="$PROJECT_DIR$/src/types" afterDir="false" />
9
13
  </list>
10
14
  <option name="SHOW_DIALOG" value="false" />
11
15
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -24,7 +28,7 @@
24
28
  <component name="Git.Settings">
25
29
  <option name="RECENT_BRANCH_BY_REPOSITORY">
26
30
  <map>
27
- <entry key="$PROJECT_DIR$" value="claude/chat-state-tracker-reconnect-6s4eha" />
31
+ <entry key="$PROJECT_DIR$" value="claude/add-members-invite-rooms-1nphsj" />
28
32
  <entry key="$PROJECT_DIR$/src/types" value="562c7beff95ea1eaf5c236df978f50a614a146af" />
29
33
  </map>
30
34
  </option>
@@ -102,6 +106,7 @@
102
106
  <list>
103
107
  <item itemvalue="npm.build:node" />
104
108
  <item itemvalue="npm.build:node" />
109
+ <item itemvalue="npm.build:node" />
105
110
  </list>
106
111
  </recent_temporary>
107
112
  </component>
@@ -230,15 +235,7 @@
230
235
  <workItem from="1783939298935" duration="21428000" />
231
236
  <workItem from="1784102649250" duration="12484000" />
232
237
  <workItem from="1784524117686" duration="79000" />
233
- <workItem from="1784562428378" duration="20601000" />
234
- </task>
235
- <task id="LOCAL-00062" summary="Update deps and improve library building">
236
- <option name="closed" value="true" />
237
- <created>1763587128702</created>
238
- <option name="number" value="00062" />
239
- <option name="presentableId" value="LOCAL-00062" />
240
- <option name="project" value="LOCAL" />
241
- <updated>1763587128703</updated>
238
+ <workItem from="1784562428378" duration="24306000" />
242
239
  </task>
243
240
  <task id="LOCAL-00063" summary="Improvements and fixes to collection mirroring">
244
241
  <option name="closed" value="true" />
@@ -624,7 +621,15 @@
624
621
  <option name="project" value="LOCAL" />
625
622
  <updated>1785107453415</updated>
626
623
  </task>
627
- <option name="localTasksCounter" value="111" />
624
+ <task id="LOCAL-00111" summary="Introduce UserData support">
625
+ <option name="closed" value="true" />
626
+ <created>1785167989175</created>
627
+ <option name="number" value="00111" />
628
+ <option name="presentableId" value="LOCAL-00111" />
629
+ <option name="project" value="LOCAL" />
630
+ <updated>1785167989175</updated>
631
+ </task>
632
+ <option name="localTasksCounter" value="112" />
628
633
  <servers />
629
634
  </component>
630
635
  <component name="TypeScriptGeneratedFilesManager">
@@ -636,6 +641,11 @@
636
641
  <entry key="Branch">
637
642
  <value>
638
643
  <list>
644
+ <RecentGroup>
645
+ <option name="FILTER_VALUES">
646
+ <option value="claude/add-members-invite-rooms-1nphsj" />
647
+ </option>
648
+ </RecentGroup>
639
649
  <RecentGroup>
640
650
  <option name="FILTER_VALUES">
641
651
  <option value="master" />
@@ -666,7 +676,7 @@
666
676
  <entry key="branch">
667
677
  <value>
668
678
  <list>
669
- <option value="master" />
679
+ <option value="claude/add-members-invite-rooms-1nphsj" />
670
680
  </list>
671
681
  </value>
672
682
  </entry>
@@ -679,8 +689,6 @@
679
689
  </option>
680
690
  </component>
681
691
  <component name="VcsManagerConfiguration">
682
- <MESSAGE value="Improve EventTarget typings" />
683
- <MESSAGE value="Delete redacted messages, improve collections, add tests" />
684
692
  <MESSAGE value="Fix emitting event with deleted topics" />
685
693
  <MESSAGE value="Adjust to ban changes" />
686
694
  <MESSAGE value="TopicHistoryWindow retainRatio and event handling improvements" />
@@ -704,7 +712,9 @@
704
712
  <MESSAGE value="Unread topic counter in summary, bump version" />
705
713
  <MESSAGE value="Unread room counter in summary, bump version" />
706
714
  <MESSAGE value="Reconcile tracked state on reconnect" />
707
- <option name="LAST_COMMIT_MESSAGE" value="Reconcile tracked state on reconnect" />
715
+ <MESSAGE value="Introduce UserData support" />
716
+ <MESSAGE value="Add members to rooms and invitation only rooms support" />
717
+ <option name="LAST_COMMIT_MESSAGE" value="Add members to rooms and invitation only rooms support" />
708
718
  </component>
709
719
  <component name="XSLT-Support.FileAssociations.UIState">
710
720
  <expand />
@@ -2917,8 +2917,8 @@ var RoomsManager = /*#__PURE__*/function () {
2917
2917
  this.tracker.client.on('TopicUpdated', function (ev) {
2918
2918
  return _this.handleTopicUpdated(ev);
2919
2919
  });
2920
- this.tracker.client.on('RoomMemberJoined', function (ev) {
2921
- return _this.handleRoomMemberJoined(ev);
2920
+ this.tracker.client.on('RoomMembersJoined', function (ev) {
2921
+ return _this.handleRoomMembersJoined(ev);
2922
2922
  });
2923
2923
  this.tracker.client.on('RoomMemberLeft', function (ev) {
2924
2924
  return _this.handleRoomMemberLeft(ev);
@@ -3340,10 +3340,11 @@ var RoomsManager = /*#__PURE__*/function () {
3340
3340
  this.deleteRoom(ev.id);
3341
3341
  }
3342
3342
  }, {
3343
- key: "handleRoomMemberJoined",
3344
- value: function handleRoomMemberJoined(ev) {
3343
+ key: "handleRoomMembersJoined",
3344
+ value: function handleRoomMembersJoined(ev) {
3345
3345
  if (this.members.has(ev.roomId)) {
3346
- this.members.get(ev.roomId).set(ev.member);
3346
+ var _this$members$get;
3347
+ (_this$members$get = this.members.get(ev.roomId)).set.apply(_this$members$get, RoomsManager_toConsumableArray(ev.members));
3347
3348
  }
3348
3349
  }
3349
3350
  }, {
@@ -3362,10 +3363,10 @@ var RoomsManager = /*#__PURE__*/function () {
3362
3363
  return (_member$user$id2 = (_member$user2 = member.user) === null || _member$user2 === void 0 ? void 0 : _member$user2.id) !== null && _member$user$id2 !== void 0 ? _member$user$id2 : member.spaceMember.user.id;
3363
3364
  }, ev.members)]);
3364
3365
  } else {
3365
- var _this$members$get;
3366
+ var _this$members$get2;
3366
3367
  // Reconcile into the existing (bound) collection so a reconnect
3367
3368
  // refetch updates it in place instead of leaving stale members.
3368
- (_this$members$get = this.members.get(ev.id)).reconcile.apply(_this$members$get, RoomsManager_toConsumableArray(ev.members));
3369
+ (_this$members$get2 = this.members.get(ev.id)).reconcile.apply(_this$members$get2, RoomsManager_toConsumableArray(ev.members));
3369
3370
  }
3370
3371
  }
3371
3372
  }, {
@@ -3712,6 +3713,29 @@ var SpacesManager = /*#__PURE__*/function () {
3712
3713
  }
3713
3714
  return getRooms;
3714
3715
  }()
3716
+ /**
3717
+ * Drop the cached room listing of the space and fetch it again from the server.
3718
+ * Room visibility depends on things this client is not notified about (invitations,
3719
+ * permission changes), so the listing needs a way to be pulled anew on demand.
3720
+ */
3721
+ )
3722
+ }, {
3723
+ key: "refreshRooms",
3724
+ value: (function () {
3725
+ var _refreshRooms = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee5(spaceId) {
3726
+ return SpacesManager_regenerator().w(function (_context5) {
3727
+ while (1) switch (_context5.n) {
3728
+ case 0:
3729
+ this.roomsPromises.forget(spaceId);
3730
+ return _context5.a(2, this.getRooms(spaceId));
3731
+ }
3732
+ }, _callee5, this);
3733
+ }));
3734
+ function refreshRooms(_x3) {
3735
+ return _refreshRooms.apply(this, arguments);
3736
+ }
3737
+ return refreshRooms;
3738
+ }()
3715
3739
  /**
3716
3740
  * Get collection of space members.
3717
3741
  */
@@ -3719,44 +3743,44 @@ var SpacesManager = /*#__PURE__*/function () {
3719
3743
  }, {
3720
3744
  key: "getMembers",
3721
3745
  value: (function () {
3722
- var _getMembers = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee6(spaceId) {
3746
+ var _getMembers = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee7(spaceId) {
3723
3747
  var _this3 = this;
3724
- return SpacesManager_regenerator().w(function (_context6) {
3725
- while (1) switch (_context6.n) {
3748
+ return SpacesManager_regenerator().w(function (_context7) {
3749
+ while (1) switch (_context7.n) {
3726
3750
  case 0:
3727
3751
  if (this.membersPromises.notExist(spaceId)) {
3728
- this.membersPromises.registerByFunction(/*#__PURE__*/SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee5() {
3752
+ this.membersPromises.registerByFunction(/*#__PURE__*/SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee6() {
3729
3753
  var result;
3730
- return SpacesManager_regenerator().w(function (_context5) {
3731
- while (1) switch (_context5.n) {
3754
+ return SpacesManager_regenerator().w(function (_context6) {
3755
+ while (1) switch (_context6.n) {
3732
3756
  case 0:
3733
- _context5.n = 1;
3757
+ _context6.n = 1;
3734
3758
  return _this3.tracker.client.send('GetSpaceMembers', {
3735
3759
  id: spaceId
3736
3760
  });
3737
3761
  case 1:
3738
- result = _context5.v;
3762
+ result = _context6.v;
3739
3763
  if (!result.error) {
3740
- _context5.n = 2;
3764
+ _context6.n = 2;
3741
3765
  break;
3742
3766
  }
3743
3767
  throw result.error;
3744
3768
  case 2:
3745
3769
  _this3.handleSpaceMembers(result.data);
3746
3770
  case 3:
3747
- return _context5.a(2);
3771
+ return _context6.a(2);
3748
3772
  }
3749
- }, _callee5);
3773
+ }, _callee6);
3750
3774
  })), spaceId);
3751
3775
  }
3752
- _context6.n = 1;
3776
+ _context7.n = 1;
3753
3777
  return this.membersPromises.get(spaceId);
3754
3778
  case 1:
3755
- return _context6.a(2, this.members.get(spaceId));
3779
+ return _context7.a(2, this.members.get(spaceId));
3756
3780
  }
3757
- }, _callee6, this);
3781
+ }, _callee7, this);
3758
3782
  }));
3759
- function getMembers(_x3) {
3783
+ function getMembers(_x4) {
3760
3784
  return _getMembers.apply(this, arguments);
3761
3785
  }
3762
3786
  return getMembers;
@@ -3768,32 +3792,32 @@ var SpacesManager = /*#__PURE__*/function () {
3768
3792
  }, {
3769
3793
  key: "getMe",
3770
3794
  value: (function () {
3771
- var _getMe = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee7(spaceId) {
3795
+ var _getMe = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee8(spaceId) {
3772
3796
  var userId, members;
3773
- return SpacesManager_regenerator().w(function (_context7) {
3774
- while (1) switch (_context7.n) {
3797
+ return SpacesManager_regenerator().w(function (_context8) {
3798
+ while (1) switch (_context8.n) {
3775
3799
  case 0:
3776
- _context7.n = 1;
3800
+ _context8.n = 1;
3777
3801
  return this.tracker.getMe();
3778
3802
  case 1:
3779
- userId = _context7.v.id;
3803
+ userId = _context8.v.id;
3780
3804
  if (this.list.has(spaceId)) {
3781
- _context7.n = 2;
3805
+ _context8.n = 2;
3782
3806
  break;
3783
3807
  }
3784
- return _context7.a(2, undefined);
3808
+ return _context8.a(2, undefined);
3785
3809
  case 2:
3786
- _context7.n = 3;
3810
+ _context8.n = 3;
3787
3811
  return this.getMembers(spaceId);
3788
3812
  case 3:
3789
- members = _context7.v;
3790
- return _context7.a(2, members === null || members === void 0 ? void 0 : members.items.find(function (member) {
3813
+ members = _context8.v;
3814
+ return _context8.a(2, members === null || members === void 0 ? void 0 : members.items.find(function (member) {
3791
3815
  return member.user.id === userId;
3792
3816
  }));
3793
3817
  }
3794
- }, _callee7, this);
3818
+ }, _callee8, this);
3795
3819
  }));
3796
- function getMe(_x4) {
3820
+ function getMe(_x5) {
3797
3821
  return _getMe.apply(this, arguments);
3798
3822
  }
3799
3823
  return getMe;
@@ -3826,19 +3850,19 @@ var SpacesManager = /*#__PURE__*/function () {
3826
3850
  }, {
3827
3851
  key: "handleRoomDeleted",
3828
3852
  value: function () {
3829
- var _handleRoomDeleted = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee8(ev) {
3853
+ var _handleRoomDeleted = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee9(ev) {
3830
3854
  var _this$rooms$get2;
3831
3855
  var spaceId, space, spaceChanged;
3832
- return SpacesManager_regenerator().w(function (_context8) {
3833
- while (1) switch (_context8.n) {
3856
+ return SpacesManager_regenerator().w(function (_context9) {
3857
+ while (1) switch (_context9.n) {
3834
3858
  case 0:
3835
3859
  spaceId = this.roomIdToSpaceId.get(ev.id);
3836
3860
  this.roomIdToSpaceId["delete"](ev.id);
3837
3861
  if (spaceId) {
3838
- _context8.n = 1;
3862
+ _context9.n = 1;
3839
3863
  break;
3840
3864
  }
3841
- return _context8.a(2);
3865
+ return _context9.a(2);
3842
3866
  case 1:
3843
3867
  space = this.list.get(spaceId);
3844
3868
  spaceChanged = false;
@@ -3857,11 +3881,11 @@ var SpacesManager = /*#__PURE__*/function () {
3857
3881
  this.list.set(space);
3858
3882
  }
3859
3883
  case 2:
3860
- return _context8.a(2);
3884
+ return _context9.a(2);
3861
3885
  }
3862
- }, _callee8, this);
3886
+ }, _callee9, this);
3863
3887
  }));
3864
- function handleRoomDeleted(_x5) {
3888
+ function handleRoomDeleted(_x6) {
3865
3889
  return _handleRoomDeleted.apply(this, arguments);
3866
3890
  }
3867
3891
  return handleRoomDeleted;
@@ -3955,10 +3979,10 @@ var SpacesManager = /*#__PURE__*/function () {
3955
3979
  }, {
3956
3980
  key: "handleRoomSummaryUpdated",
3957
3981
  value: function () {
3958
- var _handleRoomSummaryUpdated = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee9(ev) {
3982
+ var _handleRoomSummaryUpdated = SpacesManager_asyncToGenerator(/*#__PURE__*/SpacesManager_regenerator().m(function _callee0(ev) {
3959
3983
  var spaceId, summariesPromise, summaries, oldSummary, newSummary;
3960
- return SpacesManager_regenerator().w(function (_context9) {
3961
- while (1) switch (_context9.n) {
3984
+ return SpacesManager_regenerator().w(function (_context0) {
3985
+ while (1) switch (_context0.n) {
3962
3986
  case 0:
3963
3987
  spaceId = this.roomIdToSpaceId.get(ev.summary.id);
3964
3988
  summariesPromise = this.roomsPromises.get(spaceId);
@@ -3967,10 +3991,10 @@ var SpacesManager = /*#__PURE__*/function () {
3967
3991
  * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.
3968
3992
  */
3969
3993
  if (!(spaceId && summariesPromise)) {
3970
- _context9.n = 2;
3994
+ _context0.n = 2;
3971
3995
  break;
3972
3996
  }
3973
- _context9.n = 1;
3997
+ _context0.n = 1;
3974
3998
  return summariesPromise;
3975
3999
  case 1:
3976
4000
  summaries = this.rooms.get(spaceId);
@@ -3982,11 +4006,11 @@ var SpacesManager = /*#__PURE__*/function () {
3982
4006
  }
3983
4007
  summaries.set(newSummary);
3984
4008
  case 2:
3985
- return _context9.a(2);
4009
+ return _context0.a(2);
3986
4010
  }
3987
- }, _callee9, this);
4011
+ }, _callee0, this);
3988
4012
  }));
3989
- function handleRoomSummaryUpdated(_x6) {
4013
+ function handleRoomSummaryUpdated(_x7) {
3990
4014
  return _handleRoomSummaryUpdated.apply(this, arguments);
3991
4015
  }
3992
4016
  return handleRoomSummaryUpdated;
@@ -4210,6 +4234,10 @@ Permissions_defineProperty(Permissions, "list", {
4210
4234
  RedactMessages: {
4211
4235
  value: 1 << 19,
4212
4236
  maxLayer: Layer.Topic
4237
+ },
4238
+ AddMembers: {
4239
+ value: 1 << 20,
4240
+ maxLayer: Layer.Space
4213
4241
  }
4214
4242
  });
4215
4243
  ;// ./src/state-tracker/PermissionsManager.ts
@@ -4968,8 +4996,8 @@ var UsersManager = /*#__PURE__*/function () {
4968
4996
  tracker.client.on('UserUpdated', function (event) {
4969
4997
  return _this.handleUsers([event.user]);
4970
4998
  });
4971
- tracker.client.on('RoomMemberJoined', function (event) {
4972
- return _this.handleMembers([event.member]);
4999
+ tracker.client.on('RoomMembersJoined', function (event) {
5000
+ return _this.handleMembers(event.members);
4973
5001
  });
4974
5002
  tracker.client.on('SpaceMemberJoined', function (event) {
4975
5003
  return _this.handleMembers([event.member]);