@stream-io/feeds-client 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/index-react-bindings.browser.cjs +365 -207
  3. package/dist/index-react-bindings.browser.cjs.map +1 -1
  4. package/dist/index-react-bindings.browser.js +365 -207
  5. package/dist/index-react-bindings.browser.js.map +1 -1
  6. package/dist/index-react-bindings.node.cjs +365 -207
  7. package/dist/index-react-bindings.node.cjs.map +1 -1
  8. package/dist/index-react-bindings.node.js +365 -207
  9. package/dist/index-react-bindings.node.js.map +1 -1
  10. package/dist/index.browser.cjs +366 -207
  11. package/dist/index.browser.cjs.map +1 -1
  12. package/dist/index.browser.js +366 -208
  13. package/dist/index.browser.js.map +1 -1
  14. package/dist/index.node.cjs +366 -207
  15. package/dist/index.node.cjs.map +1 -1
  16. package/dist/index.node.js +366 -208
  17. package/dist/index.node.js.map +1 -1
  18. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +12 -3
  19. package/dist/src/feed/event-handlers/activity/handle-activity-pinned.d.ts +3 -0
  20. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +10 -6
  21. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +10 -6
  22. package/dist/src/feed/event-handlers/activity/handle-activity-unpinned.d.ts +3 -0
  23. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +7 -3
  24. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +10 -6
  25. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +10 -6
  26. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +10 -6
  27. package/dist/src/gen/models/index.d.ts +36 -1
  28. package/dist/src/test-utils/response-generators.d.ts +46 -1
  29. package/dist/src/utils/index.d.ts +1 -0
  30. package/dist/src/utils/update-entity-in-array.d.ts +27 -0
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +1 -1
  33. package/src/feed/event-handlers/activity/activity-reaction-utils.test.ts +108 -96
  34. package/src/feed/event-handlers/activity/activity-utils.test.ts +84 -122
  35. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +43 -10
  36. package/src/feed/event-handlers/activity/handle-activity-pinned.test.ts +60 -0
  37. package/src/feed/event-handlers/activity/handle-activity-pinned.ts +30 -0
  38. package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +157 -0
  39. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +82 -40
  40. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +200 -0
  41. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +89 -51
  42. package/src/feed/event-handlers/activity/handle-activity-unpinned.test.ts +94 -0
  43. package/src/feed/event-handlers/activity/handle-activity-unpinned.ts +30 -0
  44. package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +115 -0
  45. package/src/feed/event-handlers/activity/handle-activity-updated.ts +73 -35
  46. package/src/feed/event-handlers/bookmark/bookmark-utils.test.ts +121 -109
  47. package/src/feed/event-handlers/bookmark/handle-bookmark-added.test.ts +178 -0
  48. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +82 -39
  49. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.test.ts +188 -0
  50. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +86 -48
  51. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.test.ts +196 -0
  52. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +83 -44
  53. package/src/gen/model-decoders/decoders.ts +13 -0
  54. package/src/gen/models/index.ts +73 -2
  55. package/src/gen/moderation/ModerationApi.ts +1 -0
  56. package/src/test-utils/response-generators.ts +260 -0
  57. package/src/utils/index.ts +1 -0
  58. package/src/utils/update-entity-in-array.ts +51 -0
@@ -1,8 +1,17 @@
1
1
  import type { Feed } from '../../../feed';
2
- import type { ActivityResponse } from '../../../gen/models';
2
+ import type { ActivityPinResponse, ActivityResponse } from '../../../gen/models';
3
3
  import type { EventPayload } from '../../../types-internal';
4
- export declare const removeActivityFromState: (activityResponse: ActivityResponse, activities: ActivityResponse[]) => {
4
+ export declare const removeActivityFromState: (activityResponse: ActivityResponse, activities: ActivityResponse[] | undefined) => {
5
5
  changed: boolean;
6
- activities: ActivityResponse[];
6
+ activities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const removePinnedActivityFromState: (activityResponse: ActivityResponse, pinnedActivities: ActivityPinResponse[] | undefined) => {
9
+ changed: boolean;
10
+ activities: ActivityPinResponse[];
11
+ pinned_activities?: undefined;
12
+ } | {
13
+ changed: boolean;
14
+ pinned_activities: ActivityPinResponse[] | undefined;
15
+ activities?: undefined;
7
16
  };
8
17
  export declare function handleActivityDeleted(this: Feed, event: EventPayload<'feeds.activity.deleted'>): void;
@@ -0,0 +1,3 @@
1
+ import { EventPayload } from '../../../types-internal';
2
+ import { Feed } from '../../feed';
3
+ export declare function handleActivityPinned(this: Feed, event: EventPayload<'feeds.activity.pinned'>): void;
@@ -1,8 +1,12 @@
1
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
- }>;
2
+ import type { ActivityPinResponse, ActivityReactionAddedEvent, ActivityResponse } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
+ export declare const addReactionToActivities: (event: ActivityReactionAddedEvent, activities: ActivityResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
5
+ changed: boolean;
6
+ entities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const addReactionToPinnedActivities: (event: ActivityReactionAddedEvent, pinnedActivities: ActivityPinResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
9
+ changed: boolean;
10
+ entities: ActivityPinResponse[] | undefined;
11
+ };
8
12
  export declare function handleActivityReactionAdded(this: Feed, event: EventPayload<'feeds.activity.reaction.added'>): void;
@@ -1,8 +1,12 @@
1
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
- }>;
2
+ import { ActivityPinResponse, ActivityReactionDeletedEvent, ActivityResponse } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
+ export declare const removeReactionFromActivities: (event: ActivityReactionDeletedEvent, activities: ActivityResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
5
+ changed: boolean;
6
+ entities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const removeReactionFromPinnedActivities: (event: ActivityReactionDeletedEvent, activities: ActivityPinResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
9
+ changed: boolean;
10
+ entities: ActivityPinResponse[] | undefined;
11
+ };
8
12
  export declare function handleActivityReactionDeleted(this: Feed, event: EventPayload<'feeds.activity.reaction.deleted'>): void;
@@ -0,0 +1,3 @@
1
+ import { EventPayload } from '../../../types-internal';
2
+ import { Feed } from '../../feed';
3
+ export declare function handleActivityUnpinned(this: Feed, event: EventPayload<'feeds.activity.unpinned'>): void;
@@ -1,8 +1,12 @@
1
1
  import { Feed } from '../../../feed';
2
- import { ActivityResponse } from '../../../gen/models';
2
+ import { ActivityPinResponse, ActivityResponse, ActivityUpdatedEvent } from '../../../gen/models';
3
3
  import { EventPayload } from '../../../types-internal';
4
- export declare const updateActivityInState: (updatedActivityResponse: ActivityResponse, activities: ActivityResponse[], replaceCompletely?: boolean) => {
4
+ export declare const updateActivityInState: (event: ActivityUpdatedEvent, activities: ActivityResponse[] | undefined) => {
5
5
  changed: boolean;
6
- activities: ActivityResponse[];
6
+ entities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const updatePinnedActivityInState: (event: ActivityUpdatedEvent, pinnedActivities: ActivityPinResponse[] | undefined) => {
9
+ changed: boolean;
10
+ entities: ActivityPinResponse[] | undefined;
7
11
  };
8
12
  export declare function handleActivityUpdated(this: Feed, event: EventPayload<'feeds.activity.updated'>): void;
@@ -1,8 +1,12 @@
1
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
- }>;
2
+ import type { ActivityPinResponse, ActivityResponse, BookmarkAddedEvent } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
+ export declare const addBookmarkToActivities: (event: BookmarkAddedEvent, activities: ActivityResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
5
+ changed: boolean;
6
+ entities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const addBookmarkToPinnedActivities: (event: BookmarkAddedEvent, pinnedActivities: ActivityPinResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
9
+ changed: boolean;
10
+ entities: ActivityPinResponse[] | undefined;
11
+ };
8
12
  export declare function handleBookmarkAdded(this: Feed, event: EventPayload<'feeds.bookmark.added'>): void;
@@ -1,9 +1,13 @@
1
1
  import type { Feed } from '../../../feed';
2
- import type { ActivityResponse, BookmarkDeletedEvent, BookmarkResponse } from '../../../gen/models';
3
- import type { EventPayload, UpdateStateResult } from '../../../types-internal';
2
+ import type { ActivityPinResponse, ActivityResponse, BookmarkDeletedEvent, BookmarkResponse } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
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>;
5
+ export declare const removeBookmarkFromActivities: (event: BookmarkDeletedEvent, activities: ActivityResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
6
+ changed: boolean;
7
+ entities: ActivityResponse[] | undefined;
8
+ };
9
+ export declare const removeBookmarkFromPinnedActivities: (event: BookmarkDeletedEvent, pinnedActivities: ActivityPinResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
10
+ changed: boolean;
11
+ entities: ActivityPinResponse[] | undefined;
12
+ };
9
13
  export declare function handleBookmarkDeleted(this: Feed, event: EventPayload<'feeds.bookmark.deleted'>): void;
@@ -1,8 +1,12 @@
1
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
- }>;
2
+ import type { ActivityPinResponse, ActivityResponse, BookmarkUpdatedEvent } from '../../../gen/models';
3
+ import type { EventPayload } from '../../../types-internal';
4
+ export declare const updateBookmarkInActivities: (event: BookmarkUpdatedEvent, activities: ActivityResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
5
+ changed: boolean;
6
+ entities: ActivityResponse[] | undefined;
7
+ };
8
+ export declare const updateBookmarkInPinnedActivities: (event: BookmarkUpdatedEvent, pinnedActivities: ActivityPinResponse[] | undefined, eventBelongsToCurrentUser: boolean) => {
9
+ changed: boolean;
10
+ entities: ActivityPinResponse[] | undefined;
11
+ };
8
12
  export declare function handleBookmarkUpdated(this: Feed, event: EventPayload<'feeds.bookmark.updated'>): void;
@@ -379,6 +379,7 @@ export interface AggregatedActivityResponse {
379
379
  }
380
380
  export interface AggregationConfig {
381
381
  format?: string;
382
+ group_size?: number;
382
383
  }
383
384
  export interface AppEventResponse {
384
385
  auto_translation_enabled: boolean;
@@ -839,6 +840,8 @@ export interface Channel {
839
840
  last_campaigns?: string;
840
841
  last_message_at?: Date;
841
842
  member_count?: number;
843
+ message_count?: number;
844
+ message_count_updated_at?: Date;
842
845
  team?: string;
843
846
  active_live_locations?: SharedLocation[];
844
847
  invites?: ChannelMember[];
@@ -852,6 +855,7 @@ export interface ChannelConfig {
852
855
  automod: 'disabled' | 'simple' | 'AI';
853
856
  automod_behavior: 'flag' | 'block' | 'shadow_block';
854
857
  connect_events: boolean;
858
+ count_messages: boolean;
855
859
  created_at: Date;
856
860
  custom_events: boolean;
857
861
  mark_messages_pending: boolean;
@@ -886,6 +890,7 @@ export interface ChannelConfigWithInfo {
886
890
  automod: 'disabled' | 'simple' | 'AI';
887
891
  automod_behavior: 'flag' | 'block' | 'shadow_block';
888
892
  connect_events: boolean;
893
+ count_messages: boolean;
889
894
  created_at: Date;
890
895
  custom_events: boolean;
891
896
  mark_messages_pending: boolean;
@@ -936,6 +941,7 @@ export interface ChannelMember {
936
941
  role?: 'member' | 'moderator' | 'admin' | 'owner';
937
942
  status?: string;
938
943
  user_id?: string;
944
+ deleted_messages?: string[];
939
945
  user?: UserResponse;
940
946
  }
941
947
  export interface ChannelMute {
@@ -1002,6 +1008,7 @@ export interface ChannelResponse {
1002
1008
  hide_messages_before?: Date;
1003
1009
  last_message_at?: Date;
1004
1010
  member_count?: number;
1011
+ message_count?: number;
1005
1012
  mute_expires_at?: Date;
1006
1013
  muted?: boolean;
1007
1014
  team?: string;
@@ -1117,6 +1124,7 @@ export interface ConfigOverrides {
1117
1124
  grants: Record<string, string[]>;
1118
1125
  blocklist?: string;
1119
1126
  blocklist_behavior?: 'flag' | 'block';
1127
+ count_messages?: boolean;
1120
1128
  max_message_length?: number;
1121
1129
  quotes?: boolean;
1122
1130
  reactions?: boolean;
@@ -1140,6 +1148,7 @@ export interface ConfigResponse {
1140
1148
  automod_semantic_filters_config?: AutomodSemanticFiltersConfig;
1141
1149
  automod_toxicity_config?: AutomodToxicityConfig;
1142
1150
  block_list_config?: BlockListConfig;
1151
+ llm_config?: LLMConfig;
1143
1152
  rule_builder_config?: RuleBuilderConfig;
1144
1153
  velocity_filter_config?: VelocityFilterConfig;
1145
1154
  video_call_rule_config?: VideoCallRuleConfig;
@@ -1541,6 +1550,7 @@ export interface FeedMemberResponse {
1541
1550
  invite_accepted_at?: Date;
1542
1551
  invite_rejected_at?: Date;
1543
1552
  custom?: Record<string, any>;
1553
+ membership_level?: MembershipLevelResponse;
1544
1554
  }
1545
1555
  export interface FeedMemberUpdatedEvent {
1546
1556
  created_at: Date;
@@ -2011,6 +2021,18 @@ export interface IngressVideoLayerResponse {
2011
2021
  max_dimension: number;
2012
2022
  min_dimension: number;
2013
2023
  }
2024
+ export interface LLMConfig {
2025
+ enabled: boolean;
2026
+ rules: LLMRule[];
2027
+ async?: boolean;
2028
+ severity_descriptions?: Record<string, string>;
2029
+ }
2030
+ export interface LLMRule {
2031
+ action: 'flag' | 'shadow' | 'remove' | 'bounce' | 'bounce_flag' | 'bounce_remove' | 'keep';
2032
+ description: string;
2033
+ label: string;
2034
+ severity_rules: BodyguardSeverityRule[];
2035
+ }
2014
2036
  export interface LabelThresholds {
2015
2037
  block?: number;
2016
2038
  flag?: number;
@@ -2056,6 +2078,16 @@ export interface MarkReviewedRequest {
2056
2078
  export interface MemberLookup {
2057
2079
  limit: number;
2058
2080
  }
2081
+ export interface MembershipLevelResponse {
2082
+ created_at: Date;
2083
+ id: string;
2084
+ name: string;
2085
+ priority: number;
2086
+ updated_at: Date;
2087
+ tags: string[];
2088
+ description?: string;
2089
+ custom?: Record<string, any>;
2090
+ }
2059
2091
  export interface Message {
2060
2092
  cid: string;
2061
2093
  created_at: Date;
@@ -2081,6 +2113,7 @@ export interface Message {
2081
2113
  before_message_send_failed?: boolean;
2082
2114
  command?: string;
2083
2115
  deleted_at?: Date;
2116
+ deleted_for_me?: boolean;
2084
2117
  message_text_updated_at?: Date;
2085
2118
  mml?: string;
2086
2119
  parent_id?: string;
@@ -2136,6 +2169,7 @@ export interface MessageResponse {
2136
2169
  user: UserResponse;
2137
2170
  command?: string;
2138
2171
  deleted_at?: Date;
2172
+ deleted_for_me?: boolean;
2139
2173
  message_text_updated_at?: Date;
2140
2174
  mml?: string;
2141
2175
  parent_id?: string;
@@ -2178,11 +2212,11 @@ export interface ModerationFlagResponse {
2178
2212
  type: string;
2179
2213
  updated_at: string;
2180
2214
  user_id: string;
2215
+ result: Array<Record<string, any>>;
2181
2216
  entity_creator_id?: string;
2182
2217
  reason?: string;
2183
2218
  review_queue_item_id?: string;
2184
2219
  labels?: string[];
2185
- result?: Array<Record<string, any>>;
2186
2220
  custom?: Record<string, any>;
2187
2221
  moderation_payload?: ModerationPayload;
2188
2222
  review_queue_item?: ReviewQueueItemResponse;
@@ -3313,6 +3347,7 @@ export interface UpsertConfigRequest {
3313
3347
  block_list_config?: BlockListConfig;
3314
3348
  bodyguard_config?: AITextConfig;
3315
3349
  google_vision_config?: GoogleVisionConfig;
3350
+ llm_config?: LLMConfig;
3316
3351
  rule_builder_config?: RuleBuilderConfig;
3317
3352
  velocity_filter_config?: VelocityFilterConfig;
3318
3353
  video_call_rule_config?: VideoCallRuleConfig;
@@ -1,4 +1,5 @@
1
- import { FeedResponse, FollowResponse, OwnUser, OwnUserResponse, UserResponse } from '../gen/models';
1
+ import { ActivityPinResponse, ActivityResponse, BookmarkFolderResponse, BookmarkResponse, FeedResponse, FeedsReactionResponse, FollowResponse, OwnUser, OwnUserResponse, UserResponse } from '../gen/models';
2
+ import { EventPayload } from '../types-internal';
2
3
  export declare const getHumanId: () => string;
3
4
  export declare const generateUserResponse: (overrides?: Partial<UserResponse>) => UserResponse;
4
5
  export declare const generateOwnUserResponse: (overrides?: Partial<OwnUserResponse>) => OwnUserResponse;
@@ -7,3 +8,47 @@ export declare const generateFeedResponse: (overrides?: Omit<Partial<FeedRespons
7
8
  created_by?: Partial<UserResponse>;
8
9
  }) => FeedResponse;
9
10
  export declare const generateFollowResponse: (overrides?: Partial<FollowResponse>) => FollowResponse;
11
+ export declare const generateActivityResponse: (overrides?: Omit<Partial<ActivityResponse>, "user"> & {
12
+ user?: Partial<UserResponse>;
13
+ }) => ActivityResponse;
14
+ export declare const generateFeedReactionResponse: (overrides?: Omit<Partial<FeedsReactionResponse>, "user"> & {
15
+ user?: Partial<UserResponse>;
16
+ }) => FeedsReactionResponse;
17
+ export declare const generateActivityPinResponse: (overrides?: Omit<Partial<ActivityPinResponse>, "activity" | "user"> & {
18
+ activity?: Partial<ActivityResponse>;
19
+ user?: Partial<UserResponse>;
20
+ }) => ActivityPinResponse;
21
+ export declare const generateBookmarkFolderResponse: (overrides?: Partial<BookmarkFolderResponse>) => BookmarkFolderResponse;
22
+ export declare const generateBookmarkResponse: (overrides?: Omit<Partial<BookmarkResponse>, "activity" | "user"> & {
23
+ activity?: Partial<ActivityResponse>;
24
+ user?: Partial<UserResponse>;
25
+ }) => BookmarkResponse;
26
+ export declare function generateActivityReactionAddedEvent(overrides?: Omit<Partial<EventPayload<'feeds.activity.reaction.added'>>, 'activity' | 'type' | 'reaction' | 'user'> & {
27
+ activity?: Parameters<typeof generateActivityResponse>[0];
28
+ reaction?: Parameters<typeof generateFeedReactionResponse>[0];
29
+ user?: Parameters<typeof generateUserResponse>[0];
30
+ }): EventPayload<'feeds.activity.reaction.added'>;
31
+ export declare function generateActivityReactionDeletedEvent(overrides?: Omit<Partial<EventPayload<'feeds.activity.reaction.deleted'>>, 'user' | 'activity' | 'reaction'> & {
32
+ activity?: Parameters<typeof generateActivityResponse>[0];
33
+ reaction?: Parameters<typeof generateFeedReactionResponse>[0];
34
+ user?: Parameters<typeof generateUserResponse>[0];
35
+ }): EventPayload<'feeds.activity.reaction.deleted'>;
36
+ export declare function generateActivityUpdatedEvent(overrides?: Omit<Partial<EventPayload<'feeds.activity.updated'>>, 'activity' | 'type'> & {
37
+ activity?: Parameters<typeof generateActivityResponse>[0];
38
+ }): EventPayload<'feeds.activity.updated'>;
39
+ export declare function generateBookmarkAddedEvent(overrides?: Omit<Partial<EventPayload<'feeds.bookmark.added'>>, 'bookmark' | 'user'> & {
40
+ bookmark?: Parameters<typeof generateBookmarkResponse>[0];
41
+ user?: Parameters<typeof generateUserResponse>[0];
42
+ }): EventPayload<'feeds.bookmark.added'>;
43
+ export declare function generateBookmarkDeletedEvent(overrides?: Omit<Partial<EventPayload<'feeds.bookmark.deleted'>>, 'bookmark' | 'user'> & {
44
+ bookmark?: Parameters<typeof generateBookmarkResponse>[0];
45
+ user?: Parameters<typeof generateUserResponse>[0];
46
+ }): EventPayload<'feeds.bookmark.deleted'>;
47
+ export declare function generateBookmarkUpdatedEvent(overrides?: Omit<Partial<EventPayload<'feeds.bookmark.updated'>>, 'bookmark' | 'user'> & {
48
+ bookmark?: Parameters<typeof generateBookmarkResponse>[0];
49
+ user?: Parameters<typeof generateUserResponse>[0];
50
+ }): EventPayload<'feeds.bookmark.updated'>;
51
+ export declare function generateActivityPinnedEvent(overrides?: Omit<Partial<EventPayload<'feeds.activity.pinned'>>, 'pinned_activity' | 'user'> & {
52
+ pinned_activity?: Parameters<typeof generateActivityPinResponse>[0];
53
+ user?: Parameters<typeof generateUserResponse>[0];
54
+ }): EventPayload<'feeds.activity.pinned'>;
@@ -3,3 +3,4 @@ export * from './unique-array-merge';
3
3
  export * from './constants';
4
4
  export * from './type-assertions';
5
5
  export * from './state-update-queue';
6
+ export * from './update-entity-in-array';
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility function through which you can update an entity in an array;
3
+ *
4
+ * - if the entity is not found, it returns the original array unchanged
5
+ * - if the entity is found and updated, it returns a new array with the updated entity
6
+ * - if the entity is found but not updated (updater returns `matchedEntity`), it returns the original array unchanged
7
+ *
8
+ * - `changed: boolean` indicates whether the array has changed or not - this is QOL enhancement, you
9
+ * can compare returned array to the original one
10
+ *
11
+ */
12
+ export declare function updateEntityInArray<T>(_: {
13
+ matcher: (entity: T) => boolean;
14
+ entities: T[];
15
+ updater: (currentEntity: T) => T;
16
+ }): {
17
+ changed: boolean;
18
+ entities: T[];
19
+ };
20
+ export declare function updateEntityInArray<T>(_: {
21
+ matcher: (entity: T) => boolean;
22
+ entities: T[] | undefined;
23
+ updater: (currentEntity: T) => T;
24
+ }): {
25
+ changed: boolean;
26
+ entities: T[] | undefined;
27
+ };