stream-chat 10.0.0-rc.13 → 10.0.0-rc.14

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 (54) hide show
  1. package/dist/cjs/index.browser.js +21 -9
  2. package/dist/cjs/index.browser.js.map +2 -2
  3. package/dist/cjs/index.node.js +22 -9
  4. package/dist/cjs/index.node.js.map +2 -2
  5. package/dist/esm/index.mjs +21 -9
  6. package/dist/esm/index.mjs.map +2 -2
  7. package/dist/types/CooldownTimer.d.ts +4 -3
  8. package/dist/types/channel.d.ts +6 -6
  9. package/dist/types/channel_state.d.ts +5 -5
  10. package/dist/types/client.d.ts +14 -3
  11. package/dist/types/gen/chat/ChatApi.d.ts +2 -2
  12. package/dist/types/gen/models/index.d.ts +492 -369
  13. package/dist/types/gen/models/timestamp-guard.d.ts +22 -0
  14. package/dist/types/index.d.ts +2 -1
  15. package/dist/types/messageComposer/messageComposer.d.ts +3 -3
  16. package/dist/types/messageComposer/middleware/textComposer/commands.d.ts +2 -2
  17. package/dist/types/messageComposer/middleware/textComposer/mentions.d.ts +8 -0
  18. package/dist/types/messageDelivery/MessageReceiptsTracker.d.ts +8 -8
  19. package/dist/types/offline-support/types.d.ts +2 -2
  20. package/dist/types/pagination/cursorDerivation/createdAtAroundPaginationFlags.d.ts +2 -1
  21. package/dist/types/pagination/cursorDerivation/linearPaginationFlags.d.ts +2 -1
  22. package/dist/types/pagination/paginators/MessageIntervalPaginator.d.ts +6 -6
  23. package/dist/types/pagination/paginators/MessagePaginator.d.ts +5 -5
  24. package/dist/types/poll.d.ts +2 -2
  25. package/dist/types/reminders/Reminder.d.ts +6 -6
  26. package/dist/types/thread.d.ts +5 -5
  27. package/dist/types/types.d.ts +5 -5
  28. package/dist/types/utils/time.d.ts +23 -7
  29. package/dist/types/utils.d.ts +9 -9
  30. package/package.json +6 -4
  31. package/src/CooldownTimer.ts +5 -5
  32. package/src/api-client.ts +5 -2
  33. package/src/channel.ts +5 -4
  34. package/src/channel_state.ts +5 -4
  35. package/src/client.ts +18 -3
  36. package/src/gen/chat/ChatApi.ts +4 -2
  37. package/src/gen/models/index.ts +502 -3217
  38. package/src/gen/models/timestamp-guard.ts +27 -0
  39. package/src/gen/moderation/ModerationApi.ts +1 -0
  40. package/src/index.ts +6 -0
  41. package/src/messageComposer/messageComposer.ts +5 -1
  42. package/src/messageDelivery/MessageDeliveryReporter.ts +3 -2
  43. package/src/messageDelivery/MessageReceiptsTracker.ts +17 -13
  44. package/src/offline-support/offline_support_api.ts +10 -1
  45. package/src/offline-support/types.ts +2 -1
  46. package/src/pagination/cursorDerivation/createdAtAroundPaginationFlags.ts +2 -1
  47. package/src/pagination/cursorDerivation/linearPaginationFlags.ts +2 -2
  48. package/src/pagination/paginators/MessageIntervalPaginator.ts +6 -5
  49. package/src/pagination/paginators/MessagePaginator.ts +7 -7
  50. package/src/poll.ts +6 -2
  51. package/src/reminders/Reminder.ts +10 -5
  52. package/src/thread.ts +9 -5
  53. package/src/types.ts +5 -4
  54. package/src/utils/time.ts +27 -7
@@ -137,6 +137,7 @@ __export(src_exports, {
137
137
  WS_NETWORK_RECOVERY_RETRY_MS: () => WS_NETWORK_RECOVERY_RETRY_MS,
138
138
  ZERO_PAGE_CURSOR: () => ZERO_PAGE_CURSOR,
139
139
  accentsMap: () => accentsMap,
140
+ asTimestampNS: () => asTimestampNS,
140
141
  browserNetworkStatusReporter: () => browserNetworkStatusReporter,
141
142
  calculateLevenshtein: () => calculateLevenshtein,
142
143
  chatCodes: () => chatCodes,
@@ -407,8 +408,9 @@ var chatLoggerSystem = scopedLogger.createLoggerSystem();
407
408
 
408
409
  // src/utils/time.ts
409
410
  var NS_PER_MS = 1e6;
411
+ var asTimestampNS = (ns) => ns;
410
412
  var nsToMs = (ns) => Math.floor(ns / NS_PER_MS);
411
- var msToNs = (ms) => ms * NS_PER_MS;
413
+ var msToNs = (ms) => asTimestampNS(ms * NS_PER_MS);
412
414
  var nowNs = () => msToNs(Date.now());
413
415
  var nsToDate = (ns) => new Date(nsToMs(ns));
414
416
  var nsToRfc3339 = (ns) => {
@@ -8663,7 +8665,7 @@ var MessagePaginator = class extends MessageIntervalPaginator {
8663
8665
  const { lastMessage, seededLastMessageAt } = this.aggregateState.getLatestValue();
8664
8666
  const fromMessage = getMessageCreatedAtTimestamp(lastMessage);
8665
8667
  if (fromMessage !== null && seededLastMessageAt !== null) {
8666
- return Math.max(fromMessage, seededLastMessageAt);
8668
+ return asTimestampNS(Math.max(fromMessage, seededLastMessageAt));
8667
8669
  }
8668
8670
  return fromMessage ?? seededLastMessageAt;
8669
8671
  }
@@ -14669,7 +14671,10 @@ var MessageDeliveryReporter = class _MessageDeliveryReporter {
14669
14671
 
14670
14672
  // src/messageDelivery/MessageReceiptsTracker.ts
14671
14673
  var import_state_store20 = require("@stream-io/state-store");
14672
- var MIN_REF = { timestamp: Number.NEGATIVE_INFINITY, msgId: "" };
14674
+ var MIN_REF = {
14675
+ timestamp: asTimestampNS(Number.NEGATIVE_INFINITY),
14676
+ msgId: ""
14677
+ };
14673
14678
  var isValidReadState = (readState) => !!readState?.user && Number.isFinite(readState.last_read);
14674
14679
  var compareRefsAsc = (a, b) => a.timestamp !== b.timestamp ? a.timestamp - b.timestamp : 0;
14675
14680
  var findIndex = (arr, target, keyOf) => {
@@ -16200,7 +16205,7 @@ var Channel = class extends WithMessageOperations(ChannelApi) {
16200
16205
  /**
16201
16206
  * Returns the mute status for the current channel.
16202
16207
  *
16203
- * @returns An object of the form `{ muted: true | false, createdAt: number | null, expiresAt: number | null }`,
16208
+ * @returns An object of the form `{ muted: true | false, createdAt: TimestampNS | null, expiresAt: TimestampNS | null }`,
16204
16209
  * where the timestamps are unix nanoseconds as the API sends them.
16205
16210
  */
16206
16211
  muteStatus() {
@@ -17153,7 +17158,7 @@ var Channel = class extends WithMessageOperations(ChannelApi) {
17153
17158
  }
17154
17159
  if (ownUserId && countsAsOwnUnread && !currentReadState[ownUserId]) {
17155
17160
  nextReadState[ownUserId] = {
17156
- last_read: 0,
17161
+ last_read: asTimestampNS(0),
17157
17162
  unread_messages: 1,
17158
17163
  user: client.user ?? { id: ownUserId }
17159
17164
  };
@@ -17769,8 +17774,9 @@ var ApiClient = class {
17769
17774
  if (limit) rateLimit.rate_limit = parseInt(limit, 10);
17770
17775
  const remaining = headers["x-ratelimit-remaining"];
17771
17776
  if (remaining) rateLimit.rate_limit_remaining = parseInt(remaining, 10);
17772
- const reset = headers["x-ratelimit-reset"];
17773
- if (reset) rateLimit.rate_limit_reset = new Date(reset);
17777
+ const reset = Number(headers["x-ratelimit-reset"]);
17778
+ if (Number.isFinite(reset) && reset > 0)
17779
+ rateLimit.rate_limit_reset = new Date(reset * 1e3);
17774
17780
  return {
17775
17781
  response_headers: headers,
17776
17782
  rate_limit: rateLimit,
@@ -17971,6 +17977,7 @@ var ModerationApi = class {
17971
17977
  appeal_reason: request?.appeal_reason,
17972
17978
  entity_id: request?.entity_id,
17973
17979
  entity_type: request?.entity_type,
17980
+ channel_cid: request?.channel_cid,
17974
17981
  review_queue_item_id: request?.review_queue_item_id,
17975
17982
  attachments: request?.attachments
17976
17983
  };
@@ -23317,6 +23324,7 @@ var ChatApi = class {
23317
23324
  id: request?.id,
23318
23325
  is_closed: request?.is_closed,
23319
23326
  max_votes_allowed: request?.max_votes_allowed,
23327
+ team: request?.team,
23320
23328
  voting_visibility: request?.voting_visibility,
23321
23329
  options: request?.options,
23322
23330
  custom: request?.custom
@@ -24404,7 +24412,7 @@ var StreamChat = class _StreamChat extends ChatApi {
24404
24412
  return this.userAgent;
24405
24413
  }
24406
24414
  if (!this.cachedUserAgent) {
24407
- const version = "10.0.0-rc.13";
24415
+ const version = "10.0.0-rc.14";
24408
24416
  const { name: sdkName, version: sdkVersion } = this.sdkIdentifier ?? {};
24409
24417
  const { name: appName, version: appVersion } = this.appIdentifier ?? {};
24410
24418
  const { os, model: deviceModel } = this.deviceIdentifier ?? {};
@@ -25222,6 +25230,10 @@ var StreamChat = class _StreamChat extends ChatApi {
25222
25230
  /**
25223
25231
  * Pins the message.
25224
25232
  *
25233
+ * A `number` is a relative offset in SECONDS, so a server-sent timestamp (`message.pinned_at`,
25234
+ * `message.pin_expires`) is rejected at compile time rather than read as ~1.79e18 seconds from now.
25235
+ * Hand one back as a date with `nsToDate(timestamp)`.
25236
+ *
25225
25237
  * @param messageOrMessageId - MessageRequest object or message ID.
25226
25238
  * @param timeoutOrExpirationDate - Expiration date or timeout. Use `number` to set the timeout
25227
25239
  * in seconds, `string` or `Date` to set the exact expiration date (optional).
@@ -26675,13 +26687,13 @@ var AbstractOfflineDB = class {
26675
26687
  execute = true
26676
26688
  }) => {
26677
26689
  const {
26678
- received_at: last_read = nowNs(),
26679
26690
  last_read_message_id,
26680
26691
  // @ts-expect-error property missing
26681
26692
  unread_messages = 0,
26682
26693
  user,
26683
26694
  cid
26684
26695
  } = event;
26696
+ const last_read = (event.type === "notification.mark_unread" ? event.last_read_at : void 0) ?? event.created_at ?? event.received_at ?? nowNs();
26685
26697
  const overriddenUnreadMessages = unreadMessages ?? unread_messages;
26686
26698
  if (user?.id && cid) {
26687
26699
  return await this.queriesWithChannelGuard(