@stream-io/feeds-client 0.1.10 → 0.2.0

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 (168) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
  3. package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
  4. package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
  5. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
  6. package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
  7. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
  8. package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
  9. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
  10. package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
  11. package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
  12. package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
  13. package/dist/index-react-bindings.browser.cjs +1720 -1601
  14. package/dist/index-react-bindings.browser.cjs.map +1 -1
  15. package/dist/index-react-bindings.browser.js +1720 -1601
  16. package/dist/index-react-bindings.browser.js.map +1 -1
  17. package/dist/index-react-bindings.node.cjs +1720 -1601
  18. package/dist/index-react-bindings.node.cjs.map +1 -1
  19. package/dist/index-react-bindings.node.js +1720 -1601
  20. package/dist/index-react-bindings.node.js.map +1 -1
  21. package/dist/index.browser.cjs +1724 -1602
  22. package/dist/index.browser.cjs.map +1 -1
  23. package/dist/index.browser.js +1722 -1603
  24. package/dist/index.browser.js.map +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.node.cjs +1724 -1602
  27. package/dist/index.node.cjs.map +1 -1
  28. package/dist/index.node.js +1722 -1603
  29. package/dist/index.node.js.map +1 -1
  30. package/dist/src/common/ActivitySearchSource.d.ts +1 -1
  31. package/dist/src/common/FeedSearchSource.d.ts +2 -2
  32. package/dist/src/common/Poll.d.ts +1 -1
  33. package/dist/src/common/UserSearchSource.d.ts +1 -1
  34. package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
  35. package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
  36. package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
  37. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
  38. package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
  39. package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
  40. package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
  41. package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
  42. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
  43. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
  44. package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
  45. package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
  46. package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
  47. package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
  48. package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
  49. package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
  50. package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
  51. package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
  52. package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
  53. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
  54. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
  55. package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
  56. package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
  57. package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
  58. package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
  59. package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
  60. package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
  61. package/dist/src/feed/event-handlers/index.d.ts +8 -0
  62. package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
  63. package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
  64. package/dist/src/feed/event-handlers/watch/handle-watch-started.d.ts +2 -0
  65. package/dist/src/feed/event-handlers/watch/handle-watch-stopped.d.ts +2 -0
  66. package/dist/src/feed/event-handlers/watch/index.d.ts +2 -0
  67. package/dist/src/{Feed.d.ts → feed/feed.d.ts} +16 -43
  68. package/dist/src/feed/index.d.ts +2 -0
  69. package/dist/src/feeds-client/event-handlers/index.d.ts +1 -0
  70. package/dist/src/feeds-client/event-handlers/user/handle-user-updated.d.ts +3 -0
  71. package/dist/src/feeds-client/feeds-client.d.ts +76 -0
  72. package/dist/src/feeds-client/index.d.ts +2 -0
  73. package/dist/src/gen/feeds/FeedsApi.d.ts +27 -23
  74. package/dist/src/gen/models/index.d.ts +168 -23
  75. package/dist/src/gen-imports.d.ts +1 -1
  76. package/dist/src/test-utils/index.d.ts +1 -0
  77. package/dist/src/test-utils/response-generators.d.ts +9 -0
  78. package/dist/src/types-internal.d.ts +7 -0
  79. package/dist/src/types.d.ts +1 -1
  80. package/dist/src/utils/check-has-another-page.d.ts +1 -0
  81. package/dist/src/utils/constants.d.ts +3 -0
  82. package/dist/src/utils/index.d.ts +5 -0
  83. package/dist/src/utils/state-update-queue.d.ts +6 -0
  84. package/dist/src/utils/type-assertions.d.ts +7 -0
  85. package/dist/src/utils/unique-array-merge.d.ts +1 -0
  86. package/dist/tsconfig.tsbuildinfo +1 -1
  87. package/index.ts +2 -2
  88. package/package.json +3 -2
  89. package/src/common/ActivitySearchSource.ts +1 -1
  90. package/src/common/FeedSearchSource.ts +2 -2
  91. package/src/common/Poll.ts +1 -1
  92. package/src/common/UserSearchSource.ts +1 -1
  93. package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
  94. package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
  95. package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
  96. package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
  97. package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
  98. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
  99. package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
  100. package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
  101. package/src/feed/event-handlers/activity/index.ts +6 -0
  102. package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
  103. package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
  104. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
  105. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
  106. package/src/feed/event-handlers/bookmark/index.ts +3 -0
  107. package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
  108. package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
  109. package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
  110. package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
  111. package/src/feed/event-handlers/comment/index.ts +4 -0
  112. package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
  113. package/src/feed/event-handlers/feed/index.ts +1 -0
  114. package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
  115. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
  116. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
  117. package/src/feed/event-handlers/feed-member/index.ts +3 -0
  118. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +250 -0
  119. package/src/feed/event-handlers/follow/handle-follow-created.ts +90 -0
  120. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +268 -0
  121. package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
  122. package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
  123. package/src/feed/event-handlers/follow/handle-follow-updated.ts +85 -0
  124. package/src/feed/event-handlers/follow/index.ts +3 -0
  125. package/src/feed/event-handlers/index.ts +8 -0
  126. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
  127. package/src/feed/event-handlers/notification-feed/index.ts +1 -0
  128. package/src/feed/event-handlers/watch/handle-watch-started.ts +5 -0
  129. package/src/feed/event-handlers/watch/handle-watch-stopped.ts +5 -0
  130. package/src/feed/event-handlers/watch/index.ts +2 -0
  131. package/src/{Feed.ts → feed/feed.ts} +87 -516
  132. package/src/feed/index.ts +2 -0
  133. package/src/feeds-client/event-handlers/index.ts +1 -0
  134. package/src/feeds-client/event-handlers/user/handle-user-updated.test.ts +53 -0
  135. package/src/feeds-client/event-handlers/user/handle-user-updated.ts +28 -0
  136. package/src/{FeedsClient.ts → feeds-client/feeds-client.ts} +63 -36
  137. package/src/feeds-client/index.ts +2 -0
  138. package/src/gen/feeds/FeedsApi.ts +164 -138
  139. package/src/gen/model-decoders/decoders.ts +22 -0
  140. package/src/gen/models/index.ts +288 -29
  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 +101 -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/FeedsClient.d.ts +0 -75
  155. package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
  156. package/dist/src/state-updates/activity-utils.d.ts +0 -13
  157. package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
  158. package/dist/src/state-updates/follow-utils.d.ts +0 -19
  159. package/dist/src/state-updates/state-update-queue.d.ts +0 -15
  160. package/dist/src/utils.d.ts +0 -10
  161. package/src/state-updates/activity-reaction-utils.ts +0 -107
  162. package/src/state-updates/bookmark-utils.ts +0 -167
  163. package/src/state-updates/follow-utils.test.ts +0 -552
  164. package/src/state-updates/follow-utils.ts +0 -126
  165. package/src/state-updates/state-update-queue.ts +0 -35
  166. package/src/utils.ts +0 -48
  167. /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
  168. /package/src/{ModerationClient.ts → moderation-client.ts} +0 -0
@@ -1,126 +0,0 @@
1
- import { FeedState } from '../Feed';
2
- import { FollowResponse, FeedResponse } from '../gen/models';
3
- import { UpdateStateResult } from '../types-internal';
4
-
5
- const isFeedResponse = (
6
- follow: FeedResponse | { fid: string },
7
- ): follow is FeedResponse => {
8
- return 'created_by' in follow;
9
- };
10
-
11
- export const handleFollowCreated = (
12
- follow: FollowResponse,
13
- currentState: FeedState,
14
- currentFeedId: string,
15
- connectedUserId?: string,
16
- ): UpdateStateResult<{ data: FeedState }> => {
17
- // filter non-accepted follows (the way getOrCreate does by default)
18
- if (follow.status !== 'accepted') {
19
- return { changed: false, data: currentState };
20
- }
21
-
22
- let newState: FeedState = { ...currentState };
23
-
24
- // this feed followed someone
25
- if (follow.source_feed.fid === currentFeedId) {
26
- newState = {
27
- ...newState,
28
- // Update FeedResponse fields, that has the new follower/following count
29
- ...follow.source_feed,
30
- };
31
-
32
- // Only update if following array already exists
33
- if (currentState.following !== undefined) {
34
- newState.following = [follow, ...currentState.following];
35
- }
36
- } else if (
37
- // someone followed this feed
38
- follow.target_feed.fid === currentFeedId
39
- ) {
40
- const source = follow.source_feed;
41
-
42
- newState = {
43
- ...newState,
44
- // Update FeedResponse fields, that has the new follower/following count
45
- ...follow.target_feed,
46
- };
47
-
48
- if (source.created_by.id === connectedUserId) {
49
- newState.own_follows = currentState.own_follows
50
- ? currentState.own_follows.concat(follow)
51
- : [follow];
52
- }
53
-
54
- // Only update if followers array already exists
55
- if (currentState.followers !== undefined) {
56
- newState.followers = [follow, ...currentState.followers];
57
- }
58
- }
59
-
60
- return { changed: true, data: newState };
61
- };
62
-
63
- export const handleFollowDeleted = (
64
- follow:
65
- | FollowResponse
66
- | { source_feed: { fid: string }; target_feed: { fid: string } },
67
- currentState: FeedState,
68
- currentFeedId: string,
69
- connectedUserId?: string,
70
- ): UpdateStateResult<{ data: FeedState }> => {
71
- let newState: FeedState = { ...currentState };
72
-
73
- // this feed unfollowed someone
74
- if (follow.source_feed.fid === currentFeedId) {
75
- newState = {
76
- ...newState,
77
- // Update FeedResponse fields, that has the new follower/following count
78
- ...follow.source_feed,
79
- };
80
-
81
- // Only update if following array already exists
82
- if (currentState.following !== undefined) {
83
- newState.following = currentState.following.filter(
84
- (followItem) => followItem.target_feed.fid !== follow.target_feed.fid,
85
- );
86
- }
87
- } else if (
88
- // someone unfollowed this feed
89
- follow.target_feed.fid === currentFeedId
90
- ) {
91
- const source = follow.source_feed;
92
-
93
- newState = {
94
- ...newState,
95
- // Update FeedResponse fields, that has the new follower/following count
96
- ...follow.target_feed,
97
- };
98
-
99
- if (
100
- isFeedResponse(source) &&
101
- source.created_by.id === connectedUserId &&
102
- currentState.own_follows !== undefined
103
- ) {
104
- newState.own_follows = currentState.own_follows.filter(
105
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
106
- );
107
- }
108
-
109
- // Only update if followers array already exists
110
- if (currentState.followers !== undefined) {
111
- newState.followers = currentState.followers.filter(
112
- (followItem) => followItem.source_feed.fid !== follow.source_feed.fid,
113
- );
114
- }
115
- }
116
-
117
- return { changed: true, data: newState };
118
- };
119
-
120
- export const handleFollowUpdated = (
121
- currentState: FeedState,
122
- ): UpdateStateResult<{ data: FeedState }> => {
123
- // For now, we'll treat follow updates as no-ops since the current implementation does
124
- // This can be enhanced later if needed
125
- return { changed: false, data: currentState };
126
- };
@@ -1,35 +0,0 @@
1
- import { FollowResponse } from '../gen/models';
2
-
3
- export const shouldUpdateState = ({
4
- stateUpdateId,
5
- stateUpdateQueue,
6
- watch,
7
- }: {
8
- stateUpdateId: string;
9
- stateUpdateQueue: Set<string>;
10
- watch: boolean;
11
- }) => {
12
- if (!watch) {
13
- return true;
14
- }
15
-
16
- if (watch && stateUpdateQueue.has(stateUpdateId)) {
17
- stateUpdateQueue.delete(stateUpdateId);
18
- return false;
19
- }
20
-
21
- stateUpdateQueue.add(stateUpdateId);
22
- return true;
23
- };
24
-
25
- export const getStateUpdateQueueIdForFollow = (follow: FollowResponse) => {
26
- return `follow${follow.source_feed.fid}-${follow.target_feed.fid}`;
27
- };
28
-
29
- export const getStateUpdateQueueIdForUnfollow = (
30
- follow:
31
- | FollowResponse
32
- | { source_feed: { fid: string }; target_feed: { fid: string } },
33
- ) => {
34
- return `unfollow${follow.source_feed.fid}-${follow.target_feed.fid}`;
35
- };
package/src/utils.ts DELETED
@@ -1,48 +0,0 @@
1
- import { CommentParent, StreamFile } from './types';
2
- import type { CommentResponse } from './gen/models';
3
-
4
- export const isImageFile = (file: StreamFile) => {
5
- // photoshop files begin with 'image/'
6
- return file.type.startsWith('image/') && !file.type.endsWith('.photoshop');
7
- };
8
-
9
- export const isVideoFile = (file: StreamFile) => {
10
- return file.type.startsWith('video/');
11
- };
12
-
13
- export const checkHasAnotherPage = <T extends unknown | undefined>(
14
- v: T,
15
- cursor: string | undefined,
16
- ) =>
17
- (typeof v === 'undefined' && typeof cursor === 'undefined') ||
18
- typeof cursor === 'string';
19
-
20
- export const isCommentResponse = (
21
- entity: CommentParent,
22
- ): entity is CommentResponse => {
23
- return typeof (entity as CommentResponse)?.object_id === 'string';
24
- };
25
-
26
- export const Constants = {
27
- DEFAULT_COMMENT_PAGINATION: 'first',
28
- } as const;
29
-
30
- export const uniqueArrayMerge = <T>(
31
- existingArray: T[],
32
- arrayToMerge: T[],
33
- getKey: (v: T) => string,
34
- ) => {
35
- const existing = new Set<string>();
36
-
37
- existingArray.forEach((value) => {
38
- const key = getKey(value);
39
- existing.add(key);
40
- });
41
-
42
- const filteredArrayToMerge = arrayToMerge.filter((value) => {
43
- const key = getKey(value);
44
- return !existing.has(key);
45
- });
46
-
47
- return existingArray.concat(filteredArrayToMerge);
48
- };