@stream-io/feeds-client 0.3.48 → 0.3.50

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 (47) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +1 -1
  5. package/dist/es/index.mjs +2 -2
  6. package/dist/es/index.mjs.map +1 -1
  7. package/dist/es/react-bindings.mjs +1 -1
  8. package/dist/{feeds-client-D-EFo20w.mjs → feeds-client-BHpmg4_E.mjs} +270 -176
  9. package/dist/feeds-client-BHpmg4_E.mjs.map +1 -0
  10. package/dist/{feeds-client-DuJuJuEJ.js → feeds-client-CKxvuiKz.js} +270 -176
  11. package/dist/feeds-client-CKxvuiKz.js.map +1 -0
  12. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  13. package/dist/types/common/Poll.d.ts +7 -3
  14. package/dist/types/common/Poll.d.ts.map +1 -1
  15. package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
  16. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  17. package/dist/types/feed/event-handlers/activity-updater.d.ts +3 -1
  18. package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
  19. package/dist/types/feed/event-handlers/comment/handle-comment-added.d.ts.map +1 -1
  20. package/dist/types/feed/feed.d.ts +2 -2
  21. package/dist/types/feed/feed.d.ts.map +1 -1
  22. package/dist/types/feeds-client/feeds-client.d.ts +7 -3
  23. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  24. package/dist/types/gen/feeds/FeedsApi.d.ts +34 -3
  25. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  26. package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
  27. package/dist/types/gen/models/index.d.ts +276 -422
  28. package/dist/types/gen/models/index.d.ts.map +1 -1
  29. package/dist/types/gen/moderation/ModerationApi.d.ts.map +1 -1
  30. package/dist/types/types.d.ts +2 -2
  31. package/dist/types/types.d.ts.map +1 -1
  32. package/dist/types/utils/constants.d.ts +1 -1
  33. package/package.json +1 -1
  34. package/src/common/Poll.ts +16 -15
  35. package/src/feed/event-handlers/comment/handle-comment-added.ts +14 -2
  36. package/src/feed/feed.ts +25 -9
  37. package/src/feeds-client/feeds-client.ts +28 -1
  38. package/src/gen/feeds/FeedsApi.ts +200 -2
  39. package/src/gen/model-decoders/decoders.ts +95 -230
  40. package/src/gen/model-decoders/event-decoder-mapping.ts +6 -2
  41. package/src/gen/models/index.ts +443 -746
  42. package/src/gen/moderation/ModerationApi.ts +1 -0
  43. package/src/test-utils/response-generators.ts +3 -2
  44. package/src/types.ts +2 -2
  45. package/src/utils/constants.ts +1 -1
  46. package/dist/feeds-client-D-EFo20w.mjs.map +0 -1
  47. package/dist/feeds-client-DuJuJuEJ.js.map +0 -1
@@ -137,7 +137,7 @@ decoders.ActivityResponse = (input) => {
137
137
  own_bookmarks: { type: "BookmarkResponse", isSingle: false },
138
138
  own_reactions: { type: "FeedsReactionResponse", isSingle: false },
139
139
  collections: { type: "EnrichedCollectionResponse", isSingle: false },
140
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false },
140
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false },
141
141
  user: { type: "UserResponse", isSingle: true },
142
142
  deleted_at: { type: "DatetimeType", isSingle: true },
143
143
  edited_at: { type: "DatetimeType", isSingle: true },
@@ -211,6 +211,12 @@ decoders.AddReactionResponse = (input) => {
211
211
  };
212
212
  return decode(typeMappings, input);
213
213
  };
214
+ decoders.AddUserGroupMembersResponse = (input) => {
215
+ const typeMappings = {
216
+ user_group: { type: "UserGroupResponse", isSingle: true }
217
+ };
218
+ return decode(typeMappings, input);
219
+ };
214
220
  decoders.AggregatedActivityResponse = (input) => {
215
221
  const typeMappings = {
216
222
  created_at: { type: "DatetimeType", isSingle: true },
@@ -234,13 +240,12 @@ decoders.AppealItemResponse = (input) => {
234
240
  };
235
241
  return decode(typeMappings, input);
236
242
  };
237
- decoders.Ban = (input) => {
243
+ decoders.BanInfoResponse = (input) => {
238
244
  const typeMappings = {
239
245
  created_at: { type: "DatetimeType", isSingle: true },
240
246
  expires: { type: "DatetimeType", isSingle: true },
241
- channel: { type: "Channel", isSingle: true },
242
- created_by: { type: "User", isSingle: true },
243
- target: { type: "User", isSingle: true }
247
+ created_by: { type: "UserResponse", isSingle: true },
248
+ user: { type: "UserResponse", isSingle: true }
244
249
  };
245
250
  return decode(typeMappings, input);
246
251
  };
@@ -355,30 +360,6 @@ decoders.CallSessionResponse = (input) => {
355
360
  };
356
361
  return decode(typeMappings, input);
357
362
  };
358
- decoders.Channel = (input) => {
359
- const typeMappings = {
360
- created_at: { type: "DatetimeType", isSingle: true },
361
- updated_at: { type: "DatetimeType", isSingle: true },
362
- deleted_at: { type: "DatetimeType", isSingle: true },
363
- last_message_at: { type: "DatetimeType", isSingle: true },
364
- message_count_updated_at: { type: "DatetimeType", isSingle: true },
365
- active_live_locations: { type: "SharedLocation", isSingle: false },
366
- invites: { type: "ChannelMember", isSingle: false },
367
- members: { type: "ChannelMember", isSingle: false },
368
- config: { type: "ChannelConfig", isSingle: true },
369
- created_by: { type: "User", isSingle: true },
370
- members_lookup: { type: "ChannelMemberLookup", isSingle: false },
371
- truncated_by: { type: "User", isSingle: true }
372
- };
373
- return decode(typeMappings, input);
374
- };
375
- decoders.ChannelConfig = (input) => {
376
- const typeMappings = {
377
- created_at: { type: "DatetimeType", isSingle: true },
378
- updated_at: { type: "DatetimeType", isSingle: true }
379
- };
380
- return decode(typeMappings, input);
381
- };
382
363
  decoders.ChannelConfigWithInfo = (input) => {
383
364
  const typeMappings = {
384
365
  created_at: { type: "DatetimeType", isSingle: true },
@@ -387,28 +368,6 @@ decoders.ChannelConfigWithInfo = (input) => {
387
368
  };
388
369
  return decode(typeMappings, input);
389
370
  };
390
- decoders.ChannelMember = (input) => {
391
- const typeMappings = {
392
- created_at: { type: "DatetimeType", isSingle: true },
393
- updated_at: { type: "DatetimeType", isSingle: true },
394
- archived_at: { type: "DatetimeType", isSingle: true },
395
- ban_expires: { type: "DatetimeType", isSingle: true },
396
- deleted_at: { type: "DatetimeType", isSingle: true },
397
- invite_accepted_at: { type: "DatetimeType", isSingle: true },
398
- invite_rejected_at: { type: "DatetimeType", isSingle: true },
399
- pinned_at: { type: "DatetimeType", isSingle: true },
400
- user: { type: "User", isSingle: true }
401
- };
402
- return decode(typeMappings, input);
403
- };
404
- decoders.ChannelMemberLookup = (input) => {
405
- const typeMappings = {
406
- archived_at: { type: "DatetimeType", isSingle: true },
407
- ban_expires: { type: "DatetimeType", isSingle: true },
408
- pinned_at: { type: "DatetimeType", isSingle: true }
409
- };
410
- return decode(typeMappings, input);
411
- };
412
371
  decoders.ChannelMemberResponse = (input) => {
413
372
  const typeMappings = {
414
373
  created_at: { type: "DatetimeType", isSingle: true },
@@ -519,7 +478,7 @@ decoders.CommentResponse = (input) => {
519
478
  deleted_at: { type: "DatetimeType", isSingle: true },
520
479
  edited_at: { type: "DatetimeType", isSingle: true },
521
480
  latest_reactions: { type: "FeedsReactionResponse", isSingle: false },
522
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false }
481
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false }
523
482
  };
524
483
  return decode(typeMappings, input);
525
484
  };
@@ -562,6 +521,12 @@ decoders.CreateGuestResponse = (input) => {
562
521
  };
563
522
  return decode(typeMappings, input);
564
523
  };
524
+ decoders.CreateUserGroupResponse = (input) => {
525
+ const typeMappings = {
526
+ user_group: { type: "UserGroupResponse", isSingle: true }
527
+ };
528
+ return decode(typeMappings, input);
529
+ };
565
530
  decoders.DeleteActivityReactionResponse = (input) => {
566
531
  const typeMappings = {
567
532
  activity: { type: "ActivityResponse", isSingle: true },
@@ -589,12 +554,6 @@ decoders.DeleteCommentResponse = (input) => {
589
554
  };
590
555
  return decode(typeMappings, input);
591
556
  };
592
- decoders.Device = (input) => {
593
- const typeMappings = {
594
- created_at: { type: "DatetimeType", isSingle: true }
595
- };
596
- return decode(typeMappings, input);
597
- };
598
557
  decoders.DeviceResponse = (input) => {
599
558
  const typeMappings = {
600
559
  created_at: { type: "DatetimeType", isSingle: true }
@@ -671,6 +630,13 @@ decoders.FeedGroupDeletedEvent = (input) => {
671
630
  };
672
631
  return decode(typeMappings, input);
673
632
  };
633
+ decoders.FeedGroupRestoredEvent = (input) => {
634
+ const typeMappings = {
635
+ created_at: { type: "DatetimeType", isSingle: true },
636
+ received_at: { type: "DatetimeType", isSingle: true }
637
+ };
638
+ return decode(typeMappings, input);
639
+ };
674
640
  decoders.FeedMemberAddedEvent = (input) => {
675
641
  const typeMappings = {
676
642
  created_at: { type: "DatetimeType", isSingle: true },
@@ -745,6 +711,13 @@ decoders.FeedUpdatedEvent = (input) => {
745
711
  };
746
712
  return decode(typeMappings, input);
747
713
  };
714
+ decoders.FeedsReactionGroupResponse = (input) => {
715
+ const typeMappings = {
716
+ first_reaction_at: { type: "DatetimeType", isSingle: true },
717
+ last_reaction_at: { type: "DatetimeType", isSingle: true }
718
+ };
719
+ return decode(typeMappings, input);
720
+ };
748
721
  decoders.FeedsReactionResponse = (input) => {
749
722
  const typeMappings = {
750
723
  created_at: { type: "DatetimeType", isSingle: true },
@@ -874,10 +847,17 @@ decoders.GetOrCreateFeedResponse = (input) => {
874
847
  };
875
848
  return decode(typeMappings, input);
876
849
  };
850
+ decoders.GetUserGroupResponse = (input) => {
851
+ const typeMappings = {
852
+ user_group: { type: "UserGroupResponse", isSingle: true }
853
+ };
854
+ return decode(typeMappings, input);
855
+ };
877
856
  decoders.HealthCheckEvent = (input) => {
878
857
  const typeMappings = {
879
858
  created_at: { type: "DatetimeType", isSingle: true },
880
- received_at: { type: "DatetimeType", isSingle: true }
859
+ received_at: { type: "DatetimeType", isSingle: true },
860
+ me: { type: "OwnUserResponse", isSingle: true }
881
861
  };
882
862
  return decode(typeMappings, input);
883
863
  };
@@ -893,44 +873,16 @@ decoders.ListDevicesResponse = (input) => {
893
873
  };
894
874
  return decode(typeMappings, input);
895
875
  };
896
- decoders.MembershipLevelResponse = (input) => {
876
+ decoders.ListUserGroupsResponse = (input) => {
897
877
  const typeMappings = {
898
- created_at: { type: "DatetimeType", isSingle: true },
899
- updated_at: { type: "DatetimeType", isSingle: true }
878
+ user_groups: { type: "UserGroupResponse", isSingle: false }
900
879
  };
901
880
  return decode(typeMappings, input);
902
881
  };
903
- decoders.Message = (input) => {
904
- const typeMappings = {
905
- created_at: { type: "DatetimeType", isSingle: true },
906
- updated_at: { type: "DatetimeType", isSingle: true },
907
- latest_reactions: { type: "Reaction", isSingle: false },
908
- mentioned_users: { type: "User", isSingle: false },
909
- own_reactions: { type: "Reaction", isSingle: false },
910
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false },
911
- deleted_at: { type: "DatetimeType", isSingle: true },
912
- message_text_updated_at: { type: "DatetimeType", isSingle: true },
913
- pin_expires: { type: "DatetimeType", isSingle: true },
914
- pinned_at: { type: "DatetimeType", isSingle: true },
915
- thread_participants: { type: "User", isSingle: false },
916
- member: { type: "ChannelMember", isSingle: true },
917
- pinned_by: { type: "User", isSingle: true },
918
- poll: { type: "Poll", isSingle: true },
919
- quoted_message: { type: "Message", isSingle: true },
920
- reminder: { type: "MessageReminder", isSingle: true },
921
- shared_location: { type: "SharedLocation", isSingle: true },
922
- user: { type: "User", isSingle: true }
923
- };
924
- return decode(typeMappings, input);
925
- };
926
- decoders.MessageReminder = (input) => {
882
+ decoders.MembershipLevelResponse = (input) => {
927
883
  const typeMappings = {
928
884
  created_at: { type: "DatetimeType", isSingle: true },
929
- updated_at: { type: "DatetimeType", isSingle: true },
930
- remind_at: { type: "DatetimeType", isSingle: true },
931
- channel: { type: "Channel", isSingle: true },
932
- message: { type: "Message", isSingle: true },
933
- user: { type: "User", isSingle: true }
885
+ updated_at: { type: "DatetimeType", isSingle: true }
934
886
  };
935
887
  return decode(typeMappings, input);
936
888
  };
@@ -979,7 +931,7 @@ decoders.ModerationFlagResponse = (input) => {
979
931
  decoders.ModerationFlaggedEvent = (input) => {
980
932
  const typeMappings = {
981
933
  created_at: { type: "DatetimeType", isSingle: true },
982
- user: { type: "User", isSingle: true }
934
+ received_at: { type: "DatetimeType", isSingle: true }
983
935
  };
984
936
  return decode(typeMappings, input);
985
937
  };
@@ -994,8 +946,8 @@ decoders.ModerationMarkReviewedEvent = (input) => {
994
946
  };
995
947
  decoders.MuteResponse = (input) => {
996
948
  const typeMappings = {
997
- mutes: { type: "UserMute", isSingle: false },
998
- own_user: { type: "OwnUser", isSingle: true }
949
+ mutes: { type: "UserMuteResponse", isSingle: false },
950
+ own_user: { type: "OwnUserResponse", isSingle: true }
999
951
  };
1000
952
  return decode(typeMappings, input);
1001
953
  };
@@ -1024,18 +976,18 @@ decoders.OwnBatchResponse = (input) => {
1024
976
  };
1025
977
  return decode(typeMappings, input);
1026
978
  };
1027
- decoders.OwnUser = (input) => {
979
+ decoders.OwnUserResponse = (input) => {
1028
980
  const typeMappings = {
1029
981
  created_at: { type: "DatetimeType", isSingle: true },
1030
982
  updated_at: { type: "DatetimeType", isSingle: true },
1031
983
  channel_mutes: { type: "ChannelMute", isSingle: false },
1032
- devices: { type: "Device", isSingle: false },
1033
- mutes: { type: "UserMute", isSingle: false },
984
+ devices: { type: "DeviceResponse", isSingle: false },
985
+ mutes: { type: "UserMuteResponse", isSingle: false },
1034
986
  deactivated_at: { type: "DatetimeType", isSingle: true },
1035
987
  deleted_at: { type: "DatetimeType", isSingle: true },
1036
988
  last_active: { type: "DatetimeType", isSingle: true },
1037
- last_engaged_at: { type: "DatetimeType", isSingle: true },
1038
- push_preferences: { type: "PushPreferences", isSingle: true }
989
+ revoke_tokens_issued_before: { type: "DatetimeType", isSingle: true },
990
+ push_preferences: { type: "PushPreferencesResponse", isSingle: true }
1039
991
  };
1040
992
  return decode(typeMappings, input);
1041
993
  };
@@ -1046,16 +998,6 @@ decoders.PinActivityResponse = (input) => {
1046
998
  };
1047
999
  return decode(typeMappings, input);
1048
1000
  };
1049
- decoders.Poll = (input) => {
1050
- const typeMappings = {
1051
- created_at: { type: "DatetimeType", isSingle: true },
1052
- updated_at: { type: "DatetimeType", isSingle: true },
1053
- latest_answers: { type: "PollVote", isSingle: false },
1054
- own_votes: { type: "PollVote", isSingle: false },
1055
- created_by: { type: "User", isSingle: true }
1056
- };
1057
- return decode(typeMappings, input);
1058
- };
1059
1001
  decoders.PollClosedFeedEvent = (input) => {
1060
1002
  const typeMappings = {
1061
1003
  created_at: { type: "DatetimeType", isSingle: true },
@@ -1096,14 +1038,6 @@ decoders.PollUpdatedFeedEvent = (input) => {
1096
1038
  };
1097
1039
  return decode(typeMappings, input);
1098
1040
  };
1099
- decoders.PollVote = (input) => {
1100
- const typeMappings = {
1101
- created_at: { type: "DatetimeType", isSingle: true },
1102
- updated_at: { type: "DatetimeType", isSingle: true },
1103
- user: { type: "User", isSingle: true }
1104
- };
1105
- return decode(typeMappings, input);
1106
- };
1107
1041
  decoders.PollVoteCastedFeedEvent = (input) => {
1108
1042
  const typeMappings = {
1109
1043
  created_at: { type: "DatetimeType", isSingle: true },
@@ -1152,7 +1086,7 @@ decoders.PollVotesResponse = (input) => {
1152
1086
  };
1153
1087
  return decode(typeMappings, input);
1154
1088
  };
1155
- decoders.PushPreferences = (input) => {
1089
+ decoders.PushPreferencesResponse = (input) => {
1156
1090
  const typeMappings = {
1157
1091
  disabled_until: { type: "DatetimeType", isSingle: true }
1158
1092
  };
@@ -1246,8 +1180,7 @@ decoders.Reaction = (input) => {
1246
1180
  const typeMappings = {
1247
1181
  created_at: { type: "DatetimeType", isSingle: true },
1248
1182
  updated_at: { type: "DatetimeType", isSingle: true },
1249
- deleted_at: { type: "DatetimeType", isSingle: true },
1250
- user: { type: "User", isSingle: true }
1183
+ deleted_at: { type: "DatetimeType", isSingle: true }
1251
1184
  };
1252
1185
  return decode(typeMappings, input);
1253
1186
  };
@@ -1295,6 +1228,12 @@ decoders.ReminderResponseData = (input) => {
1295
1228
  };
1296
1229
  return decode(typeMappings, input);
1297
1230
  };
1231
+ decoders.RemoveUserGroupMembersResponse = (input) => {
1232
+ const typeMappings = {
1233
+ user_group: { type: "UserGroupResponse", isSingle: true }
1234
+ };
1235
+ return decode(typeMappings, input);
1236
+ };
1298
1237
  decoders.RestoreActivityResponse = (input) => {
1299
1238
  const typeMappings = {
1300
1239
  activity: { type: "ActivityResponse", isSingle: true }
@@ -1306,7 +1245,7 @@ decoders.ReviewQueueItemResponse = (input) => {
1306
1245
  created_at: { type: "DatetimeType", isSingle: true },
1307
1246
  updated_at: { type: "DatetimeType", isSingle: true },
1308
1247
  actions: { type: "ActionLogResponse", isSingle: false },
1309
- bans: { type: "Ban", isSingle: false },
1248
+ bans: { type: "BanInfoResponse", isSingle: false },
1310
1249
  flags: { type: "ModerationFlagResponse", isSingle: false },
1311
1250
  completed_at: { type: "DatetimeType", isSingle: true },
1312
1251
  reviewed_at: { type: "DatetimeType", isSingle: true },
@@ -1322,13 +1261,9 @@ decoders.ReviewQueueItemResponse = (input) => {
1322
1261
  };
1323
1262
  return decode(typeMappings, input);
1324
1263
  };
1325
- decoders.SharedLocation = (input) => {
1264
+ decoders.SearchUserGroupsResponse = (input) => {
1326
1265
  const typeMappings = {
1327
- created_at: { type: "DatetimeType", isSingle: true },
1328
- updated_at: { type: "DatetimeType", isSingle: true },
1329
- end_at: { type: "DatetimeType", isSingle: true },
1330
- channel: { type: "Channel", isSingle: true },
1331
- message: { type: "Message", isSingle: true }
1266
+ user_groups: { type: "UserGroupResponse", isSingle: false }
1332
1267
  };
1333
1268
  return decode(typeMappings, input);
1334
1269
  };
@@ -1397,7 +1332,7 @@ decoders.ThreadedCommentResponse = (input) => {
1397
1332
  edited_at: { type: "DatetimeType", isSingle: true },
1398
1333
  latest_reactions: { type: "FeedsReactionResponse", isSingle: false },
1399
1334
  replies: { type: "ThreadedCommentResponse", isSingle: false },
1400
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false }
1335
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false }
1401
1336
  };
1402
1337
  return decode(typeMappings, input);
1403
1338
  };
@@ -1480,6 +1415,12 @@ decoders.UpdateFollowResponse = (input) => {
1480
1415
  };
1481
1416
  return decode(typeMappings, input);
1482
1417
  };
1418
+ decoders.UpdateUserGroupResponse = (input) => {
1419
+ const typeMappings = {
1420
+ user_group: { type: "UserGroupResponse", isSingle: true }
1421
+ };
1422
+ return decode(typeMappings, input);
1423
+ };
1483
1424
  decoders.UpdateUsersResponse = (input) => {
1484
1425
  const typeMappings = {
1485
1426
  users: { type: "FullUserResponse", isSingle: false }
@@ -1500,47 +1441,36 @@ decoders.UpsertConfigResponse = (input) => {
1500
1441
  };
1501
1442
  decoders.UpsertPushPreferencesResponse = (input) => {
1502
1443
  const typeMappings = {
1503
- user_preferences: { type: "PushPreferences", isSingle: false }
1444
+ user_preferences: { type: "PushPreferencesResponse", isSingle: false }
1504
1445
  };
1505
1446
  return decode(typeMappings, input);
1506
1447
  };
1507
- decoders.User = (input) => {
1448
+ decoders.UserBannedEvent = (input) => {
1508
1449
  const typeMappings = {
1509
- ban_expires: { type: "DatetimeType", isSingle: true },
1510
1450
  created_at: { type: "DatetimeType", isSingle: true },
1511
- deactivated_at: { type: "DatetimeType", isSingle: true },
1512
- deleted_at: { type: "DatetimeType", isSingle: true },
1513
- last_active: { type: "DatetimeType", isSingle: true },
1514
- last_engaged_at: { type: "DatetimeType", isSingle: true },
1515
- revoke_tokens_issued_before: { type: "DatetimeType", isSingle: true },
1516
- updated_at: { type: "DatetimeType", isSingle: true }
1451
+ expiration: { type: "DatetimeType", isSingle: true },
1452
+ received_at: { type: "DatetimeType", isSingle: true }
1517
1453
  };
1518
1454
  return decode(typeMappings, input);
1519
1455
  };
1520
- decoders.UserBannedEvent = (input) => {
1456
+ decoders.UserDeactivatedEvent = (input) => {
1521
1457
  const typeMappings = {
1522
1458
  created_at: { type: "DatetimeType", isSingle: true },
1523
- created_by: { type: "User", isSingle: true },
1524
- expiration: { type: "DatetimeType", isSingle: true },
1525
- user: { type: "User", isSingle: true }
1459
+ received_at: { type: "DatetimeType", isSingle: true }
1526
1460
  };
1527
1461
  return decode(typeMappings, input);
1528
1462
  };
1529
- decoders.UserDeactivatedEvent = (input) => {
1463
+ decoders.UserGroupMember = (input) => {
1530
1464
  const typeMappings = {
1531
- created_at: { type: "DatetimeType", isSingle: true },
1532
- created_by: { type: "User", isSingle: true },
1533
- user: { type: "User", isSingle: true }
1465
+ created_at: { type: "DatetimeType", isSingle: true }
1534
1466
  };
1535
1467
  return decode(typeMappings, input);
1536
1468
  };
1537
- decoders.UserMute = (input) => {
1469
+ decoders.UserGroupResponse = (input) => {
1538
1470
  const typeMappings = {
1539
1471
  created_at: { type: "DatetimeType", isSingle: true },
1540
1472
  updated_at: { type: "DatetimeType", isSingle: true },
1541
- expires: { type: "DatetimeType", isSingle: true },
1542
- target: { type: "User", isSingle: true },
1543
- user: { type: "User", isSingle: true }
1473
+ members: { type: "UserGroupMember", isSingle: false }
1544
1474
  };
1545
1475
  return decode(typeMappings, input);
1546
1476
  };
@@ -1554,17 +1484,10 @@ decoders.UserMuteResponse = (input) => {
1554
1484
  };
1555
1485
  return decode(typeMappings, input);
1556
1486
  };
1557
- decoders.UserMutedEvent = (input) => {
1558
- const typeMappings = {
1559
- created_at: { type: "DatetimeType", isSingle: true },
1560
- user: { type: "User", isSingle: true }
1561
- };
1562
- return decode(typeMappings, input);
1563
- };
1564
1487
  decoders.UserReactivatedEvent = (input) => {
1565
1488
  const typeMappings = {
1566
1489
  created_at: { type: "DatetimeType", isSingle: true },
1567
- user: { type: "User", isSingle: true }
1490
+ received_at: { type: "DatetimeType", isSingle: true }
1568
1491
  };
1569
1492
  return decode(typeMappings, input);
1570
1493
  };
@@ -1579,6 +1502,13 @@ decoders.UserResponse = (input) => {
1579
1502
  };
1580
1503
  return decode(typeMappings, input);
1581
1504
  };
1505
+ decoders.UserUnbannedEvent = (input) => {
1506
+ const typeMappings = {
1507
+ created_at: { type: "DatetimeType", isSingle: true },
1508
+ received_at: { type: "DatetimeType", isSingle: true }
1509
+ };
1510
+ return decode(typeMappings, input);
1511
+ };
1582
1512
  decoders.UserUpdatedEvent = (input) => {
1583
1513
  const typeMappings = {
1584
1514
  created_at: { type: "DatetimeType", isSingle: true },
@@ -2023,7 +1953,8 @@ class FeedsApi {
2023
1953
  interest_tags: request?.interest_tags,
2024
1954
  mentioned_user_ids: request?.mentioned_user_ids,
2025
1955
  custom: request?.custom,
2026
- location: request?.location
1956
+ location: request?.location,
1957
+ search_data: request?.search_data
2027
1958
  };
2028
1959
  const response = await this.apiClient.sendRequest(
2029
1960
  "PUT",
@@ -3154,6 +3085,122 @@ class FeedsApi {
3154
3085
  decoders.ImageUploadResponse?.(response.body);
3155
3086
  return { ...response.body, metadata: response.metadata };
3156
3087
  }
3088
+ async listUserGroups(request) {
3089
+ const queryParams = {
3090
+ limit: request?.limit,
3091
+ id_gt: request?.id_gt,
3092
+ created_at_gt: request?.created_at_gt,
3093
+ team_id: request?.team_id
3094
+ };
3095
+ const response = await this.apiClient.sendRequest("GET", "/api/v2/usergroups", void 0, queryParams);
3096
+ decoders.ListUserGroupsResponse?.(response.body);
3097
+ return { ...response.body, metadata: response.metadata };
3098
+ }
3099
+ async createUserGroup(request) {
3100
+ const body = {
3101
+ name: request?.name,
3102
+ description: request?.description,
3103
+ id: request?.id,
3104
+ team_id: request?.team_id,
3105
+ member_ids: request?.member_ids
3106
+ };
3107
+ const response = await this.apiClient.sendRequest(
3108
+ "POST",
3109
+ "/api/v2/usergroups",
3110
+ void 0,
3111
+ void 0,
3112
+ body,
3113
+ "application/json"
3114
+ );
3115
+ decoders.CreateUserGroupResponse?.(response.body);
3116
+ return { ...response.body, metadata: response.metadata };
3117
+ }
3118
+ async searchUserGroups(request) {
3119
+ const queryParams = {
3120
+ query: request?.query,
3121
+ limit: request?.limit,
3122
+ name_gt: request?.name_gt,
3123
+ id_gt: request?.id_gt,
3124
+ team_id: request?.team_id
3125
+ };
3126
+ const response = await this.apiClient.sendRequest("GET", "/api/v2/usergroups/search", void 0, queryParams);
3127
+ decoders.SearchUserGroupsResponse?.(response.body);
3128
+ return { ...response.body, metadata: response.metadata };
3129
+ }
3130
+ async deleteUserGroup(request) {
3131
+ const queryParams = {
3132
+ team_id: request?.team_id
3133
+ };
3134
+ const pathParams = {
3135
+ id: request?.id
3136
+ };
3137
+ const response = await this.apiClient.sendRequest(
3138
+ "DELETE",
3139
+ "/api/v2/usergroups/{id}",
3140
+ pathParams,
3141
+ queryParams
3142
+ );
3143
+ decoders.Response?.(response.body);
3144
+ return { ...response.body, metadata: response.metadata };
3145
+ }
3146
+ async getUserGroup(request) {
3147
+ const queryParams = {
3148
+ team_id: request?.team_id
3149
+ };
3150
+ const pathParams = {
3151
+ id: request?.id
3152
+ };
3153
+ const response = await this.apiClient.sendRequest("GET", "/api/v2/usergroups/{id}", pathParams, queryParams);
3154
+ decoders.GetUserGroupResponse?.(response.body);
3155
+ return { ...response.body, metadata: response.metadata };
3156
+ }
3157
+ async updateUserGroup(request) {
3158
+ const pathParams = {
3159
+ id: request?.id
3160
+ };
3161
+ const body = {
3162
+ description: request?.description,
3163
+ name: request?.name,
3164
+ team_id: request?.team_id
3165
+ };
3166
+ const response = await this.apiClient.sendRequest(
3167
+ "PUT",
3168
+ "/api/v2/usergroups/{id}",
3169
+ pathParams,
3170
+ void 0,
3171
+ body,
3172
+ "application/json"
3173
+ );
3174
+ decoders.UpdateUserGroupResponse?.(response.body);
3175
+ return { ...response.body, metadata: response.metadata };
3176
+ }
3177
+ async removeUserGroupMembers(request) {
3178
+ const pathParams = {
3179
+ id: request?.id
3180
+ };
3181
+ const response = await this.apiClient.sendRequest("DELETE", "/api/v2/usergroups/{id}/members", pathParams, void 0);
3182
+ decoders.RemoveUserGroupMembersResponse?.(response.body);
3183
+ return { ...response.body, metadata: response.metadata };
3184
+ }
3185
+ async addUserGroupMembers(request) {
3186
+ const pathParams = {
3187
+ id: request?.id
3188
+ };
3189
+ const body = {
3190
+ member_ids: request?.member_ids,
3191
+ team_id: request?.team_id
3192
+ };
3193
+ const response = await this.apiClient.sendRequest(
3194
+ "POST",
3195
+ "/api/v2/usergroups/{id}/members",
3196
+ pathParams,
3197
+ void 0,
3198
+ body,
3199
+ "application/json"
3200
+ );
3201
+ decoders.AddUserGroupMembersResponse?.(response.body);
3202
+ return { ...response.body, metadata: response.metadata };
3203
+ }
3157
3204
  async queryUsers(request) {
3158
3205
  const queryParams = {
3159
3206
  payload: request?.payload
@@ -4039,7 +4086,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
4039
4086
  };
4040
4087
  return result;
4041
4088
  };
4042
- const version = "0.3.48";
4089
+ const version = "0.3.50";
4043
4090
  const axios = axiosImport.default ?? axiosImport;
4044
4091
  class ApiClient {
4045
4092
  constructor(apiKey, tokenManager, connectionIdManager, options) {
@@ -4242,6 +4289,7 @@ const eventDecoderMapping = {
4242
4289
  "feeds.feed.updated": (data) => decoders.FeedUpdatedEvent(data),
4243
4290
  "feeds.feed_group.changed": (data) => decoders.FeedGroupChangedEvent(data),
4244
4291
  "feeds.feed_group.deleted": (data) => decoders.FeedGroupDeletedEvent(data),
4292
+ "feeds.feed_group.restored": (data) => decoders.FeedGroupRestoredEvent(data),
4245
4293
  "feeds.feed_member.added": (data) => decoders.FeedMemberAddedEvent(data),
4246
4294
  "feeds.feed_member.removed": (data) => decoders.FeedMemberRemovedEvent(data),
4247
4295
  "feeds.feed_member.updated": (data) => decoders.FeedMemberUpdatedEvent(data),
@@ -4262,8 +4310,8 @@ const eventDecoderMapping = {
4262
4310
  "moderation.mark_reviewed": (data) => decoders.ModerationMarkReviewedEvent(data),
4263
4311
  "user.banned": (data) => decoders.UserBannedEvent(data),
4264
4312
  "user.deactivated": (data) => decoders.UserDeactivatedEvent(data),
4265
- "user.muted": (data) => decoders.UserMutedEvent(data),
4266
4313
  "user.reactivated": (data) => decoders.UserReactivatedEvent(data),
4314
+ "user.unbanned": (data) => decoders.UserUnbannedEvent(data),
4267
4315
  "user.updated": (data) => decoders.UserUpdatedEvent(data)
4268
4316
  };
4269
4317
  const decodeWSEvent = (data) => {
@@ -4489,6 +4537,7 @@ class ModerationApi {
4489
4537
  delete_message: request?.delete_message,
4490
4538
  delete_reaction: request?.delete_reaction,
4491
4539
  delete_user: request?.delete_user,
4540
+ flag: request?.flag,
4492
4541
  mark_reviewed: request?.mark_reviewed,
4493
4542
  reject_appeal: request?.reject_appeal,
4494
4543
  restore: request?.restore,
@@ -4510,8 +4559,6 @@ class ModerationApi {
4510
4559
  }
4511
4560
  class ModerationClient extends ModerationApi {
4512
4561
  }
4513
- const isPollUpdatedEvent = (e) => e.type === "feeds.poll.updated";
4514
- const isPollClosedEventEvent = (e) => e.type === "feeds.poll.closed";
4515
4562
  const isVoteAnswer = (vote) => !!vote?.answer_text;
4516
4563
  class StreamPoll {
4517
4564
  constructor({ client, poll }) {
@@ -4543,7 +4590,10 @@ class StreamPoll {
4543
4590
  };
4544
4591
  this.handlePollUpdated = (event) => {
4545
4592
  if (event.poll?.id && event.poll.id !== this.id) return;
4546
- if (!isPollUpdatedEvent(event)) return;
4593
+ const currentState = this.data;
4594
+ if (currentState.updated_at && event.poll.updated_at && event.poll.updated_at <= currentState.updated_at) {
4595
+ return;
4596
+ }
4547
4597
  const { id, ...pollData } = event.poll;
4548
4598
  this.state.partialNext({
4549
4599
  ...pollData,
@@ -4552,7 +4602,8 @@ class StreamPoll {
4552
4602
  };
4553
4603
  this.handlePollClosed = (event) => {
4554
4604
  if (event.poll?.id && event.poll.id !== this.id) return;
4555
- if (!isPollClosedEventEvent(event)) return;
4605
+ const currentState = this.data;
4606
+ if (currentState.is_closed) return;
4556
4607
  this.state.partialNext({
4557
4608
  is_closed: true,
4558
4609
  last_activity_at: new Date(event.created_at)
@@ -4873,7 +4924,7 @@ const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
4873
4924
  return result;
4874
4925
  };
4875
4926
  const Constants = {
4876
- DEFAULT_COMMENT_PAGINATION: "first"
4927
+ DEFAULT_COMMENT_PAGINATION: "last"
4877
4928
  };
4878
4929
  const isFollowResponse = (data) => {
4879
4930
  return "source_feed" in data && "target_feed" in data;
@@ -5164,8 +5215,21 @@ function handleCommentAdded(payload, fromWs) {
5164
5215
  return currentState;
5165
5216
  }
5166
5217
  const newComments = entityState?.comments ? [...entityState.comments] : [];
5167
- if (entityState.pagination?.sort === "last") {
5218
+ const sort = entityState.pagination?.sort;
5219
+ const hasMorePages = entityState.pagination?.next !== void 0;
5220
+ const isFromCurrentUser = eventTriggeredByConnectedUser.call(this, payload);
5221
+ if (sort === "last") {
5168
5222
  newComments.unshift(comment);
5223
+ } else if (sort === "first") {
5224
+ if (isFromCurrentUser) {
5225
+ newComments.push(comment);
5226
+ } else {
5227
+ if (!hasMorePages) {
5228
+ newComments.push(comment);
5229
+ } else {
5230
+ return currentState;
5231
+ }
5232
+ }
5169
5233
  } else {
5170
5234
  newComments.push(comment);
5171
5235
  }
@@ -6561,6 +6625,7 @@ const _Feed = class _Feed extends FeedApi {
6561
6625
  "feeds.feed.updated": handleFeedUpdated.bind(this),
6562
6626
  "feeds.feed_group.changed": _Feed.noop,
6563
6627
  "feeds.feed_group.deleted": _Feed.noop,
6628
+ "feeds.feed_group.restored": _Feed.noop,
6564
6629
  "feeds.follow.created": handleFollowCreated.bind(this),
6565
6630
  "feeds.follow.deleted": handleFollowDeleted.bind(this),
6566
6631
  "feeds.follow.updated": handleFollowUpdated.bind(this),
@@ -6589,11 +6654,11 @@ const _Feed = class _Feed extends FeedApi {
6589
6654
  "app.updated": _Feed.noop,
6590
6655
  "user.banned": _Feed.noop,
6591
6656
  "user.deactivated": _Feed.noop,
6592
- "user.muted": _Feed.noop,
6593
6657
  "user.reactivated": _Feed.noop,
6594
6658
  "user.updated": _Feed.noop,
6595
6659
  "feeds.activity.feedback": handleActivityFeedback.bind(this),
6596
- "feeds.activity.restored": _Feed.noop
6660
+ "feeds.activity.restored": _Feed.noop,
6661
+ "user.unbanned": _Feed.noop
6597
6662
  };
6598
6663
  this.eventDispatcher = new EventDispatcher();
6599
6664
  this.on = this.eventDispatcher.on;
@@ -6643,7 +6708,9 @@ const _Feed = class _Feed extends FeedApi {
6643
6708
  const { last_get_or_create_request_config } = this.state.getLatestValue();
6644
6709
  if (last_get_or_create_request_config?.watch) {
6645
6710
  this.inProgressGetOrCreate = void 0;
6646
- await withRetry(() => this.getOrCreate(last_get_or_create_request_config));
6711
+ await withRetry(
6712
+ () => this.getOrCreate(last_get_or_create_request_config)
6713
+ );
6647
6714
  }
6648
6715
  }
6649
6716
  async getOrCreate(request) {
@@ -6785,6 +6852,16 @@ const _Feed = class _Feed extends FeedApi {
6785
6852
  ({ replies: _r, meta: _m, ...restOfTheCommentResponse }) => restOfTheCommentResponse
6786
6853
  );
6787
6854
  const existingComments = newCommentsByEntityId[entityId]?.comments;
6855
+ let comments = existingComments ? uniqueArrayMerge(
6856
+ existingComments,
6857
+ newComments,
6858
+ (comment) => comment.id
6859
+ ) : newComments;
6860
+ if (data.sort === "first" && existingComments && existingComments.length > 0) {
6861
+ comments = [...comments].sort(
6862
+ (a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime()
6863
+ );
6864
+ }
6788
6865
  newCommentsByEntityId[entityId] = {
6789
6866
  ...newCommentsByEntityId[entityId],
6790
6867
  entity_parent_id: item.entityParentId,
@@ -6793,11 +6870,7 @@ const _Feed = class _Feed extends FeedApi {
6793
6870
  next: item.next,
6794
6871
  sort: data.sort
6795
6872
  },
6796
- comments: existingComments ? uniqueArrayMerge(
6797
- existingComments,
6798
- newComments,
6799
- (comment) => comment.id
6800
- ) : newComments
6873
+ comments
6801
6874
  };
6802
6875
  }
6803
6876
  return {
@@ -7555,13 +7628,34 @@ class FeedsClient extends FeedsApi {
7555
7628
  this.devToken = (userId) => {
7556
7629
  return streamDevToken(userId);
7557
7630
  };
7631
+ this.updatePoll = async (request) => {
7632
+ const poll = this.pollFromState(request.id);
7633
+ const response = await super.updatePoll(request);
7634
+ if (response.poll && poll) {
7635
+ poll.handlePollUpdated({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7636
+ }
7637
+ return response;
7638
+ };
7639
+ this.updatePollPartial = async (request) => {
7640
+ const poll = this.pollFromState(request.poll_id);
7641
+ const response = await super.updatePollPartial(request);
7642
+ if (response.poll && poll) {
7643
+ poll.handlePollUpdated({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7644
+ }
7645
+ return response;
7646
+ };
7558
7647
  this.closePoll = async (request) => {
7559
- return await this.updatePollPartial({
7648
+ const poll = this.pollFromState(request.poll_id);
7649
+ const response = await super.updatePollPartial({
7560
7650
  poll_id: request.poll_id,
7561
7651
  set: {
7562
7652
  is_closed: true
7563
7653
  }
7564
7654
  });
7655
+ if (response.poll && poll) {
7656
+ poll.handlePollClosed({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7657
+ }
7658
+ return response;
7565
7659
  };
7566
7660
  this.castPollVote = async (request) => {
7567
7661
  const poll = this.pollFromState(request.poll_id);
@@ -8170,4 +8264,4 @@ export {
8170
8264
  shouldUpdateState as s,
8171
8265
  uniqueArrayMerge as u
8172
8266
  };
8173
- //# sourceMappingURL=feeds-client-D-EFo20w.mjs.map
8267
+ //# sourceMappingURL=feeds-client-BHpmg4_E.mjs.map