@stream-io/feeds-client 0.2.7 → 0.2.9
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.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/index.js +408 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/react-bindings.js +1368 -0
- package/dist/cjs/react-bindings.js.map +1 -0
- package/dist/es/index.mjs +398 -0
- package/dist/es/index.mjs.map +1 -0
- package/dist/es/react-bindings.mjs +1368 -0
- package/dist/es/react-bindings.mjs.map +1 -0
- package/dist/index-B0Mm2xFU.js +6492 -0
- package/dist/index-B0Mm2xFU.js.map +1 -0
- package/dist/index-rSXIDTdA.mjs +6476 -0
- package/dist/index-rSXIDTdA.mjs.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/bindings/index.d.ts +2 -0
- package/dist/types/bindings/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/contexts/StreamFeedContext.d.ts +2 -1
- package/dist/types/bindings/react/contexts/StreamFeedContext.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/contexts/StreamFeedsContext.d.ts +2 -1
- package/dist/types/bindings/react/contexts/StreamFeedsContext.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/contexts/StreamSearchContext.d.ts +2 -1
- package/dist/types/bindings/react/contexts/StreamSearchContext.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/contexts/StreamSearchResultsContext.d.ts +2 -1
- package/dist/types/bindings/react/contexts/StreamSearchResultsContext.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/client-state-hooks/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/client-state-hooks/index.d.ts.map +1 -0
- package/dist/types/bindings/react/hooks/client-state-hooks/useClientConnectedUser.d.ts +5 -0
- package/dist/types/bindings/react/hooks/client-state-hooks/useClientConnectedUser.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/client-state-hooks/useWsConnectionState.d.ts +1 -0
- package/dist/types/bindings/react/hooks/client-state-hooks/useWsConnectionState.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useAggregatedActivities.d.ts +3 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useComments.d.ts +2 -3
- package/dist/types/bindings/react/hooks/feed-state-hooks/useComments.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useFeedActivities.d.ts +3 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useFeedActivities.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useFeedMetadata.d.ts +3 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useFeedMetadata.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useFollowers.d.ts +5 -4
- package/dist/types/bindings/react/hooks/feed-state-hooks/useFollowers.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useFollowing.d.ts +5 -4
- package/dist/types/bindings/react/hooks/feed-state-hooks/useFollowing.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts +2 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts +2 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useNotificationStatus.d.ts +2 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useNotificationStatus.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useOwnCapabilities.d.ts +2 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/feed-state-hooks/useOwnFollows.d.ts +3 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnFollows.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/internal/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/internal/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/internal/useStableCallback.d.ts +1 -0
- package/dist/types/bindings/react/hooks/internal/useStableCallback.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/search-state-hooks/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/search-state-hooks/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/search-state-hooks/useSearchQuery.d.ts +2 -1
- package/dist/types/bindings/react/hooks/search-state-hooks/useSearchQuery.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/search-state-hooks/useSearchResult.d.ts +2 -1
- package/dist/types/bindings/react/hooks/search-state-hooks/useSearchResult.d.ts.map +1 -0
- package/dist/types/bindings/react/hooks/search-state-hooks/useSearchSources.d.ts +5 -0
- package/dist/types/bindings/react/hooks/search-state-hooks/useSearchSources.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/useCreateFeedsClient.d.ts +2 -4
- package/dist/types/bindings/react/hooks/useCreateFeedsClient.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/util/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/util/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/util/useBookmarkActions.d.ts +2 -1
- package/dist/types/bindings/react/hooks/util/useBookmarkActions.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/hooks/util/useReactionActions.d.ts +2 -1
- package/dist/types/bindings/react/hooks/util/useReactionActions.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/index.d.ts +2 -1
- package/dist/types/bindings/react/index.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/wrappers/StreamFeed.d.ts +2 -1
- package/dist/types/bindings/react/wrappers/StreamFeed.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/wrappers/StreamFeeds.d.ts +1 -0
- package/dist/types/bindings/react/wrappers/StreamFeeds.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/wrappers/StreamSearch.d.ts +2 -1
- package/dist/types/bindings/react/wrappers/StreamSearch.d.ts.map +1 -0
- package/dist/{@react-bindings → types/bindings/react}/wrappers/StreamSearchResults.d.ts +2 -1
- package/dist/types/bindings/react/wrappers/StreamSearchResults.d.ts.map +1 -0
- package/dist/{src → types}/common/ApiClient.d.ts +18 -0
- package/dist/types/common/ApiClient.d.ts.map +1 -0
- package/dist/{src → types}/common/ConnectionIdManager.d.ts +1 -0
- package/dist/types/common/ConnectionIdManager.d.ts.map +1 -0
- package/dist/{src → types}/common/EventDispatcher.d.ts +1 -0
- package/dist/types/common/EventDispatcher.d.ts.map +1 -0
- package/dist/{src → types}/common/Poll.d.ts +2 -1
- package/dist/types/common/Poll.d.ts.map +1 -0
- package/dist/{src → types}/common/TokenManager.d.ts +2 -0
- package/dist/types/common/TokenManager.d.ts.map +1 -0
- package/dist/{src → types}/common/gen-imports.d.ts +1 -0
- package/dist/types/common/gen-imports.d.ts.map +1 -0
- package/dist/{src → types}/common/rate-limit.d.ts +1 -0
- package/dist/types/common/rate-limit.d.ts.map +1 -0
- package/dist/{src → types}/common/real-time/StableWSConnection.d.ts +4 -4
- package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -0
- package/dist/{src → types}/common/real-time/event-models.d.ts +1 -0
- package/dist/types/common/real-time/event-models.d.ts.map +1 -0
- package/dist/{src → types}/common/search/ActivitySearchSource.d.ts +1 -0
- package/dist/types/common/search/ActivitySearchSource.d.ts.map +1 -0
- package/dist/{src → types}/common/search/BaseSearchSource.d.ts +2 -1
- package/dist/types/common/search/BaseSearchSource.d.ts.map +1 -0
- package/dist/{src → types}/common/search/FeedSearchSource.d.ts +1 -0
- package/dist/types/common/search/FeedSearchSource.d.ts.map +1 -0
- package/dist/{src → types}/common/search/SearchController.d.ts +2 -1
- package/dist/types/common/search/SearchController.d.ts.map +1 -0
- package/dist/{src → types}/common/search/UserSearchSource.d.ts +2 -1
- package/dist/types/common/search/UserSearchSource.d.ts.map +1 -0
- package/dist/{src → types}/common/search/index.d.ts +1 -0
- package/dist/types/common/search/index.d.ts.map +1 -0
- package/dist/{src → types}/common/search/types.d.ts +1 -0
- package/dist/types/common/search/types.d.ts.map +1 -0
- package/dist/{src → types}/common/types.d.ts +3 -1
- package/dist/types/common/types.d.ts.map +1 -0
- package/dist/{src → types}/common/utils.d.ts +1 -0
- package/dist/types/common/utils.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-added.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-deleted.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-deleted.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-marked.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-marked.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-pinned.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-pinned.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +15 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-added.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +15 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-unpinned.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-unpinned.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/handle-activity-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/activity/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +1 -0
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-added.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +1 -0
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/bookmark/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/bookmark/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/comment/handle-comment-added.d.ts +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-added.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/comment/handle-comment-deleted.d.ts +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-deleted.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/comment/handle-comment-reaction.d.ts +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/comment/handle-comment-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/comment/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/comment/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed/handle-feed-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed/handle-feed-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-added.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/feed-member/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed-member/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/follow/handle-follow-created.d.ts +3 -2
- package/dist/types/feed/event-handlers/follow/handle-follow-created.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/follow/handle-follow-deleted.d.ts +2 -1
- package/dist/types/feed/event-handlers/follow/handle-follow-deleted.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -2
- package/dist/types/feed/event-handlers/follow/handle-follow-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/follow/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/follow/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +1 -0
- package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/notification-feed/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/notification-feed/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/watch/handle-watch-started.d.ts +1 -0
- package/dist/types/feed/event-handlers/watch/handle-watch-started.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/watch/handle-watch-stopped.d.ts +1 -0
- package/dist/types/feed/event-handlers/watch/handle-watch-stopped.d.ts.map +1 -0
- package/dist/{src → types}/feed/event-handlers/watch/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/watch/index.d.ts.map +1 -0
- package/dist/{src → types}/feed/feed.d.ts +9 -6
- package/dist/types/feed/feed.d.ts.map +1 -0
- package/dist/{src → types}/feed/index.d.ts +1 -0
- package/dist/types/feed/index.d.ts.map +1 -0
- package/dist/{src → types}/feeds-client/event-handlers/index.d.ts +1 -0
- package/dist/types/feeds-client/event-handlers/index.d.ts.map +1 -0
- package/dist/{src → types}/feeds-client/event-handlers/user/handle-user-updated.d.ts +1 -0
- package/dist/types/feeds-client/event-handlers/user/handle-user-updated.d.ts.map +1 -0
- package/dist/{src → types}/feeds-client/feeds-client.d.ts +18 -10
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -0
- package/dist/{src → types}/feeds-client/index.d.ts +1 -0
- package/dist/types/feeds-client/index.d.ts.map +1 -0
- package/dist/{src → types}/gen/feeds/FeedApi.d.ts +1 -0
- package/dist/types/gen/feeds/FeedApi.d.ts.map +1 -0
- package/dist/{src → types}/gen/feeds/FeedsApi.d.ts +1 -0
- package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -0
- package/dist/{src → types}/gen/model-decoders/decoders.d.ts +1 -0
- package/dist/types/gen/model-decoders/decoders.d.ts.map +1 -0
- package/dist/{src → types}/gen/model-decoders/event-decoder-mapping.d.ts +1 -0
- package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -0
- package/dist/{src → types}/gen/models/index.d.ts +43 -2
- package/dist/types/gen/models/index.d.ts.map +1 -0
- package/dist/{src → types}/gen/moderation/ModerationApi.d.ts +1 -0
- package/dist/types/gen/moderation/ModerationApi.d.ts.map +1 -0
- package/dist/{src → types}/gen-imports.d.ts +1 -0
- package/dist/types/gen-imports.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src → types}/moderation-client.d.ts +1 -0
- package/dist/types/moderation-client.d.ts.map +1 -0
- package/dist/{src → types}/types-internal.d.ts +4 -0
- package/dist/types/types-internal.d.ts.map +1 -0
- package/dist/{src → types}/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/{src → types}/utils/check-has-another-page.d.ts +1 -0
- package/dist/types/utils/check-has-another-page.d.ts.map +1 -0
- package/dist/{src → types}/utils/constants.d.ts +1 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/{src → types}/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/is-react-native.d.ts +5 -0
- package/dist/types/utils/is-react-native.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +61 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/state-update-queue.d.ts +83 -0
- package/dist/types/utils/state-update-queue.d.ts.map +1 -0
- package/dist/types/utils/type-assertions.d.ts +12 -0
- package/dist/types/utils/type-assertions.d.ts.map +1 -0
- package/dist/{src → types}/utils/unique-array-merge.d.ts +1 -0
- package/dist/types/utils/unique-array-merge.d.ts.map +1 -0
- package/dist/{src → types}/utils/update-entity-in-array.d.ts +1 -0
- package/dist/types/utils/update-entity-in-array.d.ts.map +1 -0
- package/package.json +21 -33
- package/src/bindings/index.ts +1 -0
- package/src/bindings/react/contexts/StreamFeedContext.tsx +18 -0
- package/src/bindings/react/contexts/StreamFeedsContext.tsx +21 -0
- package/src/bindings/react/contexts/StreamSearchContext.tsx +18 -0
- package/src/bindings/react/contexts/StreamSearchResultsContext.tsx +20 -0
- package/src/bindings/react/hooks/client-state-hooks/useClientConnectedUser.ts +18 -0
- package/src/bindings/react/hooks/client-state-hooks/useWsConnectionState.ts +18 -0
- package/src/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.ts +25 -0
- package/src/bindings/react/hooks/feed-state-hooks/useComments.ts +91 -0
- package/src/bindings/react/hooks/feed-state-hooks/useFeedActivities.ts +36 -0
- package/src/bindings/react/hooks/feed-state-hooks/useFeedMetadata.ts +28 -0
- package/src/bindings/react/hooks/feed-state-hooks/useFollowers.ts +54 -0
- package/src/bindings/react/hooks/feed-state-hooks/useFollowing.ts +54 -0
- package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts +29 -0
- package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.ts +28 -0
- package/src/bindings/react/hooks/feed-state-hooks/useNotificationStatus.ts +28 -0
- package/src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts +70 -0
- package/src/bindings/react/hooks/feed-state-hooks/useOwnFollows.ts +18 -0
- package/src/bindings/react/hooks/internal/useStableCallback.ts +37 -0
- package/src/bindings/react/hooks/search-state-hooks/useSearchQuery.ts +14 -0
- package/src/bindings/react/hooks/search-state-hooks/useSearchResult.ts +36 -0
- package/src/bindings/react/hooks/search-state-hooks/useSearchSources.ts +17 -0
- package/src/bindings/react/hooks/useCreateFeedsClient.ts +73 -0
- package/src/bindings/react/hooks/util/useBookmarkActions.ts +40 -0
- package/src/bindings/react/hooks/util/useReactionActions.ts +56 -0
- package/{@react-bindings → src/bindings/react}/index.ts +1 -1
- package/src/bindings/react/wrappers/StreamFeed.tsx +23 -0
- package/src/bindings/react/wrappers/StreamFeeds.tsx +13 -0
- package/src/bindings/react/wrappers/StreamSearch.tsx +23 -0
- package/src/bindings/react/wrappers/StreamSearchResults.tsx +23 -0
- package/src/common/ApiClient.ts +86 -33
- package/src/common/EventDispatcher.ts +3 -6
- package/src/common/Poll.ts +1 -1
- package/src/common/TokenManager.ts +4 -0
- package/src/common/real-time/StableWSConnection.ts +64 -60
- package/src/common/search/BaseSearchSource.ts +11 -4
- package/src/common/search/SearchController.ts +4 -2
- package/src/common/types.ts +3 -2
- package/src/feed/event-handlers/activity/activity-utils.test.ts +40 -9
- package/src/feed/event-handlers/activity/handle-activity-added.test.ts +1 -1
- package/src/feed/event-handlers/activity/handle-activity-added.ts +7 -7
- package/src/feed/event-handlers/activity/handle-activity-deleted.ts +15 -12
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +101 -1
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +55 -29
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +118 -1
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +59 -32
- package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +1 -1
- package/src/feed/event-handlers/follow/follow-state-update-queue.test.ts +219 -0
- package/src/feed/event-handlers/follow/handle-follow-created.ts +7 -2
- package/src/feed/event-handlers/follow/handle-follow-deleted.ts +5 -0
- package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +0 -43
- package/src/feed/event-handlers/follow/handle-follow-updated.ts +7 -2
- package/src/feed/feed.test.ts +90 -0
- package/src/feed/feed.ts +25 -4
- package/src/feeds-client/feeds-client.ts +35 -4
- package/src/gen/feeds/FeedsApi.ts +2 -0
- package/src/gen/model-decoders/decoders.ts +22 -0
- package/src/gen/models/index.ts +71 -3
- package/src/index.ts +9 -0
- package/src/test-utils/response-generators.ts +12 -3
- package/src/types-internal.ts +4 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/is-react-native.ts +7 -0
- package/src/utils/logger.ts +18 -0
- package/src/utils/state-update-queue.test.ts +85 -9
- package/src/utils/state-update-queue.ts +104 -11
- package/src/utils/type-assertions.ts +22 -1
- package/dist/@react-bindings/hooks/client-state-hooks/useClientConnectedUser.d.ts +0 -4
- package/dist/@react-bindings/hooks/search-state-hooks/useSearchSources.d.ts +0 -4
- package/dist/@react-bindings/hooks/useStateStore.d.ts +0 -3
- package/dist/index-react-bindings.browser.cjs +0 -6607
- package/dist/index-react-bindings.browser.cjs.map +0 -1
- package/dist/index-react-bindings.browser.js +0 -6574
- package/dist/index-react-bindings.browser.js.map +0 -1
- package/dist/index-react-bindings.node.cjs +0 -6607
- package/dist/index-react-bindings.node.cjs.map +0 -1
- package/dist/index-react-bindings.node.js +0 -6574
- package/dist/index-react-bindings.node.js.map +0 -1
- package/dist/index.browser.cjs +0 -6578
- package/dist/index.browser.cjs.map +0 -1
- package/dist/index.browser.js +0 -6551
- package/dist/index.browser.js.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.node.cjs +0 -6578
- package/dist/index.node.cjs.map +0 -1
- package/dist/index.node.js +0 -6551
- package/dist/index.node.js.map +0 -1
- package/dist/src/common/StateStore.d.ts +0 -125
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +0 -12
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +0 -12
- package/dist/src/utils/state-update-queue.d.ts +0 -6
- package/dist/src/utils/type-assertions.d.ts +0 -7
- package/index.ts +0 -9
- package/src/common/StateStore.ts +0 -332
- /package/{@react-bindings → src/bindings/react}/hooks/client-state-hooks/index.ts +0 -0
- /package/{@react-bindings → src/bindings/react}/hooks/feed-state-hooks/index.ts +0 -0
- /package/{@react-bindings → src/bindings/react}/hooks/internal/index.ts +0 -0
- /package/{@react-bindings → src/bindings/react}/hooks/search-state-hooks/index.ts +0 -0
- /package/{@react-bindings → src/bindings/react}/hooks/util/index.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/common/search/SearchController.ts","../../src/common/search/BaseSearchSource.ts","../../src/common/search/ActivitySearchSource.ts","../../src/common/search/FeedSearchSource.ts","../../src/common/search/UserSearchSource.ts"],"sourcesContent":["import { StateStore } from '@stream-io/state-store';\nimport type { SearchSource } from './BaseSearchSource';\n\nexport type SearchControllerState = {\n isActive: boolean;\n searchQuery: string;\n sources: SearchSource[];\n};\n\nexport type InternalSearchControllerState = {};\n\nexport type SearchControllerConfig = {\n // The controller will make sure there is always exactly one active source. Enabled by default.\n keepSingleActiveSource: boolean;\n};\n\nexport type SearchControllerOptions = {\n config?: Partial<SearchControllerConfig>;\n sources?: SearchSource[];\n};\n\nexport class SearchController {\n /**\n * Not intended for direct use by integrators, might be removed without notice resulting in\n * broken integrations.\n */\n _internalState: StateStore<InternalSearchControllerState>;\n state: StateStore<SearchControllerState>;\n config: SearchControllerConfig;\n\n constructor({ config, sources }: SearchControllerOptions = {}) {\n this.state = new StateStore<SearchControllerState>({\n isActive: false,\n searchQuery: '',\n sources: sources ?? [],\n });\n this._internalState = new StateStore<InternalSearchControllerState>({});\n this.config = { keepSingleActiveSource: true, ...config };\n }\n get hasNext() {\n return this.sources.some((source) => source.hasNext);\n }\n\n get sources() {\n return this.state.getLatestValue().sources;\n }\n\n get activeSources() {\n return this.state.getLatestValue().sources.filter((s) => s.isActive);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n get searchSourceTypes(): Array<SearchSource['type']> {\n return this.sources.map((s) => s.type);\n }\n\n addSource = (source: SearchSource) => {\n this.state.partialNext({\n sources: [...this.sources, source],\n });\n };\n\n getSource = (sourceType: SearchSource['type']) =>\n this.sources.find((s) => s.type === sourceType);\n\n removeSource = (sourceType: SearchSource['type']) => {\n const newSources = this.sources.filter((s) => s.type !== sourceType);\n if (newSources.length === this.sources.length) return;\n this.state.partialNext({ sources: newSources });\n };\n\n activateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source || source.isActive) return;\n if (this.config.keepSingleActiveSource) {\n this.sources.forEach((s) => {\n if (s.type !== sourceType) {\n s.deactivate();\n }\n });\n }\n source.activate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n deactivateSource = (sourceType: SearchSource['type']) => {\n const source = this.getSource(sourceType);\n if (!source?.isActive) return;\n if (this.activeSources.length === 1) return;\n source.deactivate();\n this.state.partialNext({ sources: [...this.sources] });\n };\n\n activate = () => {\n if (!this.activeSources.length) {\n const sourcesToActivate = this.config.keepSingleActiveSource\n ? this.sources.slice(0, 1)\n : this.sources;\n sourcesToActivate.forEach((s) => s.activate());\n }\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n search = async (searchQuery?: string) => {\n const searchedSources = this.activeSources;\n this.state.partialNext({\n searchQuery,\n });\n await Promise.all(\n searchedSources.map((source) => source.search(searchQuery)),\n );\n };\n\n cancelSearchQueries = () => {\n this.activeSources.forEach((s) => s.cancelScheduledQuery());\n };\n\n clear = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: true,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n\n exit = () => {\n this.cancelSearchQueries();\n this.sources.forEach((source) =>\n source.state.next({ ...source.initialState, isActive: source.isActive }),\n );\n this.state.next((current) => ({\n ...current,\n isActive: false,\n queriesInProgress: [],\n searchQuery: '',\n }));\n };\n}\n","import { StateStore } from '@stream-io/state-store';\nimport { debounce, type DebouncedFunc } from '../utils';\nimport type {\n QueryReturnValue,\n SearchSourceOptions,\n SearchSourceState,\n SearchSourceType,\n} from './types';\n\nexport type DebounceOptions = {\n debounceMs: number;\n};\ntype DebouncedExecQueryFunction = DebouncedFunc<\n (searchString?: string) => Promise<void>\n>;\n\ninterface ISearchSource<T = any> {\n activate(): void;\n\n canExecuteQuery(newSearchString?: string): boolean;\n\n deactivate(): void;\n\n readonly hasNext: boolean;\n readonly hasResults: boolean;\n readonly initialState: SearchSourceState<T>;\n readonly isActive: boolean;\n readonly isLoading: boolean;\n readonly items: T[] | undefined;\n readonly lastQueryError: Error | undefined;\n readonly next: string | undefined | null;\n readonly offset: number | undefined;\n\n resetState(): void;\n\n readonly searchQuery: string;\n\n readonly state: StateStore<SearchSourceState<T>>;\n readonly type: SearchSourceType;\n}\n\nexport interface SearchSource<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): Promise<void> | undefined;\n}\n\nexport interface SearchSourceSync<T = any> extends ISearchSource<T> {\n cancelScheduledQuery(): void;\n setDebounceOptions(options: DebounceOptions): void;\n search(text?: string): void;\n}\n\nconst DEFAULT_SEARCH_SOURCE_OPTIONS: Required<SearchSourceOptions> = {\n debounceMs: 300,\n pageSize: 10,\n allowEmptySearchString: false,\n resetOnNewSearchQuery: true,\n} as const;\n\nabstract class BaseSearchSourceBase<T> implements ISearchSource<T> {\n state: StateStore<SearchSourceState<T>>;\n pageSize: number;\n protected allowEmptySearchString: boolean;\n protected resetOnNewSearchQuery: boolean;\n abstract readonly type: SearchSourceType;\n\n protected constructor(options?: SearchSourceOptions) {\n const { pageSize, allowEmptySearchString, resetOnNewSearchQuery } = {\n ...DEFAULT_SEARCH_SOURCE_OPTIONS,\n ...options,\n };\n this.pageSize = pageSize;\n this.allowEmptySearchString = allowEmptySearchString;\n this.resetOnNewSearchQuery = resetOnNewSearchQuery;\n this.state = new StateStore<SearchSourceState<T>>(this.initialState);\n }\n\n get lastQueryError() {\n return this.state.getLatestValue().lastQueryError;\n }\n\n get hasNext() {\n return this.state.getLatestValue().hasNext;\n }\n\n get hasResults() {\n return Array.isArray(this.state.getLatestValue().items);\n }\n\n get isActive() {\n return this.state.getLatestValue().isActive;\n }\n\n get isLoading() {\n return this.state.getLatestValue().isLoading;\n }\n\n get initialState() {\n return {\n hasNext: true,\n isActive: false,\n isLoading: false,\n items: undefined,\n lastQueryError: undefined,\n next: undefined,\n offset: 0,\n searchQuery: '',\n };\n }\n\n get items() {\n return this.state.getLatestValue().items;\n }\n\n get next() {\n return this.state.getLatestValue().next;\n }\n\n get offset() {\n return this.state.getLatestValue().offset;\n }\n\n get searchQuery() {\n return this.state.getLatestValue().searchQuery;\n }\n\n activate = () => {\n if (this.isActive) return;\n this.state.partialNext({ isActive: true });\n };\n\n deactivate = () => {\n if (!this.isActive) return;\n this.state.partialNext({ isActive: false });\n };\n\n canExecuteQuery = (newSearchString?: string) => {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n return !!(\n this.isActive &&\n !this.isLoading &&\n (this.hasNext || hasNewSearchQuery) &&\n (this.allowEmptySearchString || searchString)\n );\n };\n\n protected getStateBeforeFirstQuery(\n newSearchString: string,\n ): SearchSourceState<T> {\n const initialState = this.initialState;\n const oldItems = this.items;\n\n const items = this.resetOnNewSearchQuery ? initialState.items : oldItems;\n return {\n ...this.initialState,\n items,\n isActive: this.isActive,\n isLoading: this.resetOnNewSearchQuery ? true : !oldItems,\n searchQuery: newSearchString,\n };\n }\n\n protected getStateAfterQuery(\n stateUpdate: Partial<SearchSourceState<T>>,\n isFirstPage: boolean,\n ): SearchSourceState<T> {\n const current = this.state.getLatestValue();\n return {\n ...current,\n lastQueryError: undefined, // reset lastQueryError that can be overridden by the stateUpdate\n ...stateUpdate,\n isLoading: false,\n items: isFirstPage\n ? stateUpdate.items\n : [...(this.items ?? []), ...(stateUpdate.items || [])],\n };\n }\n\n protected prepareStateForQuery(newSearchString?: string) {\n const hasNewSearchQuery = typeof newSearchString !== 'undefined';\n const searchString = newSearchString ?? this.searchQuery;\n\n if (hasNewSearchQuery) {\n this.state.next(this.getStateBeforeFirstQuery(newSearchString ?? ''));\n } else {\n this.state.partialNext({ isLoading: true });\n }\n\n return { searchString, hasNewSearchQuery };\n }\n\n protected updatePaginationStateFromQuery(result: QueryReturnValue<T>) {\n const { items, next } = result;\n\n const stateUpdate: Partial<SearchSourceState<T>> = {};\n if (Object.prototype.hasOwnProperty.call(result, 'next')) {\n stateUpdate.next = next;\n stateUpdate.hasNext = !!next;\n } else {\n stateUpdate.offset = (this.offset ?? 0) + items.length;\n stateUpdate.hasNext = items.length === this.pageSize;\n }\n\n return stateUpdate;\n }\n\n resetState() {\n this.state.next(this.initialState);\n }\n\n resetStateAndActivate() {\n this.resetState();\n this.activate();\n }\n}\n\nexport abstract class BaseSearchSource<T>\n extends BaseSearchSourceBase<T>\n implements SearchSource<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): Promise<QueryReturnValue<T>>;\n\n protected abstract filterQueryResults(items: T[]): T[] | Promise<T[]>;\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n async executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = await this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = await this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n\nexport abstract class BaseSearchSourceSync<T>\n extends BaseSearchSourceBase<T>\n implements SearchSourceSync<T>\n{\n protected searchDebounced!: DebouncedExecQueryFunction;\n\n constructor(options?: SearchSourceOptions) {\n const { debounceMs } = { ...DEFAULT_SEARCH_SOURCE_OPTIONS, ...options };\n super(options);\n this.setDebounceOptions({ debounceMs });\n }\n\n protected abstract query(searchQuery: string): QueryReturnValue<T>;\n\n protected abstract filterQueryResults(items: T[]): T[];\n\n setDebounceOptions = ({ debounceMs }: DebounceOptions) => {\n this.searchDebounced = debounce(this.executeQuery.bind(this), debounceMs);\n };\n\n executeQuery(newSearchString?: string) {\n if (!this.canExecuteQuery(newSearchString)) return;\n\n const { hasNewSearchQuery, searchString } =\n this.prepareStateForQuery(newSearchString);\n\n let stateUpdate: Partial<SearchSourceState<T>> = {};\n try {\n const results = this.query(searchString);\n if (!results) return;\n\n const { items } = results;\n stateUpdate = this.updatePaginationStateFromQuery(results);\n stateUpdate.items = this.filterQueryResults(items);\n } catch (e) {\n stateUpdate.lastQueryError = e as Error;\n } finally {\n this.state.next(this.getStateAfterQuery(stateUpdate, hasNewSearchQuery));\n }\n }\n\n search = (searchQuery?: string) => this.searchDebounced(searchQuery);\n\n cancelScheduledQuery() {\n this.searchDebounced.cancel();\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport { FeedsClient } from '../../feeds-client';\nimport { ActivityResponse } from '../../gen/models';\n\nexport class ActivitySearchSource extends BaseSearchSource<ActivityResponse> {\n readonly type = 'activity' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { activities: items, next } = await this.client.queryActivities({\n sort: [{ direction: -1, field: 'created_at' }],\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? { filter: { text: { $autocomplete: searchQuery } } }\n : {}),\n limit: 10,\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: ActivityResponse[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport { FeedsClient } from '../../feeds-client';\nimport { Feed } from '../../feed';\n\nexport type FeedSearchSourceOptions = SearchSourceOptions & {\n groupId?: string;\n};\n\nexport class FeedSearchSource extends BaseSearchSource<Feed> {\n readonly type: string;\n readonly feedGroupId?: string | undefined;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: FeedSearchSourceOptions) {\n super(options);\n this.client = client;\n this.feedGroupId = options?.groupId;\n this.type = `${this.feedGroupId}-feed`;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { feeds: items, next } = await this.client.queryFeeds({\n filter: {\n ...(this.feedGroupId ? { group_id: this.feedGroupId } : {}),\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n $or: [\n { name: { $autocomplete: searchQuery } },\n { description: { $autocomplete: searchQuery } },\n { 'created_by.name': { $autocomplete: searchQuery } },\n ],\n }\n : {}),\n },\n next: this.next ?? undefined,\n });\n\n return { items, next };\n }\n\n protected filterQueryResults(items: Feed[]) {\n return items;\n }\n}\n","import { BaseSearchSource } from './BaseSearchSource';\nimport type { SearchSourceOptions } from './types';\n\nimport { FeedsClient } from '../../feeds-client';\nimport { UserResponse } from '../../gen/models';\n\nexport class UserSearchSource extends BaseSearchSource<UserResponse> {\n readonly type = 'user' as const;\n private readonly client: FeedsClient;\n\n constructor(client: FeedsClient, options?: SearchSourceOptions) {\n super(options);\n this.client = client;\n }\n\n protected async query(searchQuery: string) {\n const { connected_user: connectedUser } =\n this.client.state.getLatestValue();\n if (!connectedUser) return { items: [] };\n\n const { users: items } = await this.client.queryUsers({\n payload: {\n filter_conditions: {\n ...(!this.allowEmptySearchString || searchQuery.length > 0\n ? {\n name: {\n $autocomplete: searchQuery,\n },\n }\n : {}),\n },\n },\n });\n\n return { items, next: undefined };\n }\n\n protected filterQueryResults(items: UserResponse[]) {\n return items;\n }\n}\n"],"names":["s","debounceMs","e"],"mappings":"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"}
|