@amityco/ts-sdk 0.0.1-beta.41.1 → 0.0.1-beta.42.2

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 (122) hide show
  1. package/dist/@types/core/model.d.ts +3 -1
  2. package/dist/@types/core/model.d.ts.map +1 -1
  3. package/dist/@types/domains/category.d.ts +1 -1
  4. package/dist/@types/domains/category.d.ts.map +1 -1
  5. package/dist/@types/domains/comment.d.ts +1 -1
  6. package/dist/@types/domains/comment.d.ts.map +1 -1
  7. package/dist/@types/domains/community.d.ts +1 -1
  8. package/dist/@types/domains/community.d.ts.map +1 -1
  9. package/dist/@types/domains/message.d.ts +1 -1
  10. package/dist/@types/domains/message.d.ts.map +1 -1
  11. package/dist/@types/domains/post.d.ts +1 -1
  12. package/dist/@types/domains/post.d.ts.map +1 -1
  13. package/dist/@types/domains/subChannel.d.ts +1 -1
  14. package/dist/@types/domains/subChannel.d.ts.map +1 -1
  15. package/dist/cache/utils/index.d.ts +1 -0
  16. package/dist/cache/utils/index.d.ts.map +1 -1
  17. package/dist/category/api/queryCategories.d.ts.map +1 -1
  18. package/dist/category/observers/liveCategories.d.ts.map +1 -1
  19. package/dist/channel/observers/liveChannel.d.ts.map +1 -1
  20. package/dist/channel/observers/liveChannels.d.ts.map +1 -1
  21. package/dist/comment/api/queryComments.d.ts.map +1 -1
  22. package/dist/comment/api/tests/queryComments.test.d.ts +2 -0
  23. package/dist/comment/api/tests/queryComments.test.d.ts.map +1 -0
  24. package/dist/comment/observers/liveComments.d.ts.map +1 -1
  25. package/dist/community/api/queryCommunities.d.ts.map +1 -1
  26. package/dist/community/observers/liveCommunities.d.ts.map +1 -1
  27. package/dist/core/model/idResolvers.d.ts.map +1 -1
  28. package/dist/core/model/identifyModel.d.ts.map +1 -1
  29. package/dist/core/model/index.d.ts +1 -1
  30. package/dist/core/model/index.d.ts.map +1 -1
  31. package/dist/follow/api/getFollowInfo.d.ts.map +1 -1
  32. package/dist/follow/observers/index.d.ts +1 -0
  33. package/dist/follow/observers/index.d.ts.map +1 -1
  34. package/dist/follow/observers/liveFollowInfo.d.ts +21 -0
  35. package/dist/follow/observers/liveFollowInfo.d.ts.map +1 -0
  36. package/dist/follow/observers/tests/liveFollowInfo.test.d.ts +2 -0
  37. package/dist/follow/observers/tests/liveFollowInfo.test.d.ts.map +1 -0
  38. package/dist/index.cjs.js +112 -63
  39. package/dist/index.esm.js +112 -64
  40. package/dist/index.umd.js +4 -4
  41. package/dist/message/api/createMessage.d.ts +2 -1
  42. package/dist/message/api/createMessage.d.ts.map +1 -1
  43. package/dist/message/observers/liveMessages.d.ts.map +1 -1
  44. package/dist/message/utils/index.d.ts +3 -2
  45. package/dist/message/utils/index.d.ts.map +1 -1
  46. package/dist/post/api/queryPosts.d.ts.map +1 -1
  47. package/dist/post/observers/livePosts.d.ts.map +1 -1
  48. package/dist/subChannel/api/querySubChannels.d.ts.map +1 -1
  49. package/dist/subChannel/observers/liveSubChannels.d.ts.map +1 -1
  50. package/dist/utils/constants.d.ts +1 -0
  51. package/dist/utils/constants.d.ts.map +1 -1
  52. package/dist/utils/liveObject.d.ts +1 -1
  53. package/dist/utils/liveObject.d.ts.map +1 -1
  54. package/dist/utils/tests/dummy/comment.d.ts +77 -0
  55. package/dist/utils/tests/dummy/comment.d.ts.map +1 -0
  56. package/dist/utils/tests/dummy/community.d.ts +1 -1
  57. package/dist/utils/tests/dummy/index.d.ts +1 -0
  58. package/dist/utils/tests/dummy/index.d.ts.map +1 -1
  59. package/dist/utils/tests/dummy/post.d.ts +0 -12
  60. package/dist/utils/tests/dummy/post.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/src/@types/core/model.ts +3 -1
  63. package/src/@types/domains/category.ts +1 -1
  64. package/src/@types/domains/comment.ts +1 -1
  65. package/src/@types/domains/community.ts +1 -1
  66. package/src/@types/domains/message.ts +1 -1
  67. package/src/@types/domains/post.ts +1 -1
  68. package/src/@types/domains/subChannel.ts +1 -1
  69. package/src/cache/utils/index.ts +5 -2
  70. package/src/category/api/queryCategories.ts +2 -1
  71. package/src/category/observers/liveCategories.ts +3 -1
  72. package/src/category/observers/tests/liveCategories.test.ts +1 -3
  73. package/src/channel/api/tests/addChannelMembers.test.ts +13 -0
  74. package/src/channel/api/tests/queryChannelMembers.test.ts +1 -0
  75. package/src/channel/api/tests/removeChannelMembers.test.ts +9 -2
  76. package/src/channel/observers/liveChannel.ts +16 -1
  77. package/src/channel/observers/liveChannels.ts +11 -9
  78. package/src/comment/api/queryComments.ts +2 -1
  79. package/src/comment/api/tests/createComment.test.ts +17 -112
  80. package/src/comment/api/tests/queryComments.test.ts +147 -0
  81. package/src/comment/api/tests/updateComment.test.ts +14 -85
  82. package/src/comment/observers/liveComments.ts +12 -7
  83. package/src/community/api/queryCommunities.ts +2 -1
  84. package/src/community/api/test/queryCommunity.test.ts +30 -0
  85. package/src/community/observers/liveCommunities.ts +13 -7
  86. package/src/community/observers/tests/liveCommunities.test.ts +2 -2
  87. package/src/core/model/idResolvers.ts +1 -0
  88. package/src/core/model/identifyModel.ts +2 -1
  89. package/src/core/model/index.ts +11 -2
  90. package/src/follow/api/getFollowInfo.ts +4 -8
  91. package/src/follow/observers/index.ts +1 -0
  92. package/src/follow/observers/liveFollowInfo.ts +29 -0
  93. package/src/follow/observers/tests/liveFollowInfo.test.ts +198 -0
  94. package/src/message/api/createMessage.ts +17 -5
  95. package/src/message/api/tests/createMessage.test.ts +36 -5
  96. package/src/message/api/tests/deleteMessage.test.ts +10 -3
  97. package/src/message/api/tests/getMessage.test.ts +9 -3
  98. package/src/message/api/tests/queryMessages.test.ts +30 -0
  99. package/src/message/api/tests/updateMessage.test.ts +9 -2
  100. package/src/message/observers/liveMessages.ts +15 -15
  101. package/src/message/tests/observers/liveMessages.test.ts +2 -2
  102. package/src/message/utils/index.ts +10 -1
  103. package/src/post/api/queryPosts.ts +2 -1
  104. package/src/post/api/tests/queryPosts.test.ts +30 -0
  105. package/src/post/observers/livePosts.ts +16 -11
  106. package/src/post/observers/tests/livePosts.test.ts +4 -5
  107. package/src/reaction/api/tests/addReaction.test.ts +13 -0
  108. package/src/reaction/api/tests/removeReaction.test.ts +13 -0
  109. package/src/subChannel/api/querySubChannels.ts +2 -1
  110. package/src/subChannel/observers/liveSubChannels.ts +6 -5
  111. package/src/subChannel/observers/tests/liveSubChannels.test.ts +5 -2
  112. package/src/utils/constants.ts +2 -1
  113. package/src/utils/liveObject.ts +1 -4
  114. package/src/utils/tests/dummy/comment.ts +268 -0
  115. package/src/utils/tests/dummy/index.ts +1 -0
  116. package/src/utils/tests/dummy/post.ts +0 -114
  117. package/dist/post/tests/api/getPost.test.d.ts +0 -2
  118. package/dist/post/tests/api/getPost.test.d.ts.map +0 -1
  119. package/dist/post/tests/api/queryPosts.test.d.ts +0 -2
  120. package/dist/post/tests/api/queryPosts.test.d.ts.map +0 -1
  121. package/src/post/tests/api/getPost.test.ts +0 -98
  122. package/src/post/tests/api/queryPosts.test.ts +0 -123
package/dist/index.esm.js CHANGED
@@ -81,8 +81,8 @@ const PostContentType = Object.freeze({
81
81
 
82
82
  function getVersion() {
83
83
  try {
84
- // the string ''v0.0.1-beta.41.1-esm'' should be replaced by actual value by @rollup/plugin-replace
85
- return 'v0.0.1-beta.41.1-esm';
84
+ // the string ''v0.0.1-beta.42.2-esm'' should be replaced by actual value by @rollup/plugin-replace
85
+ return 'v0.0.1-beta.42.2-esm';
86
86
  }
87
87
  catch (error) {
88
88
  return '__dev__';
@@ -90,11 +90,22 @@ function getVersion() {
90
90
  }
91
91
  const VERSION = getVersion();
92
92
 
93
+ const COLLECTION_DEFAULT_PAGINATION_LIMIT = 5;
94
+ const COLLECTION_DEFAULT_CACHING_POLICY = 'cache_then_server';
95
+ const ENABLE_CACHE_MESSAGE = 'For using Live Collection feature you need to enable Cache!';
96
+ const LIVE_OBJECT_ENABLE_CACHE_MESSAGE = 'For using Live Object feature you need to enable Cache!';
97
+ const UNSYNCED_OBJECT_CACHED_AT_MESSAGE = 'Observing unsynced object is not supported by Live Object.';
98
+ const UNSYNCED_OBJECT_CACHED_AT_VALUE = -5;
99
+ const SECOND = 1000;
100
+ const MINUTE = 60 * SECOND;
101
+ const ACCESS_TOKEN_WATCHER_INTERVAL = 10 * MINUTE;
102
+
93
103
  // cache constants
94
104
  const CACHE_KEY_GET = 'get';
95
105
  const CACHE_KEY_TOMBSTONE = 'dead';
96
- const CACHE_LIFESPAN = 1 * 60 * 1000; // 1 minute
97
- const CACHE_LIFESPAN_TOMBSTONE = 3 * 60 * 1000; // 3 minutes
106
+ const CACHE_SHORTEN_LIFESPAN = 2 * SECOND;
107
+ const CACHE_LIFESPAN = 1 * MINUTE; // 1 minute
108
+ const CACHE_LIFESPAN_TOMBSTONE = 3 * MINUTE; // 3 minutes
98
109
  /**
99
110
  * Shallow-clones an object and sort its keys
100
111
  *
@@ -498,6 +509,7 @@ const idResolvers = {
498
509
  reaction: ({ reactionId }) => reactionId,
499
510
  stream: ({ streamId }) => streamId,
500
511
  follow: ({ from, to }) => `${from}#${to}`,
512
+ followInfo: ({ userId }) => userId,
501
513
  followCount: ({ userId }) => userId,
502
514
  feed: ({ targetId, feedId }) => `${targetId}#${feedId}`,
503
515
  };
@@ -536,8 +548,9 @@ const CRITERIAS = {
536
548
  reaction: ['reactionId'],
537
549
  stream: ['streamId'],
538
550
  follow: ['from', 'to'],
539
- followCount: ['userId', 'followerCount'],
540
551
  feed: ['feedId', 'feedType'],
552
+ followInfo: ['userId', 'status'],
553
+ followCount: ['userId', 'followerCount'],
541
554
  };
542
555
  /** @hidden */
543
556
  const hasKeys = (object, needles) => {
@@ -602,7 +615,15 @@ const PAYLOAD2MODEL = {
602
615
  };
603
616
  /** hidden */
604
617
  const hasUpdates = (prevData, nextData) => {
605
- return new Date(prevData.updatedAt) < new Date(nextData.updatedAt);
618
+ if ('updatedAt' in prevData && 'updatedAt' in nextData) {
619
+ return new Date(prevData.updatedAt) < new Date(nextData.updatedAt);
620
+ }
621
+ /*
622
+ * hasUpdates is used to identify the latest object among many. If the object
623
+ * does not extend ${Amity.UpdatedAt}, then there is no way to differentiate.
624
+ * So it is considered by default that the object hasUpdates
625
+ */
626
+ return true;
606
627
  };
607
628
  /** hidden */
608
629
  function getFutureDate(date = new Date().toISOString()) {
@@ -20357,15 +20378,6 @@ const getFeedSettings = async () => {
20357
20378
  }));
20358
20379
  };
20359
20380
 
20360
- const COLLECTION_DEFAULT_PAGINATION_LIMIT = 5;
20361
- const COLLECTION_DEFAULT_CACHING_POLICY = 'cache_then_server';
20362
- const ENABLE_CACHE_MESSAGE = 'For using Live Collection feature you need to enable Cache!';
20363
- const LIVE_OBJECT_ENABLE_CACHE_MESSAGE = 'For using Live Object feature you need to enable Cache!';
20364
- const UNSYNCED_OBJECT_CACHED_AT_MESSAGE = 'Observing unsynced object is not supported by Live Object.';
20365
- const UNSYNCED_OBJECT_CACHED_AT_VALUE = -5;
20366
- const MINUTE = 60 * 1000;
20367
- const ACCESS_TOKEN_WATCHER_INTERVAL = 10 * MINUTE;
20368
-
20369
20381
  // TODO: find a way to uniquely identify the device
20370
20382
  /** @hidden */
20371
20383
  const getDeviceId = () => {
@@ -22177,8 +22189,8 @@ function convertParams(_a) {
22177
22189
  return Object.assign({ messageFeedId: subChannelId, mentionedUsers: mentionees }, rest);
22178
22190
  }
22179
22191
  function convertQueryParams$1(_a) {
22180
- var { page, sortBy, subChannelId, tags } = _a, rest = __rest(_a, ["page", "sortBy", "subChannelId", "tags"]);
22181
- const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, options: { token: toToken(page || { limit: 10 }, 'afterbeforeraw') } });
22192
+ var { page, sortBy, subChannelId, tags, includeDeleted } = _a, rest = __rest(_a, ["page", "sortBy", "subChannelId", "tags", "includeDeleted"]);
22193
+ const out = Object.assign(Object.assign({}, rest), { messageFeedId: subChannelId, isDeleted: includeDeleted === false ? false : undefined, options: { token: toToken(page || { limit: 10 }, 'afterbeforeraw') } });
22182
22194
  if (sortBy !== undefined) {
22183
22195
  out.options.sortBy = sortBy;
22184
22196
  }
@@ -22440,7 +22452,7 @@ let uniqueId;
22440
22452
  const createMessage = async (bundle) => {
22441
22453
  const client = getActiveClient();
22442
22454
  client.log('message/createMessage', bundle);
22443
- const referenceId = uniqueId || getLocalId();
22455
+ const referenceId = bundle.referenceId || uniqueId || getLocalId();
22444
22456
  uniqueId = undefined;
22445
22457
  const { data: payload } = await client.http.post('/api/v5/messages', Object.assign(Object.assign({}, convertParams(bundle)), { referenceId }));
22446
22458
  const data = prepareMessagePayload(payload);
@@ -22473,8 +22485,9 @@ const createMessage = async (bundle) => {
22473
22485
  *
22474
22486
  * @category Message API
22475
22487
  */
22476
- createMessage.optimistically = (bundle) => {
22477
- var _a, _b;
22488
+ createMessage.optimistically = (_a) => {
22489
+ var _b, _c;
22490
+ var { referenceId } = _a, bundle = __rest(_a, ["referenceId"]);
22478
22491
  const client = getActiveClient();
22479
22492
  if (!client.cache)
22480
22493
  return;
@@ -22485,7 +22498,7 @@ createMessage.optimistically = (bundle) => {
22485
22498
  * Updated to handle client requirement to add messageId while uploading
22486
22499
  * message with image. Temporary!
22487
22500
  */
22488
- uniqueId = getLocalId();
22501
+ uniqueId = referenceId || getLocalId();
22489
22502
  const bundleWithMessageId = Object.assign({ messageId: uniqueId, uniqueId }, bundle);
22490
22503
  client.log('message/createMessage.optimistically', bundleWithMessageId);
22491
22504
  const subChannel = pullFromCache(['subChannel', 'get', bundle.subChannelId]);
@@ -22494,13 +22507,13 @@ createMessage.optimistically = (bundle) => {
22494
22507
  if (subChannel.data.channelId === subChannel.data.subChannelId) {
22495
22508
  const channel = pullFromCache(['channel', 'get', subChannel.data.channelId]);
22496
22509
  if (channel === null || channel === void 0 ? void 0 : channel.data) {
22497
- upsertInCache(['channel', 'get', subChannel.data.channelId], Object.assign(Object.assign({}, channel.data), { messageCount: ((_a = channel.data.messageCount) !== null && _a !== void 0 ? _a : 0) + 1 }));
22510
+ upsertInCache(['channel', 'get', subChannel.data.channelId], Object.assign(Object.assign({}, channel.data), { messageCount: ((_b = channel.data.messageCount) !== null && _b !== void 0 ? _b : 0) + 1 }));
22498
22511
  }
22499
22512
  }
22500
22513
  }
22501
22514
  // as reused to update created and updated time, which should be the same
22502
22515
  const createdTime = new Date().toISOString();
22503
- const message = Object.assign({ creatorId: client.userId, channelSegment: ((_b = subChannel === null || subChannel === void 0 ? void 0 : subChannel.data.messageCount) !== null && _b !== void 0 ? _b : 0) + 1, childrenNumber: 0, createdAt: createdTime, updatedAt: createdTime }, bundleWithMessageId);
22516
+ const message = Object.assign({ creatorId: client.userId, channelSegment: ((_c = subChannel === null || subChannel === void 0 ? void 0 : subChannel.data.messageCount) !== null && _c !== void 0 ? _c : 0) + 1, childrenNumber: 0, createdAt: createdTime, updatedAt: createdTime }, bundleWithMessageId);
22504
22517
  const cachedAt = UNSYNCED_OBJECT_CACHED_AT_VALUE;
22505
22518
  pushToCache(['message', 'get', message.messageId], message, { cachedAt });
22506
22519
  fireEvent('local.message.created', { messages: [message] });
@@ -22718,13 +22731,13 @@ const prepareMembershipPayload = (payload, memberProp, userIdProp = 'userId', us
22718
22731
  const queryPosts = async (query) => {
22719
22732
  const client = getActiveClient();
22720
22733
  client.log('post/queryPosts', query);
22721
- const { page = { limit: 10 } } = query, params = __rest(query, ["page"]);
22734
+ const { page = { limit: 10 }, includeDeleted } = query, params = __rest(query, ["page", "includeDeleted"]);
22722
22735
  const { dataTypes, matchingOnlyParentPost } = params;
22723
22736
  // API-FIX: parameters should be querystring. (1)
22724
22737
  // API-FIX: backend should answer Amity.Response (2)
22725
22738
  // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
22726
22739
  const { data } = await client.http.get(`/api/v4/posts`, {
22727
- params: Object.assign(Object.assign({}, params), {
22740
+ params: Object.assign(Object.assign({}, params), { isDeleted: includeDeleted === false ? false : undefined,
22728
22741
  /*
22729
22742
  * when creating post like image, file, video BE will create 2 posts
22730
22743
  * 1. parent post to store text with dataType=text
@@ -23052,12 +23065,12 @@ const queryCommunities = async (query) => {
23052
23065
  client.log('channel/queryCommunities', query);
23053
23066
  // safe decapsulation
23054
23067
  const _a = query !== null && query !== void 0 ? query : {}, { page } = _a, params = __rest(_a, ["page"]);
23055
- const _b = params !== null && params !== void 0 ? params : {}, { displayName, membership } = _b, restParams = __rest(_b, ["displayName", "membership"]);
23068
+ const _b = params !== null && params !== void 0 ? params : {}, { displayName, membership, includeDeleted } = _b, restParams = __rest(_b, ["displayName", "membership", "includeDeleted"]);
23056
23069
  // API-FIX: parameters should be querystring.
23057
23070
  // API-FIX: backend doesnt answer Amity.Response
23058
23071
  // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<CommunityPayload>>>(
23059
23072
  const { data } = await client.http.get(`/api/v3/communities`, {
23060
- params: Object.assign(Object.assign({}, restParams), { keyword: displayName, filter: membership, options: {
23073
+ params: Object.assign(Object.assign({}, restParams), { isDeleted: includeDeleted === false ? false : undefined, keyword: displayName, filter: membership, options: {
23061
23074
  token: toToken(page, 'skiplimit'),
23062
23075
  } }),
23063
23076
  });
@@ -23898,7 +23911,7 @@ const declinePost = async (postId) => {
23898
23911
  const queryComments = async (query) => {
23899
23912
  const client = getActiveClient();
23900
23913
  client.log('comment/queryComments', query);
23901
- const { page = { limit: 10 } } = query, params = __rest(query, ["page"]);
23914
+ const { page = { limit: 10 }, includeDeleted } = query, params = __rest(query, ["page", "includeDeleted"]);
23902
23915
  const options = {
23903
23916
  type: params.sortBy ? 'pagination' : undefined,
23904
23917
  token: toToken(page, params.sortBy ? 'skiplimit' : 'afterbefore'),
@@ -23908,7 +23921,7 @@ const queryComments = async (query) => {
23908
23921
  // API-FIX: backend should answer Amity.Response (2)
23909
23922
  // const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.CommentPayload>>>(
23910
23923
  const { data } = await client.http.get(`/api/v3/comments`, {
23911
- params: Object.assign(Object.assign({}, params), {
23924
+ params: Object.assign(Object.assign({}, params), { isDeleted: includeDeleted === false ? false : undefined,
23912
23925
  // filterByParentId, API-FIX: backend does not support this boolean LOL. what the hell seriously.
23913
23926
  options }),
23914
23927
  });
@@ -26765,6 +26778,11 @@ const liveChannel = (channelId, callback) => {
26765
26778
  onChannelUpdated,
26766
26779
  onChannelDeleted,
26767
26780
  onChannelJoined,
26781
+ onChannelLeft,
26782
+ onChannelMemberAdded,
26783
+ onChannelMemberRemoved,
26784
+ onChannelMemberBanned,
26785
+ onChannelMemberUnbanned,
26768
26786
  onChannelMuted,
26769
26787
  () => onMessageCreated(() => null), // watch unread count
26770
26788
  ]);
@@ -26881,13 +26899,14 @@ const liveChannels = (params, callback, config) => {
26881
26899
  }
26882
26900
  pushToCache(cacheKey, data);
26883
26901
  responder(data);
26884
- }, queryOptions(policy));
26902
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
26885
26903
  };
26886
26904
  disposers.push(onChannelCreated(realtimeRouter()), onChannelDeleted(realtimeRouter()), onChannelUpdated(realtimeRouter()), onChannelMuted(realtimeRouter()), onChannelJoined(realtimeRouter()), onChannelLeft(realtimeRouter()), onChannelMemberAdded(realtimeRouter()), onChannelMemberRemoved(realtimeRouter()), onMessageCreated(() => null));
26887
26905
  onFetch();
26888
26906
  return () => {
26889
26907
  log(`liveChannels(tmpid: ${timestamp}) > dispose`);
26890
26908
  disposers.forEach(fn => fn());
26909
+ dropFromCache(cacheKey);
26891
26910
  };
26892
26911
  };
26893
26912
 
@@ -27045,9 +27064,9 @@ function convertQueryParams(_a) {
27045
27064
  const querySubChannels = async (query) => {
27046
27065
  const client = getActiveClient();
27047
27066
  client.log('channel/querySubChannels', query);
27048
- const _a = convertQueryParams(query), { page = { limit: 10 }, channelId } = _a, params = __rest(_a, ["page", "channelId"]);
27067
+ const _a = convertQueryParams(query), { page = { limit: 10 }, channelId, includeDeleted } = _a, params = __rest(_a, ["page", "channelId", "includeDeleted"]);
27049
27068
  const response = await client.http.get(`/api/v5/message-feeds/channel/${channelId}`, {
27050
- params: Object.assign(Object.assign({}, params), { options: {
27069
+ params: Object.assign(Object.assign({}, params), { isDeleted: includeDeleted === false ? false : undefined, options: {
27051
27070
  token: toToken(page, 'skiplimit'),
27052
27071
  } }),
27053
27072
  });
@@ -27490,8 +27509,8 @@ const liveSubChannels = (params, callback, config) => {
27490
27509
  const responder = (data) => {
27491
27510
  var _a;
27492
27511
  let subChannels = data.data;
27493
- if (params.isDeleted !== undefined) {
27494
- subChannels = filterByPropEquality(subChannels, 'isDeleted', params.isDeleted);
27512
+ if (params.includeDeleted === false) {
27513
+ subChannels = filterByPropEquality(subChannels, 'isDeleted', false);
27495
27514
  }
27496
27515
  subChannels.sort(sortByLastActivity);
27497
27516
  callback({
@@ -27531,7 +27550,7 @@ const liveSubChannels = (params, callback, config) => {
27531
27550
  data: result ? merge(subChannels, result) : subChannels,
27532
27551
  };
27533
27552
  responder(snapshot);
27534
- }, queryOptions(policy));
27553
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
27535
27554
  };
27536
27555
  disposers.push(onSubChannelCreated(realtimeRouter('onCreate')), onSubChannelDeleted(realtimeRouter('onDelete')), onSubChannelFetched(realtimeRouter('onFetch')), onSubChannelUpdated(realtimeRouter('onUpdate')));
27537
27556
  onFetch();
@@ -27636,9 +27655,11 @@ const liveMessages = (params, callback, config) => {
27636
27655
  .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [];
27637
27656
  /*
27638
27657
  * for cases when message is deleted via RTE, this flag is used to get
27639
- * items fro cache that are deleted | !deleted
27658
+ * items from cache that are !deleted
27640
27659
  */
27641
- messages = filterByPropEquality(messages, 'isDeleted', params.isDeleted);
27660
+ if (params.includeDeleted === false) {
27661
+ messages = filterByPropEquality(messages, 'isDeleted', false);
27662
+ }
27642
27663
  callback({
27643
27664
  onNextPage: onFetch,
27644
27665
  data: messages,
@@ -27647,17 +27668,12 @@ const liveMessages = (params, callback, config) => {
27647
27668
  error: data.error,
27648
27669
  });
27649
27670
  };
27650
- const realtimeRouter = (action) => (message) => {
27671
+ const realtimeRouter = (_) => (message) => {
27651
27672
  var _a;
27652
27673
  const collection = (_a = pullFromCache(cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
27653
- if (params.subChannelId !== message.subChannelId || !collection)
27674
+ if (params.subChannelId !== (message === null || message === void 0 ? void 0 : message.subChannelId) || !collection)
27654
27675
  return;
27655
- if (action === 'onCreate') {
27656
- collection.data = [...new Set([message.messageId, ...collection.data])];
27657
- }
27658
- else if (['onDelete'].includes(action)) {
27659
- collection.data = collection.data.filter(m => m !== message.messageId);
27660
- }
27676
+ collection.data = [...new Set([message.messageId, ...collection.data])];
27661
27677
  pushToCache(cacheKey, collection);
27662
27678
  responder(collection);
27663
27679
  };
@@ -27680,13 +27696,14 @@ const liveMessages = (params, callback, config) => {
27680
27696
  }
27681
27697
  pushToCache(cacheKey, data);
27682
27698
  responder(data);
27683
- }, queryOptions(policy));
27699
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
27684
27700
  };
27685
- disposers.push(onMessageFetched(realtimeRouter('onFetch')), onMessageCreated(realtimeRouter('onCreate')), onMessageUpdated(realtimeRouter('onUpdate')), onMessageDeleted(realtimeRouter('onDelete')), onMessageFlagged(realtimeRouter('onFlagged')), onMessageUnflagged(realtimeRouter('onUnflagged')), onMessageFlagCleared(realtimeRouter('onFlagCleared')), onMessageReactionAdded(realtimeRouter('onReactionAdded')), onMessageReactionRemoved(realtimeRouter('onReactionRemoved')));
27701
+ disposers.push(onMessageFetched(realtimeRouter()), onMessageCreated(realtimeRouter()), onMessageUpdated(realtimeRouter()), onMessageDeleted(realtimeRouter()), onMessageFlagged(realtimeRouter()), onMessageUnflagged(realtimeRouter()), onMessageFlagCleared(realtimeRouter()), onMessageReactionAdded(realtimeRouter()), onMessageReactionRemoved(realtimeRouter()));
27686
27702
  onFetch();
27687
27703
  return () => {
27688
27704
  log(`liveMessages(tmpid: ${timestamp}) > dispose`);
27689
27705
  disposers.forEach(fn => fn());
27706
+ dropFromCache(cacheKey);
27690
27707
  };
27691
27708
  };
27692
27709
 
@@ -28162,8 +28179,10 @@ const liveCommunities = (params, callback, config) => {
28162
28179
  .map(communityId => pullFromCache(['community', 'get', communityId]))
28163
28180
  .filter(Boolean)
28164
28181
  .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [];
28165
- communities = filterByPropEquality(communities, 'isDeleted', params.isDeleted);
28166
28182
  communities = filterByPropEquality(communities, 'displayName', params.displayName);
28183
+ if (params.includeDeleted === false) {
28184
+ communities = filterByPropEquality(communities, 'isDeleted', false);
28185
+ }
28167
28186
  if (params.categoryId) {
28168
28187
  communities = communities.filter(c => { var _a; return (_a = c.categoryIds) === null || _a === void 0 ? void 0 : _a.includes(params.categoryId); });
28169
28188
  }
@@ -28232,13 +28251,14 @@ const liveCommunities = (params, callback, config) => {
28232
28251
  }
28233
28252
  pushToCache(cacheKey, data);
28234
28253
  responder(data);
28235
- }, queryOptions(policy));
28254
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
28236
28255
  };
28237
28256
  disposers.push(onCommunityCreated(realtimeRouter()), onCommunityDeleted(realtimeRouter()), onCommunityUpdated(realtimeRouter()), onCommunityJoined(realtimeRouter()), onCommunityLeft(realtimeRouter()), onCommunityUserChanged(realtimeRouter()));
28238
28257
  onFetch();
28239
28258
  return () => {
28240
28259
  log(`liveCommunities(tmpid: ${timestamp}) > dispose`);
28241
28260
  disposers.forEach(fn => fn());
28261
+ dropFromCache(cacheKey);
28242
28262
  };
28243
28263
  };
28244
28264
 
@@ -28405,9 +28425,9 @@ const liveCommunityMembers = (params, callback, config) => {
28405
28425
  const queryCategories = async (query) => {
28406
28426
  const client = getActiveClient();
28407
28427
  client.log('category/queryCategories', query);
28408
- const _a = query !== null && query !== void 0 ? query : {}, { page = { limit: 10 } } = _a, params = __rest(_a, ["page"]);
28428
+ const _a = query !== null && query !== void 0 ? query : {}, { page = { limit: 10 }, includeDeleted } = _a, params = __rest(_a, ["page", "includeDeleted"]);
28409
28429
  const { data } = await client.http.get(`/api/v3/community-categories`, {
28410
- params: Object.assign(Object.assign({}, params), { options: {
28430
+ params: Object.assign(Object.assign({}, params), { isDeleted: includeDeleted === false ? false : undefined, options: {
28411
28431
  token: toToken(page, 'skiplimit'),
28412
28432
  } }),
28413
28433
  });
@@ -28550,7 +28570,9 @@ const liveCategories = (params, callback, config) => {
28550
28570
  .map(categoryId => pullFromCache(['category', 'get', categoryId]))
28551
28571
  .filter(Boolean)
28552
28572
  .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [];
28553
- categories = filterByPropEquality(categories, 'isDeleted', params.isDeleted);
28573
+ if (params.includeDeleted === false) {
28574
+ categories = filterByPropEquality(categories, 'isDeleted', false);
28575
+ }
28554
28576
  switch (params.sortBy) {
28555
28577
  case 'firstCreated':
28556
28578
  categories = categories.sort(sortByFirstCreated);
@@ -28808,11 +28830,6 @@ const queryFollowings = async (query) => queryFollows('following', query);
28808
28830
  */
28809
28831
  queryFollowings.locally = (query) => queryFollows.locally('following', query);
28810
28832
 
28811
- const getCacheKey = (userId) => [
28812
- 'followInfo',
28813
- 'get',
28814
- `${getActiveClient().userId}#${userId}`,
28815
- ];
28816
28833
  /* begin_public_function
28817
28834
  id: user.relationship.get_follow_info, user.relationship.get_my_follow_info
28818
28835
  */
@@ -28839,7 +28856,9 @@ const getFollowInfo = async (userId) => {
28839
28856
  const followInfo = 'follows' in data
28840
28857
  ? Object.assign(Object.assign({}, data.followCounts[0]), { status: (_b = (_a = data.follows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.status }) : data.followCounts[0];
28841
28858
  if (client.cache) {
28842
- pushToCache(getCacheKey(userId), followInfo, { cachedAt });
28859
+ pushToCache(['followInfo', 'get', userId], followInfo, {
28860
+ cachedAt,
28861
+ });
28843
28862
  }
28844
28863
  return {
28845
28864
  data: followInfo,
@@ -28866,7 +28885,7 @@ getFollowInfo.locally = (userId) => {
28866
28885
  if (!client.cache) {
28867
28886
  return;
28868
28887
  }
28869
- const cached = pullFromCache(getCacheKey(userId));
28888
+ const cached = pullFromCache(['followInfo', 'get', userId]);
28870
28889
  if (!cached) {
28871
28890
  return;
28872
28891
  }
@@ -29478,6 +29497,29 @@ const liveFollowings = (params, callback, config) => {
29478
29497
  };
29479
29498
  };
29480
29499
 
29500
+ /**
29501
+ * ```js
29502
+ * import { liveFollowInfo } from '@amityco/ts-sdk';
29503
+ *
29504
+ * let followInfo;
29505
+ *
29506
+ * const unsubscribe = liveFollowInfo(userId, response => {
29507
+ * followInfo = response.data;
29508
+ * });
29509
+ * ```
29510
+ *
29511
+ * Observe all mutation on a given {@link Amity.FollowCount} object
29512
+ *
29513
+ * @param userId the ID of the current user
29514
+ * @param callback the function to call when new data are available
29515
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing
29516
+ *
29517
+ * @category FollowInfo Live Object
29518
+ */
29519
+ const liveFollowInfo = (userId, callback) => {
29520
+ return liveObject(userId, callback, 'userId', getFollowInfo, [onFollowInfoUpdated]);
29521
+ };
29522
+
29481
29523
  /**
29482
29524
  * ```js
29483
29525
  * import { observePosts } from '@amityco/ts-sdk'
@@ -29637,9 +29679,11 @@ const livePosts = (params, callback, config) => {
29637
29679
  .map(postId => pullFromCache(['post', 'get', postId]))
29638
29680
  .filter(Boolean)
29639
29681
  .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [];
29640
- posts = filterByPropEquality(posts, 'isDeleted', params.isDeleted);
29641
29682
  const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
29642
29683
  posts = posts.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
29684
+ if (params.includeDeleted === false) {
29685
+ posts = filterByPropEquality(posts, 'isDeleted', false);
29686
+ }
29643
29687
  if (params.tags) {
29644
29688
  posts = posts.filter(p => { var _a; return (_a = p.tags) === null || _a === void 0 ? void 0 : _a.some(t => { var _a; return (_a = params.tags) === null || _a === void 0 ? void 0 : _a.includes(t); }); });
29645
29689
  }
@@ -29691,13 +29735,14 @@ const livePosts = (params, callback, config) => {
29691
29735
  }
29692
29736
  pushToCache(cacheKey, data);
29693
29737
  responder(data);
29694
- }, queryOptions(policy));
29738
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
29695
29739
  };
29696
29740
  disposers.push(onPostCreated(realtimeRouter('onCreate')), onPostApproved(realtimeRouter('onApproved')), onPostDeclined(realtimeRouter('onDeclined')), onPostDeleted(realtimeRouter('onDelete')), onPostUpdated(realtimeRouter('onUpdate')), onPostFlagged(realtimeRouter('onFlagged')), onPostUnflagged(realtimeRouter('onUnflagged')), onPostReactionAdded(realtimeRouter('onReactionAdded')), onPostReactionRemoved(realtimeRouter('onReactionRemoved')));
29697
29741
  onFetch();
29698
29742
  return () => {
29699
29743
  log(`livePosts(tmpid: ${timestamp}) > dispose`);
29700
29744
  disposers.forEach(fn => fn());
29745
+ dropFromCache(cacheKey);
29701
29746
  };
29702
29747
  };
29703
29748
 
@@ -29854,7 +29899,9 @@ const liveComments = (params, callback, config) => {
29854
29899
  .map(commentId => pullFromCache(['comment', 'get', commentId]))
29855
29900
  .filter(Boolean)
29856
29901
  .map(({ data }) => data)) !== null && _a !== void 0 ? _a : [];
29857
- comments = filterByPropEquality(comments, 'isDeleted', params.isDeleted);
29902
+ if (params.includeDeleted === false) {
29903
+ comments = filterByPropEquality(comments, 'isDeleted', false);
29904
+ }
29858
29905
  const sortBy = params.sortBy ? params.sortBy : 'lastCreated';
29859
29906
  comments = comments.sort(sortBy === 'lastCreated' ? sortByLastCreated : sortByFirstCreated);
29860
29907
  callback({
@@ -29902,13 +29949,14 @@ const liveComments = (params, callback, config) => {
29902
29949
  }
29903
29950
  pushToCache(cacheKey, data);
29904
29951
  responder(data);
29905
- }, queryOptions(policy));
29952
+ }, queryOptions(policy, CACHE_SHORTEN_LIFESPAN));
29906
29953
  };
29907
29954
  disposers.push(onCommentCreated(realtimeRouter('onCreate')), onCommentUpdated(realtimeRouter('onUpdate')), onCommentDeleted(realtimeRouter('onDelete')), onCommentFlagged(realtimeRouter('onFlagged')), onCommentUnflagged(realtimeRouter('onUnflagged')), onCommentReactionAdded(realtimeRouter('onReactionAdded')), onCommentReactionRemoved(realtimeRouter('onReactionRemoved')));
29908
29955
  onFetch();
29909
29956
  return () => {
29910
29957
  log(`liveComments(tmpid: ${timestamp}) > dispose`);
29911
29958
  disposers.forEach(fn => fn());
29959
+ dropFromCache(cacheKey);
29912
29960
  };
29913
29961
  };
29914
29962
 
@@ -30534,4 +30582,4 @@ const createUserToken = async (apiKey, apiRegion, params) => {
30534
30582
  return { accessToken: data.accessToken };
30535
30583
  };
30536
30584
 
30537
- export { API_REGIONS, CommunityPostSettingMaps, CommunityPostSettings, ContentFeedType, DefaultCommunityPostSetting, FileType, MessageContentType, PostContentType, SubscriptionLevels, VERSION, VideoResolution, VideoSize, VideoTranscodingStatus, acceptFollower, addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRoles, addReaction, approvePost, backupCache, banChannelMembers, closePoll, connectClient, createChannel, createClient, createComment, createCommunity, createFile, createImage, createMessage, createPoll, createPost, createQuery, createReport, createStream, createSubChannel, createUserToken, createVideo, declineFollower, declinePost, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePoll, deletePost, deleteReport, deleteStream, deleteSubChannel, disableCache, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByChannelMembership, filterByFeedType, filterByPropEquality, filterByPropInclusion, follow, getActiveClient, getCategory, getChannel, getChannelTopic, getChannels, getComment, getCommentTopic, getComments, getCommunities, getCommunity, getCommunityTopic, getFeedSettings, getFile, getFollowInfo, getMessage, getMessageTopic, getMessages, getMyFollowersTopic, getMyFollowingsTopic, getNetworkTopic, getPoll, getPost, getPostTopic, getPosts, getRecommendedCommunities, getRole, getSmartFeedChannelTopic, getSmartFeedMessageTopic, getSmartFeedSubChannelTopic, getStream, getSubChannel, getSubChannelTopic, getSubChannels, getTopTrendingCommunities, getUser, getUserTopic, getUsers, isAfterBefore, isAfterBeforeRaw, isCachable, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkip, joinChannel, joinCommunity, leaveChannel, leaveCommunity, liveCategories, liveChannel, liveChannelMembers, liveChannels, liveComment, liveComments, liveCommunities, liveCommunity, liveCommunityMembers, liveFollowers, liveFollowings, liveMessage, liveMessages, livePost, livePosts, liveReactions, liveSubChannel, liveSubChannels, liveUser, liveUsers, mergeInCache, observeChannel, observeChannels, observeComment, observeComments, observeCommunity, observeFile, observeFollowInfo, observeFollowers, observeFollowings, observeMessage, observeMessages, observePoll, observePost, observePosts, observeUser, onChannelCreated, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelMemberAdded, onChannelMemberBanned, onChannelMemberRemoved, onChannelMemberUnbanned, onChannelMuted, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentFlagged, onCommentReactionAdded, onCommentReactionRemoved, onCommentUnflagged, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onCommunityUserAdded, onCommunityUserBanned, onCommunityUserChanged, onCommunityUserRemoved, onCommunityUserRoleAdded, onCommunityUserRoleRemoved, onCommunityUserUnbanned, onConnectionError, onFollowInfoUpdated, onFollowRequestAccepted, onFollowRequestCanceled, onFollowRequestDeclined, onFollowerDeleted, onFollowerRequested, onMessageCreated, onMessageDeleted, onMessageFlagCleared, onMessageFlagged, onMessageReactionAdded, onMessageReactionRemoved, onMessageUnflagged, onMessageUpdated, onPollDeleted, onPollUpdated, onPostApproved, onPostCreated, onPostDeclined, onPostDeleted, onPostFlagged, onPostReactionAdded, onPostReactionRemoved, onPostUnflagged, onPostUpdated, onReactionAdded, onReactionRemoved, onReactorAdded, onReactorRemoved, onSessionStateChange, onStreamRecorded, onStreamStarted, onStreamStopped, onSubChannelCreated, onSubChannelDeleted, onSubChannelUpdated, onUserDeleted, onUserFlagCleared, onUserFlagged, onUserFollowed, onUserUnflagged, onUserUnfollowed, onUserUpdated, pullFromCache, pushToCache, queryCache, queryCategories, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryFollowers, queryFollowings, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryReactions, queryRoles, queryStreams, querySubChannels, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRoles, removeReaction, renewal, restoreCache, runQuery, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByLastActivity, sortByLastCreated, sortByName, sortBySegmentNumber, startReading, stopReading, subscribeTopic, toPage, toPageRaw, toToken, unbanChannelMembers, unfollow, updateChannel, updateComment, updateCommunity, updateMessage, updatePost, updateStream, updateSubChannel, updateUser, upsertInCache, votePoll, wipeCache };
30585
+ export { API_REGIONS, CommunityPostSettingMaps, CommunityPostSettings, ContentFeedType, DefaultCommunityPostSetting, FileType, MessageContentType, PostContentType, SubscriptionLevels, VERSION, VideoResolution, VideoSize, VideoTranscodingStatus, acceptFollower, addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRoles, addReaction, approvePost, backupCache, banChannelMembers, closePoll, connectClient, createChannel, createClient, createComment, createCommunity, createFile, createImage, createMessage, createPoll, createPost, createQuery, createReport, createStream, createSubChannel, createUserToken, createVideo, declineFollower, declinePost, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePoll, deletePost, deleteReport, deleteStream, deleteSubChannel, disableCache, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByChannelMembership, filterByFeedType, filterByPropEquality, filterByPropInclusion, follow, getActiveClient, getCategory, getChannel, getChannelTopic, getChannels, getComment, getCommentTopic, getComments, getCommunities, getCommunity, getCommunityTopic, getFeedSettings, getFile, getFollowInfo, getMessage, getMessageTopic, getMessages, getMyFollowersTopic, getMyFollowingsTopic, getNetworkTopic, getPoll, getPost, getPostTopic, getPosts, getRecommendedCommunities, getRole, getSmartFeedChannelTopic, getSmartFeedMessageTopic, getSmartFeedSubChannelTopic, getStream, getSubChannel, getSubChannelTopic, getSubChannels, getTopTrendingCommunities, getUser, getUserTopic, getUsers, isAfterBefore, isAfterBeforeRaw, isCachable, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkip, joinChannel, joinCommunity, leaveChannel, leaveCommunity, liveCategories, liveChannel, liveChannelMembers, liveChannels, liveComment, liveComments, liveCommunities, liveCommunity, liveCommunityMembers, liveFollowInfo, liveFollowers, liveFollowings, liveMessage, liveMessages, livePost, livePosts, liveReactions, liveSubChannel, liveSubChannels, liveUser, liveUsers, mergeInCache, observeChannel, observeChannels, observeComment, observeComments, observeCommunity, observeFile, observeFollowInfo, observeFollowers, observeFollowings, observeMessage, observeMessages, observePoll, observePost, observePosts, observeUser, onChannelCreated, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelMemberAdded, onChannelMemberBanned, onChannelMemberRemoved, onChannelMemberUnbanned, onChannelMuted, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentFlagged, onCommentReactionAdded, onCommentReactionRemoved, onCommentUnflagged, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onCommunityUserAdded, onCommunityUserBanned, onCommunityUserChanged, onCommunityUserRemoved, onCommunityUserRoleAdded, onCommunityUserRoleRemoved, onCommunityUserUnbanned, onConnectionError, onFollowInfoUpdated, onFollowRequestAccepted, onFollowRequestCanceled, onFollowRequestDeclined, onFollowerDeleted, onFollowerRequested, onMessageCreated, onMessageDeleted, onMessageFlagCleared, onMessageFlagged, onMessageReactionAdded, onMessageReactionRemoved, onMessageUnflagged, onMessageUpdated, onPollDeleted, onPollUpdated, onPostApproved, onPostCreated, onPostDeclined, onPostDeleted, onPostFlagged, onPostReactionAdded, onPostReactionRemoved, onPostUnflagged, onPostUpdated, onReactionAdded, onReactionRemoved, onReactorAdded, onReactorRemoved, onSessionStateChange, onStreamRecorded, onStreamStarted, onStreamStopped, onSubChannelCreated, onSubChannelDeleted, onSubChannelUpdated, onUserDeleted, onUserFlagCleared, onUserFlagged, onUserFollowed, onUserUnflagged, onUserUnfollowed, onUserUpdated, pullFromCache, pushToCache, queryCache, queryCategories, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryFollowers, queryFollowings, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryReactions, queryRoles, queryStreams, querySubChannels, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRoles, removeReaction, renewal, restoreCache, runQuery, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByLastActivity, sortByLastCreated, sortByName, sortBySegmentNumber, startReading, stopReading, subscribeTopic, toPage, toPageRaw, toToken, unbanChannelMembers, unfollow, updateChannel, updateComment, updateCommunity, updateMessage, updatePost, updateStream, updateSubChannel, updateUser, upsertInCache, votePoll, wipeCache };