@stream-io/feeds-client 0.2.18 → 0.2.19

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 (84) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/index.js +94 -25
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +26 -55
  5. package/dist/cjs/react-bindings.js.map +1 -1
  6. package/dist/es/index.mjs +86 -17
  7. package/dist/es/index.mjs.map +1 -1
  8. package/dist/es/react-bindings.mjs +19 -48
  9. package/dist/es/react-bindings.mjs.map +1 -1
  10. package/dist/{index--koeDtxd.js → feeds-client-C09giTf1.js} +177 -79
  11. package/dist/feeds-client-C09giTf1.js.map +1 -0
  12. package/dist/{index-Zde8UE5f.mjs → feeds-client-CFadXO-B.mjs} +190 -92
  13. package/dist/feeds-client-CFadXO-B.mjs.map +1 -0
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.d.ts +2 -32
  16. package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.d.ts.map +1 -1
  17. package/dist/types/common/real-time/event-models.d.ts +7 -2
  18. package/dist/types/common/real-time/event-models.d.ts.map +1 -1
  19. package/dist/types/common/types.d.ts +1 -0
  20. package/dist/types/common/types.d.ts.map +1 -1
  21. package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -1
  22. package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts.map +1 -1
  23. package/dist/types/feed/feed.d.ts +1 -1
  24. package/dist/types/feed/feed.d.ts.map +1 -1
  25. package/dist/types/feeds-client/feeds-client.d.ts +9 -1
  26. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  27. package/dist/types/utils/throttling/index.d.ts +3 -0
  28. package/dist/types/utils/throttling/index.d.ts.map +1 -0
  29. package/dist/types/utils/throttling/throttle.d.ts +34 -0
  30. package/dist/types/utils/throttling/throttle.d.ts.map +1 -0
  31. package/dist/types/utils/throttling/throttled-get-batched-own-capabilities.d.ts +14 -0
  32. package/dist/types/utils/throttling/throttled-get-batched-own-capabilities.d.ts.map +1 -0
  33. package/package.json +7 -3
  34. package/react-bindings.d.ts +11 -0
  35. package/react-bindings.js +7 -0
  36. package/react-bindings.mjs +11 -0
  37. package/src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts +21 -73
  38. package/src/common/real-time/event-models.ts +8 -2
  39. package/src/common/types.ts +1 -0
  40. package/src/feed/event-handlers/activity/handle-activity-added.ts +9 -1
  41. package/src/feed/event-handlers/activity/handle-activity-updated.ts +4 -0
  42. package/src/feed/feed.ts +18 -3
  43. package/src/feeds-client/feeds-client.ts +106 -3
  44. package/src/utils/throttling/index.ts +2 -0
  45. package/src/utils/throttling/throttle.ts +123 -0
  46. package/src/utils/throttling/throttled-get-batched-own-capabilities.ts +42 -0
  47. package/dist/index--koeDtxd.js.map +0 -1
  48. package/dist/index-Zde8UE5f.mjs.map +0 -1
  49. package/src/feed/event-handlers/activity/activity-marked-utils.test.ts +0 -208
  50. package/src/feed/event-handlers/activity/activity-reaction-utils.test.ts +0 -371
  51. package/src/feed/event-handlers/activity/handle-activity-added.test.ts +0 -97
  52. package/src/feed/event-handlers/activity/handle-activity-deleted.test.ts +0 -117
  53. package/src/feed/event-handlers/activity/handle-activity-pinned.test.ts +0 -60
  54. package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +0 -257
  55. package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +0 -317
  56. package/src/feed/event-handlers/activity/handle-activity-reaction-updated.test.ts +0 -282
  57. package/src/feed/event-handlers/activity/handle-activity-unpinned.test.ts +0 -95
  58. package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +0 -245
  59. package/src/feed/event-handlers/add-aggregated-activities-to-state.test.ts +0 -510
  60. package/src/feed/event-handlers/bookmark/bookmark-utils.test.ts +0 -521
  61. package/src/feed/event-handlers/bookmark/handle-bookmark-added.test.ts +0 -178
  62. package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.test.ts +0 -188
  63. package/src/feed/event-handlers/bookmark/handle-bookmark-updated.test.ts +0 -196
  64. package/src/feed/event-handlers/comment/handle-comment-added.test.ts +0 -271
  65. package/src/feed/event-handlers/comment/handle-comment-deleted.test.ts +0 -255
  66. package/src/feed/event-handlers/comment/handle-comment-reaction-added.test.ts +0 -329
  67. package/src/feed/event-handlers/comment/handle-comment-reaction-deleted.test.ts +0 -343
  68. package/src/feed/event-handlers/comment/handle-comment-reaction-updated.test.ts +0 -350
  69. package/src/feed/event-handlers/comment/handle-comment-updated.test.ts +0 -267
  70. package/src/feed/event-handlers/comment/utils/update-comment-count.test.ts +0 -322
  71. package/src/feed/event-handlers/feed-member/handle-feed-member-added.test.ts +0 -75
  72. package/src/feed/event-handlers/feed-member/handle-feed-member-removed.test.ts +0 -82
  73. package/src/feed/event-handlers/feed-member/handle-feed-member-updated.test.ts +0 -84
  74. package/src/feed/event-handlers/follow/follow-state-update-queue.test.ts +0 -219
  75. package/src/feed/event-handlers/follow/handle-follow-created.test.ts +0 -250
  76. package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +0 -268
  77. package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +0 -131
  78. package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.test.ts +0 -182
  79. package/src/feed/event-handlers/story-feeds/handle-story-feeds-updated.test.ts +0 -45
  80. package/src/feed/feed.test.ts +0 -90
  81. package/src/feeds-client/event-handlers/user/handle-user-updated.test.ts +0 -53
  82. package/src/utils/event-triggered-by-connected-user.test.ts +0 -73
  83. package/src/utils/state-update-queue.test.ts +0 -129
  84. package/src/utils/unique-array-merge.test.ts +0 -179
@@ -1,33 +1,3 @@
1
- import { type Feed } from '@self';
2
- export declare const useOwnCapabilities: (feedFromProps?: Feed) => {
3
- can_add_activity: boolean;
4
- can_add_activity_bookmark: boolean;
5
- can_add_activity_reaction: boolean;
6
- can_add_comment: boolean;
7
- can_add_comment_reaction: boolean;
8
- can_create_feed: boolean;
9
- can_delete_any_activity: boolean;
10
- can_delete_any_comment: boolean;
11
- can_delete_feed: boolean;
12
- can_delete_own_activity: boolean;
13
- can_delete_own_activity_bookmark: boolean;
14
- can_delete_own_activity_reaction: boolean;
15
- can_delete_own_comment: boolean;
16
- can_delete_own_comment_reaction: boolean;
17
- can_follow: boolean;
18
- can_pin_activity: boolean;
19
- can_query_feed_members: boolean;
20
- can_query_follows: boolean;
21
- can_read_activities: boolean;
22
- can_read_feed: boolean;
23
- can_unfollow: boolean;
24
- can_update_any_activity: boolean;
25
- can_update_any_comment: boolean;
26
- can_update_feed: boolean;
27
- can_update_feed_followers: boolean;
28
- can_update_feed_members: boolean;
29
- can_update_own_activity: boolean;
30
- can_update_own_activity_bookmark: boolean;
31
- can_update_own_comment: boolean;
32
- };
1
+ import type { FeedOwnCapability, Feed } from '@self';
2
+ export declare const useOwnCapabilities: (feedFromProps?: Feed) => readonly FeedOwnCapability[];
33
3
  //# sourceMappingURL=useOwnCapabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOwnCapabilities.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAqC,MAAM,OAAO,CAAC;AAcrE,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEtD,CAAC"}
1
+ {"version":3,"file":"useOwnCapabilities.d.ts","sourceRoot":"","sources":["../../../../../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAC;AAQvE,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,IAAI,iCAuBtD,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { OwnUser } from '../../gen/models';
1
+ import type { OwnUser } from '@self';
2
+ import type { StreamApiError } from '@self';
2
3
  export interface ConnectionChangedEvent {
3
4
  type: 'connection.changed';
4
5
  online: boolean;
@@ -35,7 +36,8 @@ export interface ConnectedEvent {
35
36
  type: string;
36
37
  }
37
38
  export declare enum UnhandledErrorType {
38
- ReconnectionReconciliation = "reconnection-reconciliation"
39
+ ReconnectionReconciliation = "reconnection-reconciliation",
40
+ FetchingOwnCapabilitiesOnNewActivity = "fetching-own-capabilities-on-new-activity"
39
41
  }
40
42
  export type SyncFailure = {
41
43
  feed: string;
@@ -47,5 +49,8 @@ export type UnhandledErrorEvent = {
47
49
  } & ({
48
50
  error_type: UnhandledErrorType.ReconnectionReconciliation;
49
51
  failures: SyncFailure[];
52
+ } | {
53
+ error_type: UnhandledErrorType.FetchingOwnCapabilitiesOnNewActivity;
54
+ error: StreamApiError;
50
55
  });
51
56
  //# sourceMappingURL=event-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-models.d.ts","sourceRoot":"","sources":["../../../../src/common/real-time/event-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,EAAE,EAAE,OAAO,CAAC;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAY,kBAAkB;IAC5B,0BAA0B,gCAAgC;CAC3D;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;CAChC,GAAG,CACA;IACE,UAAU,EAAE,kBAAkB,CAAC,0BAA0B,CAAC;IAC1D,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CACJ,CAAC"}
1
+ {"version":3,"file":"event-models.d.ts","sourceRoot":"","sources":["../../../../src/common/real-time/event-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,EAAE,EAAE,OAAO,CAAC;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oBAAY,kBAAkB;IAC5B,0BAA0B,gCAAgC;IAC1D,oCAAoC,8CAA8C;CACnF;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;CAChC,GAAG,CACA;IACE,UAAU,EAAE,kBAAkB,CAAC,0BAA0B,CAAC;IAC1D,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,GACD;IACE,UAAU,EAAE,kBAAkB,CAAC,oCAAoC,CAAC;IACpE,KAAK,EAAE,cAAc,CAAC;CACvB,CACJ,CAAC"}
@@ -4,6 +4,7 @@ export type FeedsClientOptions = {
4
4
  base_url?: string;
5
5
  timeout?: number;
6
6
  configure_loggers_options?: ConfigureLoggersOptions;
7
+ query_batch_own_capabilties_throttling_interval?: number;
7
8
  };
8
9
  export type RateLimit = {
9
10
  rate_limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,uBAAuB,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAClC,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM;IAJf,IAAI,SAAoB;gBAE7B,OAAO,EAAE,MAAM,EACR,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAA,EACnC,IAAI,CAAC,EAAE,MAAM,YAAA,EACpB,YAAY,CAAC,EAAE,YAAY;CAI9B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,CAAC,EAAE,uBAAuB,CAAC;IACpD,+CAA+C,CAAC,EAAE,MAAM,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG;IAClC,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,SAAQ,KAAK;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM;IAJf,IAAI,SAAoB;gBAE7B,OAAO,EAAE,MAAM,EACR,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,YAAA,EACnC,IAAI,CAAC,EAAE,MAAM,YAAA,EACpB,YAAY,CAAC,EAAE,YAAY;CAI9B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-activity-added.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-added.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,gBAAgB,EAAE,EACjC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,QAAQ,EAAE,OAAO,GAAG,KAAK;;;EAiC1B;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,CAAC,sBAAsB,CAAC,QAY5C"}
1
+ {"version":3,"file":"handle-activity-added.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-added.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,gBAAgB,EAAE,EACjC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC1C,QAAQ,EAAE,OAAO,GAAG,KAAK;;;EAiC1B;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,YAAY,CAAC,sBAAsB,CAAC,QAoB5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-activity-updated.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-updated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAS9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD,YAAY,CAAC,wBAAwB,CAAC,EACtC,UAAU,CACX,CAAC;AAIF,eAAO,MAAM,qBAAqB,GAChC,OAAO,sBAAsB,EAC7B,YAAY,gBAAgB,EAAE,GAAG,SAAS;;;CAUxC,CAAC;AAEL,eAAO,MAAM,2BAA2B,GACtC,OAAO,sBAAsB,EAC7B,kBAAkB,mBAAmB,EAAE,GAAG,SAAS;;;CAqBjD,CAAC;AAEL,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,OAAO,QAoCjB"}
1
+ {"version":3,"file":"handle-activity-updated.d.ts","sourceRoot":"","sources":["../../../../../src/feed/event-handlers/activity/handle-activity-updated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAS9E,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CACnD,YAAY,CAAC,wBAAwB,CAAC,EACtC,UAAU,CACX,CAAC;AAIF,eAAO,MAAM,qBAAqB,GAChC,OAAO,sBAAsB,EAC7B,YAAY,gBAAgB,EAAE,GAAG,SAAS;;;CAUxC,CAAC;AAEL,eAAO,MAAM,2BAA2B,GACtC,OAAO,sBAAsB,EAC7B,kBAAkB,mBAAmB,EAAE,GAAG,SAAS;;;CAqBjD,CAAC;AAEL,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,OAAO,QAwCjB"}
@@ -5,7 +5,7 @@ import { EventDispatcher } from '../common/EventDispatcher';
5
5
  import { FeedApi } from '../gen/feeds/FeedApi';
6
6
  import type { FeedsClient } from '../feeds-client';
7
7
  import type { ActivityIdOrCommentId, GetCommentsRepliesRequest, GetCommentsRequest, LoadingStates, PagerResponseWithLoadingStates } from '../types';
8
- export type FeedState = Omit<Partial<GetOrCreateFeedResponse & FeedResponse>, 'feed' | 'duration'> & {
8
+ export type FeedState = Omit<Partial<GetOrCreateFeedResponse & FeedResponse>, 'feed' | 'own_capabilities' | 'duration'> & {
9
9
  /**
10
10
  * True when loading state using `getOrCreate`
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,16 @@
1
1
  import { FeedsApi } from '../gen/feeds/FeedsApi';
2
- import type { ActivityResponse, AddCommentReactionRequest, AddCommentReactionResponse, AddCommentRequest, AddCommentResponse, AddReactionRequest, DeleteActivityReactionResponse, DeleteCommentReactionResponse, DeleteCommentResponse, FileUploadRequest, FollowBatchRequest, FollowRequest, ImageUploadRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, UpdateActivityRequest, UpdateActivityResponse, UpdateCommentRequest, UpdateCommentResponse, UpdateFollowRequest, UserRequest } from '../gen/models';
2
+ import type { ActivityResponse, AddCommentReactionRequest, AddCommentReactionResponse, AddCommentRequest, AddCommentResponse, AddReactionRequest, DeleteActivityReactionResponse, DeleteCommentReactionResponse, DeleteCommentResponse, FeedResponse, FileUploadRequest, FollowBatchRequest, FollowRequest, ImageUploadRequest, OwnCapabilitiesBatchRequest, OwnUser, PollResponse, PollVotesResponse, QueryFeedsRequest, QueryPollVotesRequest, UpdateActivityRequest, UpdateActivityResponse, UpdateCommentRequest, UpdateCommentResponse, UpdateFollowRequest, UserRequest } from '../gen/models';
3
3
  import type { FeedsEvent, StreamFile, TokenOrProvider } from '../types';
4
4
  import { StateStore } from '@stream-io/state-store';
5
5
  import type { FeedsClientOptions, StreamResponse } from '../common/types';
6
6
  import { ModerationClient } from '../moderation-client';
7
7
  import { StreamPoll } from '../common/Poll';
8
8
  import { Feed } from '../feed';
9
+ import { type ThrottledGetBatchedOwnCapabilities } from '../utils/throttling';
9
10
  export type FeedsClientState = {
10
11
  connected_user: OwnUser | undefined;
11
12
  is_ws_connection_healthy: boolean;
13
+ own_capabilities_by_fid: Record<string, FeedResponse['own_capabilities']>;
12
14
  };
13
15
  export declare class FeedsClient extends FeedsApi {
14
16
  readonly state: StateStore<FeedsClientState>;
@@ -20,10 +22,15 @@ export declare class FeedsClient extends FeedsApi {
20
22
  private readonly polls_by_id;
21
23
  private activeFeeds;
22
24
  private healthyConnectionChangedEventCount;
25
+ protected throttledGetBatchOwnCapabilities: ThrottledGetBatchedOwnCapabilities;
26
+ private cancelGetBatchOwnCapabilitiesTimer;
27
+ private query_batch_own_capabilties_throttling_interval;
23
28
  constructor(apiKey: string, options?: FeedsClientOptions);
29
+ private setGetBatchOwnCapabilitiesThrottlingInterval;
24
30
  private recoverOnReconnect;
25
31
  pollFromState: (id: string) => StreamPoll | undefined;
26
32
  hydratePollCache(activities: ActivityResponse[]): void;
33
+ hydrateCapabilitiesCache(feedResponses: Array<Pick<FeedResponse, 'feed' | 'own_capabilities'>>): void;
27
34
  connectUser: (user: UserRequest, tokenProvider: TokenOrProvider) => Promise<void>;
28
35
  devToken: (userId: string) => string;
29
36
  closePoll: (request: {
@@ -94,6 +101,7 @@ export declare class FeedsClient extends FeedsApi {
94
101
  metadata: import("..").RequestMetadata;
95
102
  duration: string;
96
103
  }>;
104
+ ownCapabilitiesBatch(request: OwnCapabilitiesBatchRequest): Promise<StreamResponse<import("..").OwnCapabilitiesBatchResponse>>;
97
105
  updateNetworkConnectionStatus: (event: {
98
106
  type: "online" | "offline";
99
107
  } | Event) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feeds-client.d.ts","sourceRoot":"","sources":["../../../src/feeds-client/feeds-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './throttle';
2
+ export * from './throttled-get-batched-own-capabilities';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/throttling/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,0CAA0C,CAAA"}
@@ -0,0 +1,34 @@
1
+ export type ThrottledCallback = (...args: unknown[]) => unknown;
2
+ export type ThrottledFunction<T extends unknown[]> = (...args: T) => void;
3
+ /**
4
+ * Throttle a function so it runs at most once per `timeout` ms.
5
+ *
6
+ * - `leading`: fire immediately when the window opens
7
+ * - `trailing`: remember the latest args/this and fire once when the window closes
8
+ *
9
+ * defaults: `{ leading: true, trailing: false }`
10
+ *
11
+ * notes:
12
+ * - make one throttled instance and reuse it; re-creating it resets internal state
13
+ *
14
+ * @typeParam T - the function type being throttled
15
+ * @param fn - function to throttle
16
+ * @param timeout - minimum time between invocations (ms)
17
+ * @param options - behavior switches
18
+ * @param options.leading - call on the leading edge (default: true)
19
+ * @param options.trailing - call once at the end of the window with the latest args (default: false)
20
+ * @returns a throttled function with the same call signature as `fn`
21
+ *
22
+ * @example
23
+ * const send = (payload: Data) => api.post('/endpoint', payload);
24
+ * const sendThrottled = throttle(send, 2000, { leading: true, trailing: true });
25
+ * // call `sendThrottled` freely; it won’t invoke `send` more than once every 2s
26
+ */
27
+ export declare const throttle: <T extends unknown[]>(fn: (...args: T) => void, timeout?: number, { leading, trailing, }?: {
28
+ leading?: boolean;
29
+ trailing?: boolean;
30
+ }) => {
31
+ throttledFn: (this: unknown, ...args: T) => void;
32
+ cancelTimer: () => void;
33
+ };
34
+ //# sourceMappingURL=throttle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../../src/utils/throttling/throttle.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEhE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,OAAO,EAAE,EAC1C,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,EACxB,gBAAa,EACb,yBAGG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO;wBAyBlB,OAAO,WAAW,CAAC;;CA+DnD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { FeedsClient } from '@self';
2
+ import type { ThrottledFunction } from './throttle';
3
+ export type GetBatchedOwnCapabilities = {
4
+ feeds: string[];
5
+ };
6
+ export type GetBatchedOwnCapabilitiesThrottledCallback = [
7
+ feeds: string[],
8
+ callback: (feedsToClear: string[]) => void | Promise<void>
9
+ ];
10
+ export type ThrottledGetBatchedOwnCapabilities = ThrottledFunction<GetBatchedOwnCapabilitiesThrottledCallback>;
11
+ export declare const DEFAULT_BATCH_OWN_CAPABILITIES_THROTTLING_INTERVAL = 2000;
12
+ export declare function queueBatchedOwnCapabilities(this: FeedsClient, { feeds }: GetBatchedOwnCapabilities): void;
13
+ export declare function clearQueuedFeeds(): void;
14
+ //# sourceMappingURL=throttled-get-batched-own-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttled-get-batched-own-capabilities.d.ts","sourceRoot":"","sources":["../../../../src/utils/throttling/throttled-get-batched-own-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACvD,KAAK,EAAE,MAAM,EAAE;IACf,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAC5C,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;AAEhE,eAAO,MAAM,kDAAkD,OAAO,CAAC;AAIvE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,EACjB,EAAE,KAAK,EAAE,EAAE,yBAAyB,QAgBrC;AAED,wBAAgB,gBAAgB,SAE/B"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@stream-io/feeds-client",
3
- "version": "0.2.18",
3
+ "version": "0.2.19",
4
4
  "packageManager": "yarn@3.2.4",
5
- "main": "./dist/es/index.mjs",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/es/index.mjs",
6
7
  "exports": {
7
8
  ".": {
8
9
  "types": "./dist/types/index.d.ts",
@@ -39,7 +40,10 @@
39
40
  "files": [
40
41
  "dist",
41
42
  "src",
42
- "index.ts",
43
+ "!src/**/*.test.ts",
44
+ "react-bindings.js",
45
+ "react-bindings.mjs",
46
+ "react-bindings.d.ts",
43
47
  "package.json",
44
48
  "README.md",
45
49
  "LICENSE",
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Manual re-exports for React Native bundlers (e.g. Metro < 0.79) that do not
3
+ * fully support the `exports` field in package.json. These files forward to the
4
+ * built artifacts under `dist/`.
5
+ */
6
+ export * from './dist/types/bindings/react';
7
+ /**
8
+ * If we ever decide to add a `default` export to our `react-bindings` package,
9
+ * please make sure to uncomment the line below.
10
+ */
11
+ // export { default } from './dist/types/bindings/react';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+ /**
3
+ * Manual re-exports for React Native bundlers (e.g. Metro < 0.79) that do not
4
+ * fully support the `exports` field in package.json. These files forward to the
5
+ * built artifacts under `dist/`.
6
+ */
7
+ module.exports = require('./dist/cjs/react-bindings.js');
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Manual re-exports for React Native bundlers (e.g. Metro < 0.79) that do not
3
+ * fully support the `exports` field in package.json. These files forward to the
4
+ * built artifacts under `dist/`.
5
+ */
6
+ export * from './dist/es/react-bindings.mjs';
7
+ /**
8
+ * If we ever decide to add a `default` export to our `react-bindings` package,
9
+ * please make sure to uncomment the line below.
10
+ */
11
+ // export { default } from './dist/es/react-bindings.mjs';
@@ -1,84 +1,32 @@
1
- import { useMemo } from 'react';
2
- import { type Feed, type FeedState, FeedOwnCapability } from '@self';
1
+ import type { FeedOwnCapability, Feed, FeedsClientState } from '@self';
3
2
  import { useStateStore } from '@stream-io/state-store/react-bindings';
4
3
  import { useFeedContext } from '../../contexts/StreamFeedContext';
4
+ import { useFeedsClient } from '../../contexts/StreamFeedsContext';
5
+ import { useCallback } from 'react';
5
6
 
6
7
  const stableEmptyArray: readonly FeedOwnCapability[] = [];
7
8
 
8
- const selector = (currentState: FeedState) => ({
9
- oc: currentState.own_capabilities ?? stableEmptyArray,
10
- });
11
-
12
- type KebabToSnakeCase<S extends string> = S extends `${infer T}-${infer U}`
13
- ? `${T}_${KebabToSnakeCase<U>}`
14
- : S;
15
-
16
9
  export const useOwnCapabilities = (feedFromProps?: Feed) => {
10
+ const client = useFeedsClient();
17
11
  const feedFromContext = useFeedContext();
18
12
  const feed = feedFromProps ?? feedFromContext;
13
+ const fid = feed?.feed;
14
+
15
+ const selector = useCallback((currentState: FeedsClientState) => {
16
+ if (!fid) {
17
+ return { feedOwnCapabilities: stableEmptyArray };
18
+ }
19
+
20
+ return {
21
+ feedOwnCapabilities:
22
+ currentState.own_capabilities_by_fid[fid] ?? stableEmptyArray,
23
+ };
24
+ }, [fid]);
25
+
26
+ const { feedOwnCapabilities = stableEmptyArray } =
27
+ useStateStore(client?.state, selector) ?? {};
19
28
 
20
- const { oc = stableEmptyArray } = useStateStore(feed?.state, selector) ?? {};
29
+ // console.log('GETTING CAPA: ', feed?.feed, feedOwnCapabilities);
21
30
 
22
- return useMemo(
23
- () => {
24
- const capabilitiesSet = new Set(oc);
25
- return ({
26
- can_add_activity: capabilitiesSet.has(FeedOwnCapability.ADD_ACTIVITY),
27
- can_add_activity_bookmark:
28
- capabilitiesSet.has(FeedOwnCapability.ADD_ACTIVITY_BOOKMARK),
29
- can_add_activity_reaction:
30
- capabilitiesSet.has(FeedOwnCapability.ADD_ACTIVITY_REACTION),
31
- can_add_comment: capabilitiesSet.has(FeedOwnCapability.ADD_COMMENT),
32
- can_add_comment_reaction:
33
- capabilitiesSet.has(FeedOwnCapability.ADD_COMMENT_REACTION),
34
- can_create_feed: capabilitiesSet.has(FeedOwnCapability.CREATE_FEED),
35
- can_delete_any_activity:
36
- capabilitiesSet.has(FeedOwnCapability.DELETE_ANY_ACTIVITY),
37
- can_delete_any_comment:
38
- capabilitiesSet.has(FeedOwnCapability.DELETE_ANY_COMMENT),
39
- can_delete_feed: capabilitiesSet.has(FeedOwnCapability.DELETE_FEED),
40
- can_delete_own_activity:
41
- capabilitiesSet.has(FeedOwnCapability.DELETE_OWN_ACTIVITY),
42
- can_delete_own_activity_bookmark:
43
- capabilitiesSet.has(FeedOwnCapability.DELETE_OWN_ACTIVITY_BOOKMARK),
44
- can_delete_own_activity_reaction:
45
- capabilitiesSet.has(FeedOwnCapability.DELETE_OWN_ACTIVITY_REACTION),
46
- can_delete_own_comment:
47
- capabilitiesSet.has(FeedOwnCapability.DELETE_OWN_COMMENT),
48
- can_delete_own_comment_reaction:
49
- capabilitiesSet.has(FeedOwnCapability.DELETE_OWN_COMMENT_REACTION),
50
- can_follow: capabilitiesSet.has(FeedOwnCapability.FOLLOW),
51
- can_pin_activity: capabilitiesSet.has(FeedOwnCapability.PIN_ACTIVITY),
52
- can_query_feed_members:
53
- capabilitiesSet.has(FeedOwnCapability.QUERY_FEED_MEMBERS),
54
- can_query_follows:
55
- capabilitiesSet.has(FeedOwnCapability.QUERY_FOLLOWS),
56
- can_read_activities:
57
- capabilitiesSet.has(FeedOwnCapability.READ_ACTIVITIES),
58
- can_read_feed: capabilitiesSet.has(FeedOwnCapability.READ_FEED),
59
- can_unfollow: capabilitiesSet.has(FeedOwnCapability.UNFOLLOW),
60
- can_update_any_activity:
61
- capabilitiesSet.has(FeedOwnCapability.UPDATE_ANY_ACTIVITY),
62
- can_update_any_comment:
63
- capabilitiesSet.has(FeedOwnCapability.UPDATE_ANY_COMMENT),
64
- can_update_feed: capabilitiesSet.has(FeedOwnCapability.UPDATE_FEED),
65
- can_update_feed_followers:
66
- capabilitiesSet.has(FeedOwnCapability.UPDATE_FEED_FOLLOWERS),
67
- can_update_feed_members:
68
- capabilitiesSet.has(FeedOwnCapability.UPDATE_FEED_MEMBERS),
69
- can_update_own_activity:
70
- capabilitiesSet.has(FeedOwnCapability.UPDATE_OWN_ACTIVITY),
71
- can_update_own_activity_bookmark:
72
- capabilitiesSet.has(FeedOwnCapability.UPDATE_OWN_ACTIVITY_BOOKMARK),
73
- can_update_own_comment:
74
- capabilitiesSet.has(FeedOwnCapability.UPDATE_OWN_COMMENT),
75
- }) satisfies Record<
76
- `can_${KebabToSnakeCase<
77
- (typeof FeedOwnCapability)[keyof typeof FeedOwnCapability]
78
- >}`,
79
- boolean
80
- >;
81
- },
82
- [oc],
83
- );
31
+ return feedOwnCapabilities;
84
32
  };
@@ -1,4 +1,5 @@
1
- import type { OwnUser } from '../../gen/models';
1
+ import type { OwnUser } from '@self';
2
+ import type { StreamApiError } from '@self';
2
3
 
3
4
  export interface ConnectionChangedEvent {
4
5
  type: 'connection.changed';
@@ -39,9 +40,10 @@ export interface ConnectedEvent {
39
40
 
40
41
  export enum UnhandledErrorType {
41
42
  ReconnectionReconciliation = 'reconnection-reconciliation',
43
+ FetchingOwnCapabilitiesOnNewActivity = 'fetching-own-capabilities-on-new-activity',
42
44
  }
43
45
 
44
- export type SyncFailure = { feed: string, reason: unknown };
46
+ export type SyncFailure = { feed: string; reason: unknown };
45
47
 
46
48
  export type UnhandledErrorEvent = {
47
49
  type: 'errors.unhandled';
@@ -51,4 +53,8 @@ export type UnhandledErrorEvent = {
51
53
  error_type: UnhandledErrorType.ReconnectionReconciliation;
52
54
  failures: SyncFailure[];
53
55
  }
56
+ | {
57
+ error_type: UnhandledErrorType.FetchingOwnCapabilitiesOnNewActivity;
58
+ error: StreamApiError;
59
+ }
54
60
  );
@@ -6,6 +6,7 @@ export type FeedsClientOptions = {
6
6
  base_url?: string;
7
7
  timeout?: number;
8
8
  configure_loggers_options?: ConfigureLoggersOptions;
9
+ query_batch_own_capabilties_throttling_interval?: number;
9
10
  };
10
11
 
11
12
  export type RateLimit = {
@@ -52,7 +52,15 @@ export function handleActivityAdded(
52
52
  this.currentState.addNewActivitiesTo,
53
53
  );
54
54
  if (result.changed) {
55
- this.client.hydratePollCache([event.activity]);
55
+ const activity = event.activity;
56
+ this.client.hydratePollCache([activity]);
57
+
58
+ const currentFeed = activity.current_feed;
59
+
60
+ if (currentFeed) {
61
+ this.client.hydrateCapabilitiesCache([currentFeed]);
62
+ }
63
+
56
64
  this.state.partialNext({ activities: result.activities });
57
65
  }
58
66
  }
@@ -92,6 +92,10 @@ export function handleActivityUpdated(
92
92
  if (result1?.changed || result2.changed) {
93
93
  this.client.hydratePollCache([payload.activity]);
94
94
 
95
+ if (payload.activity.current_feed) {
96
+ this.client.hydrateCapabilitiesCache([payload.activity.current_feed]);
97
+ }
98
+
95
99
  this.state.partialNext({
96
100
  activities: result1?.changed ? result1.entities : currentActivities,
97
101
  pinned_activities: result2.entities,
package/src/feed/feed.ts CHANGED
@@ -62,7 +62,7 @@ import { checkHasAnotherPage, Constants, uniqueArrayMerge } from '../utils';
62
62
 
63
63
  export type FeedState = Omit<
64
64
  Partial<GetOrCreateFeedResponse & FeedResponse>,
65
- 'feed' | 'duration'
65
+ 'feed' | 'own_capabilities' | 'duration'
66
66
  > & {
67
67
  /**
68
68
  * True when loading state using `getOrCreate`
@@ -288,6 +288,16 @@ export class Feed extends FeedApi {
288
288
 
289
289
  try {
290
290
  const response = await super.getOrCreate(request);
291
+
292
+ const currentActivityFeeds = [];
293
+ for (const activity of response.activities) {
294
+ if (activity.current_feed) {
295
+ currentActivityFeeds.push(activity.current_feed);
296
+ }
297
+ }
298
+
299
+ this.client.hydrateCapabilitiesCache([response.feed, ...currentActivityFeeds]);
300
+
291
301
  if (request?.next) {
292
302
  const { activities: currentActivities = [] } = this.currentState;
293
303
 
@@ -849,11 +859,16 @@ export class Feed extends FeedApi {
849
859
  });
850
860
  }
851
861
 
852
- addActivity(request: Omit<ActivityRequest, 'feeds'>) {
853
- return this.feedsApi.addActivity({
862
+ async addActivity(request: Omit<ActivityRequest, 'feeds'>) {
863
+ const response = await this.client.addActivity({
854
864
  ...request,
855
865
  feeds: [this.feed],
856
866
  });
867
+ const currentFeed = response.activity.current_feed;
868
+ if (currentFeed) {
869
+ this.client.hydrateCapabilitiesCache([currentFeed]);
870
+ }
871
+ return response;
857
872
  }
858
873
 
859
874
  on = this.eventDispatcher.on;