@stream-io/feeds-client 0.1.9 → 0.1.11

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 (167) hide show
  1. package/@react-bindings/hooks/search-state-hooks/index.ts +3 -0
  2. package/@react-bindings/index.ts +5 -0
  3. package/CHANGELOG.md +20 -0
  4. package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
  5. package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
  6. package/dist/@react-bindings/contexts/StreamSearchContext.d.ts +12 -0
  7. package/dist/@react-bindings/contexts/StreamSearchResultsContext.d.ts +12 -0
  8. package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
  9. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
  10. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
  11. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
  12. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
  13. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
  14. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
  15. package/dist/@react-bindings/hooks/search-state-hooks/index.d.ts +3 -0
  16. package/dist/@react-bindings/hooks/search-state-hooks/useSearchQuery.d.ts +4 -0
  17. package/dist/@react-bindings/hooks/search-state-hooks/useSearchResult.d.ts +8 -0
  18. package/dist/@react-bindings/hooks/search-state-hooks/useSearchSources.d.ts +4 -0
  19. package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
  20. package/dist/@react-bindings/index.d.ts +5 -0
  21. package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
  22. package/dist/@react-bindings/wrappers/StreamSearch.d.ts +12 -0
  23. package/dist/@react-bindings/wrappers/StreamSearchResults.d.ts +12 -0
  24. package/dist/index-react-bindings.browser.cjs +1669 -1529
  25. package/dist/index-react-bindings.browser.cjs.map +1 -1
  26. package/dist/index-react-bindings.browser.js +1661 -1530
  27. package/dist/index-react-bindings.browser.js.map +1 -1
  28. package/dist/index-react-bindings.node.cjs +1669 -1529
  29. package/dist/index-react-bindings.node.cjs.map +1 -1
  30. package/dist/index-react-bindings.node.js +1661 -1530
  31. package/dist/index-react-bindings.node.js.map +1 -1
  32. package/dist/index.browser.cjs +1615 -1640
  33. package/dist/index.browser.cjs.map +1 -1
  34. package/dist/index.browser.js +1613 -1641
  35. package/dist/index.browser.js.map +1 -1
  36. package/dist/index.d.ts +2 -2
  37. package/dist/index.node.cjs +1615 -1640
  38. package/dist/index.node.cjs.map +1 -1
  39. package/dist/index.node.js +1613 -1641
  40. package/dist/index.node.js.map +1 -1
  41. package/dist/src/common/ActivitySearchSource.d.ts +1 -1
  42. package/dist/src/common/BaseSearchSource.d.ts +3 -1
  43. package/dist/src/common/FeedSearchSource.d.ts +7 -3
  44. package/dist/src/common/Poll.d.ts +1 -1
  45. package/dist/src/common/SearchController.d.ts +2 -0
  46. package/dist/src/common/UserSearchSource.d.ts +1 -1
  47. package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
  48. package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
  49. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
  50. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
  51. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
  52. package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
  53. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
  54. package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
  55. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
  56. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
  57. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
  58. package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
  59. package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
  60. package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
  61. package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
  62. package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
  63. package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
  64. package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
  65. package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
  66. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
  67. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
  68. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
  69. package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
  70. package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
  71. package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
  72. package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
  73. package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
  74. package/dist/src/feed/event-handlers/index.d.ts +7 -0
  75. package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
  76. package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
  77. package/dist/src/{Feed.d.ts → feed/feed.d.ts} +15 -34
  78. package/dist/src/feed/index.d.ts +2 -0
  79. package/dist/src/{FeedsClient.d.ts → feeds-client.d.ts} +6 -5
  80. package/dist/src/gen/models/index.d.ts +5 -0
  81. package/dist/src/gen-imports.d.ts +1 -1
  82. package/dist/src/test-utils/index.d.ts +1 -0
  83. package/dist/src/test-utils/response-generators.d.ts +9 -0
  84. package/dist/src/types-internal.d.ts +7 -0
  85. package/dist/src/types.d.ts +1 -1
  86. package/dist/src/utils/check-has-another-page.d.ts +1 -0
  87. package/dist/src/utils/constants.d.ts +3 -0
  88. package/dist/src/utils/index.d.ts +5 -0
  89. package/dist/src/utils/state-update-queue.d.ts +6 -0
  90. package/dist/src/utils/type-assertions.d.ts +7 -0
  91. package/dist/src/utils/unique-array-merge.d.ts +1 -0
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/index.ts +2 -2
  94. package/package.json +2 -1
  95. package/src/common/ActivitySearchSource.ts +6 -16
  96. package/src/common/BaseSearchSource.ts +9 -9
  97. package/src/common/FeedSearchSource.ts +22 -67
  98. package/src/common/Poll.ts +1 -1
  99. package/src/common/SearchController.ts +2 -0
  100. package/src/common/UserSearchSource.ts +10 -62
  101. package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
  102. package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
  103. package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
  104. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
  105. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
  106. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
  107. package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
  108. package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
  109. package/src/feed/event-handlers/activity/index.ts +6 -0
  110. package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
  111. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
  112. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
  113. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
  114. package/src/feed/event-handlers/bookmark/index.ts +3 -0
  115. package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
  116. package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
  117. package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
  118. package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
  119. package/src/feed/event-handlers/comment/index.ts +4 -0
  120. package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
  121. package/src/feed/event-handlers/feed/index.ts +1 -0
  122. package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
  123. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
  124. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
  125. package/src/feed/event-handlers/feed-member/index.ts +3 -0
  126. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +246 -0
  127. package/src/feed/event-handlers/follow/handle-follow-created.ts +93 -0
  128. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +264 -0
  129. package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
  130. package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
  131. package/src/feed/event-handlers/follow/handle-follow-updated.ts +88 -0
  132. package/src/feed/event-handlers/follow/index.ts +3 -0
  133. package/src/feed/event-handlers/index.ts +7 -0
  134. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
  135. package/src/feed/event-handlers/notification-feed/index.ts +1 -0
  136. package/src/{Feed.ts → feed/feed.ts} +72 -483
  137. package/src/feed/index.ts +2 -0
  138. package/src/{FeedsClient.ts → feeds-client.ts} +26 -8
  139. package/src/gen/model-decoders/decoders.ts +7 -0
  140. package/src/gen/models/index.ts +10 -0
  141. package/src/gen-imports.ts +1 -1
  142. package/src/test-utils/index.ts +1 -0
  143. package/src/test-utils/response-generators.ts +102 -0
  144. package/src/types-internal.ts +11 -0
  145. package/src/types.ts +1 -1
  146. package/src/utils/check-has-another-page.ts +6 -0
  147. package/src/utils/constants.ts +3 -0
  148. package/src/utils/index.ts +5 -0
  149. package/src/{state-updates → utils}/state-update-queue.test.ts +6 -6
  150. package/src/utils/state-update-queue.ts +42 -0
  151. package/src/utils/type-assertions.ts +22 -0
  152. package/src/{utils.test.ts → utils/unique-array-merge.test.ts} +7 -3
  153. package/src/utils/unique-array-merge.ts +19 -0
  154. package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
  155. package/dist/src/state-updates/activity-utils.d.ts +0 -13
  156. package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
  157. package/dist/src/state-updates/follow-utils.d.ts +0 -19
  158. package/dist/src/state-updates/state-update-queue.d.ts +0 -15
  159. package/dist/src/utils.d.ts +0 -10
  160. package/src/state-updates/activity-reaction-utils.ts +0 -107
  161. package/src/state-updates/bookmark-utils.ts +0 -167
  162. package/src/state-updates/follow-utils.test.ts +0 -552
  163. package/src/state-updates/follow-utils.ts +0 -126
  164. package/src/state-updates/state-update-queue.ts +0 -35
  165. package/src/utils.ts +0 -48
  166. /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
  167. /package/src/{ModerationClient.ts → moderation-client.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { BaseSearchSource } from './BaseSearchSource';
2
2
  import type { SearchSourceOptions } from './BaseSearchSource';
3
- import { FeedsClient } from '../FeedsClient';
3
+ import { FeedsClient } from '../feeds-client';
4
4
  import { ActivityResponse } from '../gen/models';
5
5
  export declare class ActivitySearchSource extends BaseSearchSource<ActivityResponse> {
6
6
  readonly type: "activity";
@@ -1,6 +1,6 @@
1
1
  import { StateStore } from './StateStore';
2
2
  import { type DebouncedFunc } from './utils';
3
- export type SearchSourceType = 'channels' | 'users' | 'messages' | (string & {});
3
+ export type SearchSourceType = 'activity' | 'user' | 'feed' | (string & {});
4
4
  export type QueryReturnValue<T> = {
5
5
  items: T[];
6
6
  next?: string | null;
@@ -44,10 +44,12 @@ export type SearchSourceOptions = {
44
44
  /** The number of milliseconds to debounce the search query. The default interval is 300ms. */
45
45
  debounceMs?: number;
46
46
  pageSize?: number;
47
+ allowEmptySearchString?: boolean;
47
48
  };
48
49
  export declare abstract class BaseSearchSource<T> implements SearchSource<T> {
49
50
  state: StateStore<SearchSourceState<T>>;
50
51
  protected pageSize: number;
52
+ protected allowEmptySearchString: boolean;
51
53
  abstract readonly type: SearchSourceType;
52
54
  protected searchDebounced: DebouncedExecQueryFunction;
53
55
  protected constructor(options?: SearchSourceOptions);
@@ -1,11 +1,15 @@
1
1
  import { BaseSearchSource } from './BaseSearchSource';
2
2
  import type { SearchSourceOptions } from './BaseSearchSource';
3
- import { FeedsClient } from '../FeedsClient';
4
- import { Feed } from '../Feed';
3
+ import { FeedsClient } from '../feeds-client';
4
+ import { Feed } from '../feed';
5
+ export type FeedSearchSourceOptions = SearchSourceOptions & {
6
+ groupId?: string;
7
+ };
5
8
  export declare class FeedSearchSource extends BaseSearchSource<Feed> {
6
9
  readonly type: "feed";
7
10
  private readonly client;
8
- constructor(client: FeedsClient, options?: SearchSourceOptions);
11
+ private readonly feedGroupId?;
12
+ constructor(client: FeedsClient, options?: FeedSearchSourceOptions);
9
13
  protected query(searchQuery: string): Promise<{
10
14
  items: never[];
11
15
  next?: undefined;
@@ -1,5 +1,5 @@
1
1
  import { StateStore } from './StateStore';
2
- import type { FeedsClient } from '../FeedsClient';
2
+ import type { FeedsClient } from '../feeds-client';
3
3
  import type { PollVote, QueryPollVotesRequest, PollUpdatedFeedEvent, PollClosedFeedEvent, PollVoteCastedFeedEvent, PollVoteChangedFeedEvent, PollVoteRemovedFeedEvent, Poll as PollType } from '../gen/models';
4
4
  export declare const isVoteAnswer: (vote: PollVote) => boolean;
5
5
  export type PollAnswersQueryParams = QueryPollVotesRequest & {
@@ -17,6 +17,8 @@ export declare class SearchController {
17
17
  /**
18
18
  * Not intended for direct use by integrators, might be removed without notice resulting in
19
19
  * broken integrations.
20
+ *
21
+ * @internal
20
22
  */
21
23
  _internalState: StateStore<InternalSearchControllerState>;
22
24
  state: StateStore<SearchControllerState>;
@@ -1,6 +1,6 @@
1
1
  import { BaseSearchSource } from './BaseSearchSource';
2
2
  import type { SearchSourceOptions } from './BaseSearchSource';
3
- import { FeedsClient } from '../FeedsClient';
3
+ import { FeedsClient } from '../feeds-client';
4
4
  import { UserResponse } from '../gen/models';
5
5
  export declare class UserSearchSource extends BaseSearchSource<UserResponse> {
6
6
  readonly type: "user";
@@ -57,9 +57,9 @@ export declare class StableWSConnection {
57
57
  private readonly clientId;
58
58
  constructor(config: WSConfig, tokenManager: TokenManager, connectionIdManager: ConnectionIdManager, decoders?: Array<(event: any) => any>);
59
59
  _log: (msg: string, extra?: any, level?: LogLevel) => void;
60
- on: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | "network.changed", handler: (event: import("../../types").FeedsEvent) => void) => () => void;
61
- off: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | "network.changed", handler: (event: import("../../types").FeedsEvent) => void) => void;
62
- offAll: (eventName?: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | "network.changed" | undefined) => void;
60
+ on: (eventName: "network.changed" | "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed", handler: (event: import("../../types").FeedsEvent) => void) => () => void;
61
+ off: (eventName: "network.changed" | "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed", handler: (event: import("../../types").FeedsEvent) => void) => void;
62
+ offAll: (eventName?: "network.changed" | "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | undefined) => void;
63
63
  /**
64
64
  * connect - Connect to the WS URL
65
65
  * the default 15s timeout allows between 2~3 tries
@@ -0,0 +1,7 @@
1
+ import { Feed } from '../../../feed';
2
+ import { ActivityResponse } from '../../../gen/models';
3
+ import { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const addActivitiesToState: (newActivities: ActivityResponse[], activities: ActivityResponse[] | undefined, position: "start" | "end") => UpdateStateResult<{
5
+ activities: ActivityResponse[];
6
+ }>;
7
+ export declare function handleActivityAdded(this: Feed, event: EventPayload<'feeds.activity.added'>): void;
@@ -0,0 +1,8 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityResponse } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
+ export declare const removeActivityFromState: (activityResponse: ActivityResponse, activities: ActivityResponse[]) => {
5
+ changed: boolean;
6
+ activities: ActivityResponse[];
7
+ };
8
+ export declare function handleActivityDeleted(this: Feed, event: EventPayload<'feeds.activity.deleted'>): void;
@@ -0,0 +1,8 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityReactionAddedEvent, ActivityResponse } from '../../../gen/models';
3
+ import type { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const addReactionToActivity: (event: ActivityReactionAddedEvent, activity: ActivityResponse, isCurrentUser: boolean) => UpdateStateResult<ActivityResponse>;
5
+ export declare const addReactionToActivities: (event: ActivityReactionAddedEvent, activities: ActivityResponse[] | undefined, isCurrentUser: boolean) => UpdateStateResult<{
6
+ activities: ActivityResponse[];
7
+ }>;
8
+ export declare function handleActivityReactionAdded(this: Feed, event: EventPayload<'feeds.activity.reaction.added'>): void;
@@ -0,0 +1,8 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityReactionDeletedEvent, ActivityResponse } from '../../../gen/models';
3
+ import type { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const removeReactionFromActivity: (event: ActivityReactionDeletedEvent, activity: ActivityResponse, isCurrentUser: boolean) => UpdateStateResult<ActivityResponse>;
5
+ export declare const removeReactionFromActivities: (event: ActivityReactionDeletedEvent, activities: ActivityResponse[] | undefined, isCurrentUser: boolean) => UpdateStateResult<{
6
+ activities: ActivityResponse[];
7
+ }>;
8
+ export declare function handleActivityReactionDeleted(this: Feed, event: EventPayload<'feeds.activity.reaction.deleted'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleActivityRemovedFromFeed(this: Feed, event: EventPayload<'feeds.activity.removed_from_feed'>): void;
@@ -0,0 +1,8 @@
1
+ import { Feed } from '../../../feed';
2
+ import { ActivityResponse } from '../../../gen/models';
3
+ import { EventPayload } from '../../../types-internal';
4
+ export declare const updateActivityInState: (updatedActivityResponse: ActivityResponse, activities: ActivityResponse[], replaceCompletely?: boolean) => {
5
+ changed: boolean;
6
+ activities: ActivityResponse[];
7
+ };
8
+ export declare function handleActivityUpdated(this: Feed, event: EventPayload<'feeds.activity.updated'>): void;
@@ -0,0 +1,6 @@
1
+ export * from './handle-activity-added';
2
+ export * from './handle-activity-deleted';
3
+ export * from './handle-activity-removed-from-feed';
4
+ export * from './handle-activity-updated';
5
+ export * from './handle-activity-reaction-added';
6
+ export * from './handle-activity-reaction-deleted';
@@ -0,0 +1,8 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityResponse, BookmarkAddedEvent } from '../../../gen/models';
3
+ import type { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const addBookmarkToActivity: (event: BookmarkAddedEvent, activity: ActivityResponse, isCurrentUser: boolean) => UpdateStateResult<ActivityResponse>;
5
+ export declare const addBookmarkToActivities: (event: BookmarkAddedEvent, activities: ActivityResponse[] | undefined, isCurrentUser: boolean) => UpdateStateResult<{
6
+ activities: ActivityResponse[];
7
+ }>;
8
+ export declare function handleBookmarkAdded(this: Feed, event: EventPayload<'feeds.bookmark.added'>): void;
@@ -0,0 +1,9 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityResponse, BookmarkDeletedEvent, BookmarkResponse } from '../../../gen/models';
3
+ import type { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const isSameBookmark: (bookmark1: BookmarkResponse, bookmark2: BookmarkResponse) => boolean;
5
+ export declare const removeBookmarkFromActivities: (event: BookmarkDeletedEvent, activities: ActivityResponse[] | undefined, isCurrentUser: boolean) => UpdateStateResult<{
6
+ activities: ActivityResponse[];
7
+ }>;
8
+ export declare const removeBookmarkFromActivity: (event: BookmarkDeletedEvent, activity: ActivityResponse, isCurrentUser: boolean) => UpdateStateResult<ActivityResponse>;
9
+ export declare function handleBookmarkDeleted(this: Feed, event: EventPayload<'feeds.bookmark.deleted'>): void;
@@ -0,0 +1,8 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { ActivityResponse, BookmarkUpdatedEvent } from '../../../gen/models';
3
+ import type { EventPayload, UpdateStateResult } from '../../../types-internal';
4
+ export declare const updateBookmarkInActivity: (event: BookmarkUpdatedEvent, activity: ActivityResponse, isCurrentUser: boolean) => UpdateStateResult<ActivityResponse>;
5
+ export declare const updateBookmarkInActivities: (event: BookmarkUpdatedEvent, activities: ActivityResponse[] | undefined, isCurrentUser: boolean) => UpdateStateResult<{
6
+ activities: ActivityResponse[];
7
+ }>;
8
+ export declare function handleBookmarkUpdated(this: Feed, event: EventPayload<'feeds.bookmark.updated'>): void;
@@ -0,0 +1,3 @@
1
+ export * from './handle-bookmark-added';
2
+ export * from './handle-bookmark-deleted';
3
+ export * from './handle-bookmark-updated';
@@ -0,0 +1,3 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { EventPayload } from '../../../types-internal';
3
+ export declare function handleCommentAdded(this: Feed, event: EventPayload<'feeds.comment.added'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleCommentDeleted(this: Feed, { comment }: EventPayload<'feeds.comment.deleted'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleCommentReaction(this: Feed, event: EventPayload<'feeds.comment.reaction.added' | 'feeds.comment.reaction.deleted'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleCommentUpdated(this: Feed, event: EventPayload<'feeds.comment.updated'>): void;
@@ -0,0 +1,4 @@
1
+ export * from './handle-comment-added';
2
+ export * from './handle-comment-deleted';
3
+ export * from './handle-comment-updated';
4
+ export * from './handle-comment-reaction';
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleFeedUpdated(this: Feed, event: EventPayload<'feeds.feed.updated'>): void;
@@ -0,0 +1 @@
1
+ export * from './handle-feed-updated';
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleFeedMemberAdded(this: Feed, event: EventPayload<'feeds.feed_member.added'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleFeedMemberRemoved(this: Feed, event: EventPayload<'feeds.feed_member.removed'>): void;
@@ -0,0 +1,3 @@
1
+ import { Feed } from '../../../feed';
2
+ import { EventPayload } from '../../../types-internal';
3
+ export declare function handleFeedMemberUpdated(this: Feed, event: EventPayload<'feeds.feed_member.updated'>): void;
@@ -0,0 +1,3 @@
1
+ export * from './handle-feed-member-added';
2
+ export * from './handle-feed-member-updated';
3
+ export * from './handle-feed-member-removed';
@@ -0,0 +1,7 @@
1
+ import type { Feed, FeedState } from '../../../feed';
2
+ import type { FollowResponse } from '../../../gen/models';
3
+ import type { EventPayload, PartializeAllBut, UpdateStateResult } from '../../../types-internal';
4
+ export declare const updateStateFollowCreated: (follow: FollowResponse, currentState: FeedState, currentFeedId: string, connectedUserId?: string) => UpdateStateResult<{
5
+ data: FeedState;
6
+ }>;
7
+ export declare function handleFollowCreated(this: Feed, eventOrResponse: PartializeAllBut<EventPayload<'feeds.follow.created'>, 'follow'>): void;
@@ -0,0 +1,7 @@
1
+ import type { Feed, FeedState } from '../../../feed';
2
+ import type { FollowResponse } from '../../../gen/models';
3
+ import type { EventPayload, PartializeAllBut, UpdateStateResult } from '../../../types-internal';
4
+ export declare const updateStateFollowDeleted: (follow: FollowResponse, currentState: FeedState, currentFeedId: string, connectedUserId?: string) => UpdateStateResult<{
5
+ data: FeedState;
6
+ }>;
7
+ export declare function handleFollowDeleted(this: Feed, eventOrResponse: PartializeAllBut<EventPayload<'feeds.follow.deleted'>, 'follow'>): void;
@@ -0,0 +1,3 @@
1
+ import type { Feed } from '../../../feed';
2
+ import { EventPayload, PartializeAllBut } from '../../../types-internal';
3
+ export declare function handleFollowUpdated(this: Feed, eventOrResponse: PartializeAllBut<EventPayload<'feeds.follow.updated'>, 'follow'>): void;
@@ -0,0 +1,3 @@
1
+ export * from './handle-follow-created';
2
+ export * from './handle-follow-deleted';
3
+ export * from './handle-follow-updated';
@@ -0,0 +1,7 @@
1
+ export * from './follow';
2
+ export * from './comment';
3
+ export * from './feed-member';
4
+ export * from './bookmark';
5
+ export * from './activity';
6
+ export * from './feed';
7
+ export * from './notification-feed';
@@ -0,0 +1,3 @@
1
+ import type { Feed } from '../../../feed';
2
+ import type { EventPayload } from '../../../types-internal';
3
+ export declare function handleNotificationFeedUpdated(this: Feed, event: EventPayload<'feeds.notification_feed.updated'>): void;
@@ -0,0 +1 @@
1
+ export * from './handle-notification-feed-updated';
@@ -1,10 +1,10 @@
1
- import { ActivityRequest, FeedResponse, GetOrCreateFeedRequest, GetOrCreateFeedResponse, QueryFollowsRequest, WSEvent, ActivityResponse, CommentResponse, SingleFollowRequest, QueryFeedMembersRequest, SortParamRequest, FollowResponse } from './gen/models';
2
- import { StateStore } from './common/StateStore';
3
- import { EventDispatcher } from './common/EventDispatcher';
4
- import { FeedApi } from './gen/feeds/FeedApi';
5
- import { FeedsClient } from './FeedsClient';
6
- import { StreamResponse } from './gen-imports';
7
- import type { ActivityIdOrCommentId, GetCommentsRepliesRequest, GetCommentsRequest, LoadingStates, PagerResponseWithLoadingStates } from './types';
1
+ import { ActivityRequest, FeedResponse, GetOrCreateFeedRequest, GetOrCreateFeedResponse, QueryFollowsRequest, WSEvent, ActivityResponse, CommentResponse, SingleFollowRequest, QueryFeedMembersRequest, SortParamRequest } from '../gen/models';
2
+ import { StreamResponse } from '../gen-imports';
3
+ import { StateStore } from '../common/StateStore';
4
+ import { EventDispatcher } from '../common/EventDispatcher';
5
+ import { FeedApi } from '../gen/feeds/FeedApi';
6
+ import { FeedsClient } from '../feeds-client';
7
+ import type { ActivityIdOrCommentId, GetCommentsRepliesRequest, GetCommentsRequest, LoadingStates, PagerResponseWithLoadingStates } from '../types';
8
8
  export type FeedState = Omit<Partial<GetOrCreateFeedResponse & FeedResponse>, 'feed' | 'duration'> & {
9
9
  /**
10
10
  * True when loading state using `getOrCreate`
@@ -72,31 +72,15 @@ export type FeedState = Omit<Partial<GetOrCreateFeedResponse & FeedResponse>, 'f
72
72
  export declare class Feed extends FeedApi {
73
73
  readonly state: StateStore<FeedState>;
74
74
  private static readonly noop;
75
- private readonly stateUpdateQueue;
75
+ protected readonly stateUpdateQueue: Set<string>;
76
76
  private readonly eventHandlers;
77
77
  protected eventDispatcher: EventDispatcher<WSEvent['type'], WSEvent>;
78
78
  constructor(client: FeedsClient, groupId: 'user' | 'timeline' | (string & {}), id: string, data?: FeedResponse, watch?: boolean);
79
- private readonly client;
79
+ protected readonly client: FeedsClient;
80
80
  get fid(): string;
81
81
  get currentState(): FeedState;
82
- private handleCommentReactionEvent;
83
82
  synchronize(): Promise<void>;
84
83
  getOrCreate(request?: GetOrCreateFeedRequest): Promise<StreamResponse<GetOrCreateFeedResponse>>;
85
- /**
86
- * @internal
87
- */
88
- handleFollowCreated(follow: FollowResponse): void;
89
- /**
90
- * @internal
91
- */
92
- handleFollowDeleted(follow: FollowResponse | {
93
- source_feed: {
94
- fid: string;
95
- };
96
- target_feed: {
97
- fid: string;
98
- };
99
- }): void;
100
84
  /**
101
85
  * @internal
102
86
  */
@@ -105,13 +89,10 @@ export declare class Feed extends FeedApi {
105
89
  * @internal
106
90
  */
107
91
  handleWatchStarted(): void;
108
- private handleBookmarkAdded;
109
- private handleBookmarkDeleted;
110
- private handleBookmarkUpdated;
111
92
  /**
112
93
  * Returns index of the provided comment object.
113
94
  */
114
- private getCommentIndex;
95
+ protected getCommentIndex(comment: Pick<CommentResponse, 'object_id' | 'parent_id' | 'id'>, state?: FeedState): number;
115
96
  /**
116
97
  * Load child comments of entity (activity or comment) into the state, if the target entity is comment,
117
98
  * `entityParentId` should be provided (`CommentResponse.parent_id ?? CommentResponse.object_id`).
@@ -129,17 +110,17 @@ export declare class Feed extends FeedApi {
129
110
  *
130
111
  * _Note: Useful only for feeds with `groupId` of `user` value._
131
112
  */
132
- queryFollowers(request: Omit<QueryFollowsRequest, 'filter'>): Promise<StreamResponse<import("./gen/models").QueryFollowsResponse>>;
113
+ queryFollowers(request: Omit<QueryFollowsRequest, 'filter'>): Promise<StreamResponse<import("../gen/models").QueryFollowsResponse>>;
133
114
  /**
134
115
  * Method which queries following of this feed (target feeds of this feed).
135
116
  *
136
117
  * _Note: Useful only for feeds with `groupId` of `timeline` value._
137
118
  */
138
- queryFollowing(request: Omit<QueryFollowsRequest, 'filter'>): Promise<StreamResponse<import("./gen/models").QueryFollowsResponse>>;
139
- follow(feedOrFid: Feed | string, options?: Omit<SingleFollowRequest, 'source' | 'target'>): Promise<StreamResponse<import("./gen/models").SingleFollowResponse>>;
140
- unfollow(feedOrFid: Feed | string): Promise<StreamResponse<import("./gen/models").UnfollowResponse>>;
119
+ queryFollowing(request: Omit<QueryFollowsRequest, 'filter'>): Promise<StreamResponse<import("../gen/models").QueryFollowsResponse>>;
120
+ follow(feedOrFid: Feed | string, options?: Omit<SingleFollowRequest, 'source' | 'target'>): Promise<StreamResponse<import("../gen/models").SingleFollowResponse>>;
121
+ unfollow(feedOrFid: Feed | string): Promise<StreamResponse<import("../gen/models").UnfollowResponse>>;
141
122
  getNextPage(): Promise<StreamResponse<GetOrCreateFeedResponse>>;
142
- addActivity(request: Omit<ActivityRequest, 'fids'>): Promise<StreamResponse<import("./gen/models").AddActivityResponse>>;
123
+ addActivity(request: Omit<ActivityRequest, 'fids'>): Promise<StreamResponse<import("../gen/models").AddActivityResponse>>;
143
124
  on: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated", handler: (event: WSEvent) => void) => () => void;
144
125
  off: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated", handler: (event: WSEvent) => void) => void;
145
126
  handleWSEvent(event: WSEvent): void;
@@ -0,0 +1,2 @@
1
+ export * from './feed';
2
+ export * from './event-handlers';
@@ -1,11 +1,11 @@
1
1
  import { FeedsApi } from './gen/feeds/FeedsApi';
2
- import { ActivityResponse, FileUploadRequest, FollowBatchRequest, ImageUploadRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, SingleFollowRequest, UserRequest } from './gen/models';
2
+ import { ActivityResponse, FileUploadRequest, FollowBatchRequest, ImageUploadRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, SingleFollowRequest, UpdateFollowRequest, UserRequest } from './gen/models';
3
3
  import { FeedsEvent, StreamFile, TokenOrProvider } from './types';
4
4
  import { StateStore } from './common/StateStore';
5
- import { Feed } from './Feed';
6
5
  import { FeedsClientOptions, StreamResponse } from './common/types';
7
- import { ModerationClient } from './ModerationClient';
6
+ import { ModerationClient } from './moderation-client';
8
7
  import { StreamPoll } from './common/Poll';
8
+ import { Feed } from './feed';
9
9
  export type FeedsClientState = {
10
10
  connected_user: OwnUser | undefined;
11
11
  is_ws_connection_healthy: boolean;
@@ -46,10 +46,10 @@ export declare class FeedsClient extends FeedsApi {
46
46
  user_id?: string;
47
47
  }) => Promise<StreamResponse<PollVotesResponse>>;
48
48
  disconnectUser: () => Promise<void>;
49
- on: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | "network.changed", handler: (event: FeedsEvent & {
49
+ on: (eventName: "network.changed" | "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed", handler: (event: FeedsEvent & {
50
50
  fid?: string;
51
51
  }) => void) => () => void;
52
- off: (eventName: "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed" | "network.changed", handler: (event: FeedsEvent & {
52
+ off: (eventName: "network.changed" | "all" | "app.updated" | "feeds.activity.added" | "feeds.activity.deleted" | "feeds.activity.marked" | "feeds.activity.pinned" | "feeds.activity.reaction.added" | "feeds.activity.reaction.deleted" | "feeds.activity.reaction.updated" | "feeds.activity.removed_from_feed" | "feeds.activity.unpinned" | "feeds.activity.updated" | "feeds.bookmark.added" | "feeds.bookmark.deleted" | "feeds.bookmark.updated" | "feeds.bookmark_folder.deleted" | "feeds.bookmark_folder.updated" | "feeds.comment.added" | "feeds.comment.deleted" | "feeds.comment.reaction.added" | "feeds.comment.reaction.deleted" | "feeds.comment.reaction.updated" | "feeds.comment.updated" | "feeds.feed.created" | "feeds.feed.deleted" | "feeds.feed.updated" | "feeds.feed_group.changed" | "feeds.feed_group.deleted" | "feeds.feed_member.added" | "feeds.feed_member.removed" | "feeds.feed_member.updated" | "feeds.follow.created" | "feeds.follow.deleted" | "feeds.follow.updated" | "feeds.notification_feed.updated" | "feeds.poll.closed" | "feeds.poll.deleted" | "feeds.poll.updated" | "feeds.poll.vote_casted" | "feeds.poll.vote_changed" | "feeds.poll.vote_removed" | "health.check" | "user.updated" | "moderation.custom_action" | "moderation.flagged" | "moderation.mark_reviewed" | "user.banned" | "user.deactivated" | "user.muted" | "user.reactivated" | "connection.changed", handler: (event: FeedsEvent & {
53
53
  fid?: string;
54
54
  }) => void) => void;
55
55
  feed: (groupId: string, id: string) => Feed;
@@ -63,6 +63,7 @@ export declare class FeedsClient extends FeedsApi {
63
63
  updateNetworkConnectionStatus: (event: {
64
64
  type: "online" | "offline";
65
65
  } | Event) => void;
66
+ updateFollow(request: UpdateFollowRequest): Promise<StreamResponse<import("./gen/models").UpdateFollowResponse>>;
66
67
  follow(request: SingleFollowRequest): Promise<StreamResponse<import("./gen/models").SingleFollowResponse>>;
67
68
  followBatch(request: FollowBatchRequest): Promise<StreamResponse<import("./gen/models").FollowBatchResponse>>;
68
69
  unfollow(request: SingleFollowRequest): Promise<StreamResponse<import("./gen/models").UnfollowResponse>>;
@@ -2708,9 +2708,13 @@ export interface ReviewQueueItem {
2708
2708
  updated_at: Date;
2709
2709
  actions: ActionLog[];
2710
2710
  bans: Ban[];
2711
+ flag_labels: string[];
2712
+ flag_types: string[];
2711
2713
  flags: Flag[];
2712
2714
  languages: string[];
2715
+ reporter_ids: string[];
2713
2716
  teams: string[];
2717
+ archived_at: NullTime;
2714
2718
  completed_at: NullTime;
2715
2719
  reviewed_at: NullTime;
2716
2720
  activity?: EnrichedActivity;
@@ -3006,6 +3010,7 @@ export interface UnblockUsersResponse {
3006
3010
  }
3007
3011
  export interface UnfollowResponse {
3008
3012
  duration: string;
3013
+ follow: FollowResponse;
3009
3014
  }
3010
3015
  export interface UnpinActivityResponse {
3011
3016
  duration: string;
@@ -1,3 +1,3 @@
1
1
  export type { ApiClient } from './common/ApiClient';
2
2
  export type { StreamResponse } from './common/types';
3
- export { FeedsClient as FeedsApi } from './FeedsClient';
3
+ export { FeedsClient as FeedsApi } from './feeds-client';
@@ -0,0 +1 @@
1
+ export * from './response-generators';
@@ -0,0 +1,9 @@
1
+ import { FeedResponse, FollowResponse, OwnUser, OwnUserResponse, UserResponse } from '../gen/models';
2
+ export declare const getHumanId: () => string;
3
+ export declare const generateUserResponse: (overrides?: Partial<UserResponse>) => UserResponse;
4
+ export declare const generateOwnUserResponse: (overrides?: Partial<OwnUserResponse>) => OwnUserResponse;
5
+ export declare const generateOwnUser: (overrides?: Partial<OwnUser>) => OwnUser;
6
+ export declare const generateFeedResponse: (overrides?: Omit<Partial<FeedResponse>, "created_by" | "fid"> & {
7
+ created_by?: Partial<UserResponse>;
8
+ }) => FeedResponse;
9
+ export declare const generateFollowResponse: (overrides?: Partial<FollowResponse>) => FollowResponse;
@@ -1,4 +1,11 @@
1
+ import { WSEvent } from './gen/models';
1
2
  export type UpdateStateResult<T> = T & {
2
3
  changed: boolean;
3
4
  };
4
5
  export type FromArray<T> = T extends Array<infer L> ? L : never;
6
+ export type EventPayload<T extends WSEvent['type']> = Extract<WSEvent, {
7
+ type: T;
8
+ }>;
9
+ export type PartializeAllBut<T, K extends keyof T> = Pick<T, K> & {
10
+ [key in K]?: T[key];
11
+ };
@@ -2,7 +2,7 @@ import { ConnectionChangedEvent } from './common/real-time/event-models';
2
2
  import { NetworkChangedEvent } from './common/types';
3
3
  import { PagerResponse, WSEvent } from './gen/models';
4
4
  import type { ActivityResponse, CommentResponse } from './gen/models';
5
- import { FeedsClient } from './FeedsClient';
5
+ import { FeedsClient } from './feeds-client';
6
6
  export type FeedsEvent = WSEvent | ConnectionChangedEvent | NetworkChangedEvent;
7
7
  export type ActivityIdOrCommentId = string;
8
8
  export type GetCommentsRequest = Parameters<FeedsClient['getComments']>[0];
@@ -0,0 +1 @@
1
+ export declare const checkHasAnotherPage: <T extends unknown | undefined>(v: T, cursor: string | undefined) => boolean;
@@ -0,0 +1,3 @@
1
+ export declare const Constants: {
2
+ readonly DEFAULT_COMMENT_PAGINATION: "first";
3
+ };
@@ -0,0 +1,5 @@
1
+ export * from './check-has-another-page';
2
+ export * from './unique-array-merge';
3
+ export * from './constants';
4
+ export * from './type-assertions';
5
+ export * from './state-update-queue';
@@ -0,0 +1,6 @@
1
+ export declare const shouldUpdateState: ({ stateUpdateQueueId, stateUpdateQueue, watch, }: {
2
+ stateUpdateQueueId: string;
3
+ stateUpdateQueue: Set<string>;
4
+ watch: boolean;
5
+ }) => boolean;
6
+ export declare function getStateUpdateQueueId(data: object, prefix?: 'deleted' | 'updated' | 'created' | (string & {})): string;
@@ -0,0 +1,7 @@
1
+ import { CommentResponse, FollowResponse } from '../gen/models';
2
+ import { StreamFile } from '../types';
3
+ import { CommentParent } from '../types';
4
+ export declare const isFollowResponse: (data: object) => data is FollowResponse;
5
+ export declare const isCommentResponse: (entity: CommentParent) => entity is CommentResponse;
6
+ export declare const isImageFile: (file: StreamFile) => boolean;
7
+ export declare const isVideoFile: (file: StreamFile) => boolean;
@@ -0,0 +1 @@
1
+ export declare const uniqueArrayMerge: <T>(existingArray: T[], arrayToMerge: T[], getKey: (v: T) => string) => T[];