stream-chat 4.4.3-dev.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +4 -13
  2. package/dist/browser.es.js +1229 -720
  3. package/dist/browser.es.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +1 -1
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/browser.js +1229 -719
  7. package/dist/browser.js.map +1 -1
  8. package/dist/index.es.js +1229 -720
  9. package/dist/index.es.js.map +1 -1
  10. package/dist/index.js +1229 -719
  11. package/dist/index.js.map +1 -1
  12. package/dist/types/base64.d.ts.map +1 -1
  13. package/dist/types/channel.d.ts +19 -15
  14. package/dist/types/channel.d.ts.map +1 -1
  15. package/dist/types/channel_state.d.ts +2 -2
  16. package/dist/types/channel_state.d.ts.map +1 -1
  17. package/dist/types/client.d.ts +25 -42
  18. package/dist/types/client.d.ts.map +1 -1
  19. package/dist/types/client_state.d.ts +2 -2
  20. package/dist/types/client_state.d.ts.map +1 -1
  21. package/dist/types/connection.d.ts +14 -49
  22. package/dist/types/connection.d.ts.map +1 -1
  23. package/dist/types/connection_fallback.d.ts +41 -0
  24. package/dist/types/connection_fallback.d.ts.map +1 -0
  25. package/dist/types/errors.d.ts +14 -0
  26. package/dist/types/errors.d.ts.map +1 -0
  27. package/dist/types/insights.d.ts +17 -10
  28. package/dist/types/insights.d.ts.map +1 -1
  29. package/dist/types/permissions.d.ts.map +1 -1
  30. package/dist/types/signing.d.ts +3 -3
  31. package/dist/types/signing.d.ts.map +1 -1
  32. package/dist/types/token_manager.d.ts +2 -2
  33. package/dist/types/token_manager.d.ts.map +1 -1
  34. package/dist/types/types.d.ts +94 -88
  35. package/dist/types/types.d.ts.map +1 -1
  36. package/dist/types/utils.d.ts +13 -3
  37. package/dist/types/utils.d.ts.map +1 -1
  38. package/package.json +4 -4
  39. package/src/base64.ts +1 -4
  40. package/src/channel.ts +133 -461
  41. package/src/channel_state.ts +31 -158
  42. package/src/client.ts +291 -712
  43. package/src/client_state.ts +2 -2
  44. package/src/connection.ts +146 -395
  45. package/src/connection_fallback.ts +205 -0
  46. package/src/errors.ts +58 -0
  47. package/src/insights.ts +38 -32
  48. package/src/permissions.ts +3 -24
  49. package/src/signing.ts +6 -17
  50. package/src/token_manager.ts +6 -18
  51. package/src/types.ts +268 -512
  52. package/src/utils.ts +58 -24
  53. package/CHANGELOG.md +0 -844
@@ -7,7 +7,7 @@ import {
7
7
  LiteralStringForUnion,
8
8
  MessageResponse,
9
9
  ReactionResponse,
10
- UnknownType,
10
+ UR,
11
11
  UserResponse,
12
12
  } from './types';
13
13
 
@@ -15,35 +15,19 @@ import {
15
15
  * ChannelState - A container class for the channel state.
16
16
  */
17
17
  export class ChannelState<
18
- AttachmentType extends UnknownType = UnknownType,
19
- ChannelType extends UnknownType = UnknownType,
18
+ AttachmentType extends UR = UR,
19
+ ChannelType extends UR = UR,
20
20
  CommandType extends string = LiteralStringForUnion,
21
- EventType extends UnknownType = UnknownType,
22
- MessageType extends UnknownType = UnknownType,
23
- ReactionType extends UnknownType = UnknownType,
24
- UserType extends UnknownType = UnknownType
21
+ EventType extends UR = UR,
22
+ MessageType extends UR = UR,
23
+ ReactionType extends UR = UR,
24
+ UserType extends UR = UR
25
25
  > {
26
- _channel: Channel<
27
- AttachmentType,
28
- ChannelType,
29
- CommandType,
30
- EventType,
31
- MessageType,
32
- ReactionType,
33
- UserType
34
- >;
26
+ _channel: Channel<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>;
35
27
  watcher_count: number;
36
28
  typing: Record<
37
29
  string,
38
- Event<
39
- AttachmentType,
40
- ChannelType,
41
- CommandType,
42
- EventType,
43
- MessageType,
44
- ReactionType,
45
- UserType
46
- >
30
+ Event<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>
47
31
  >;
48
32
  read: Record<string, { last_read: Date; user: UserResponse<UserType> }>;
49
33
  messages: Array<
@@ -102,15 +86,7 @@ export class ChannelState<
102
86
  */
103
87
  isUpToDate: boolean;
104
88
  constructor(
105
- channel: Channel<
106
- AttachmentType,
107
- ChannelType,
108
- CommandType,
109
- EventType,
110
- MessageType,
111
- ReactionType,
112
- UserType
113
- >,
89
+ channel: Channel<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>,
114
90
  ) {
115
91
  this._channel = channel;
116
92
  this.watcher_count = 0;
@@ -132,10 +108,7 @@ export class ChannelState<
132
108
  * be pushed on to message list.
133
109
  */
134
110
  this.isUpToDate = true;
135
- this.last_message_at =
136
- channel?.state?.last_message_at != null
137
- ? new Date(channel.state.last_message_at)
138
- : null;
111
+ this.last_message_at = channel?.state?.last_message_at != null ? new Date(channel.state.last_message_at) : null;
139
112
  }
140
113
 
141
114
  /**
@@ -147,23 +120,11 @@ export class ChannelState<
147
120
  *
148
121
  */
149
122
  addMessageSorted(
150
- newMessage: MessageResponse<
151
- AttachmentType,
152
- ChannelType,
153
- CommandType,
154
- MessageType,
155
- ReactionType,
156
- UserType
157
- >,
123
+ newMessage: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
158
124
  timestampChanged = false,
159
125
  addIfDoesNotExist = true,
160
126
  ) {
161
- return this.addMessagesSorted(
162
- [newMessage],
163
- timestampChanged,
164
- false,
165
- addIfDoesNotExist,
166
- );
127
+ return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist);
167
128
  }
168
129
 
169
130
  /**
@@ -174,22 +135,8 @@ export class ChannelState<
174
135
  *
175
136
  */
176
137
  formatMessage(
177
- message: MessageResponse<
178
- AttachmentType,
179
- ChannelType,
180
- CommandType,
181
- MessageType,
182
- ReactionType,
183
- UserType
184
- >,
185
- ): FormatMessageResponse<
186
- AttachmentType,
187
- ChannelType,
188
- CommandType,
189
- MessageType,
190
- ReactionType,
191
- UserType
192
- > {
138
+ message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
139
+ ): FormatMessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType> {
193
140
  return {
194
141
  ...message,
195
142
  /**
@@ -214,14 +161,7 @@ export class ChannelState<
214
161
  *
215
162
  */
216
163
  addMessagesSorted(
217
- newMessages: MessageResponse<
218
- AttachmentType,
219
- ChannelType,
220
- CommandType,
221
- MessageType,
222
- ReactionType,
223
- UserType
224
- >[],
164
+ newMessages: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>[],
225
165
  timestampChanged = false,
226
166
  initializing = false,
227
167
  addIfDoesNotExist = true,
@@ -235,9 +175,7 @@ export class ChannelState<
235
175
  * handle updates to user, we can use the reference map, to determine which
236
176
  * channels need to be updated with updated user object.
237
177
  */
238
- this._channel
239
- .getClient()
240
- .state.updateUserReference(message.user, this._channel.cid);
178
+ this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
241
179
  }
242
180
 
243
181
  if (initializing && message.id && this.threads[message.id]) {
@@ -300,14 +238,7 @@ export class ChannelState<
300
238
  *
301
239
  */
302
240
  addPinnedMessages(
303
- pinnedMessages: MessageResponse<
304
- AttachmentType,
305
- ChannelType,
306
- CommandType,
307
- MessageType,
308
- ReactionType,
309
- UserType
310
- >[],
241
+ pinnedMessages: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>[],
311
242
  ) {
312
243
  for (let i = 0; i < pinnedMessages.length; i += 1) {
313
244
  this.addPinnedMessage(pinnedMessages[i]);
@@ -321,14 +252,7 @@ export class ChannelState<
321
252
  *
322
253
  */
323
254
  addPinnedMessage(
324
- pinnedMessage: MessageResponse<
325
- AttachmentType,
326
- ChannelType,
327
- CommandType,
328
- MessageType,
329
- ReactionType,
330
- UserType
331
- >,
255
+ pinnedMessage: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
332
256
  ) {
333
257
  this.pinnedMessages = this._addToMessageList(
334
258
  this.pinnedMessages,
@@ -345,14 +269,7 @@ export class ChannelState<
345
269
  *
346
270
  */
347
271
  removePinnedMessage(
348
- message: MessageResponse<
349
- AttachmentType,
350
- ChannelType,
351
- CommandType,
352
- MessageType,
353
- ReactionType,
354
- UserType
355
- >,
272
+ message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
356
273
  ) {
357
274
  const { result } = this.removeMessageFromArray(this.pinnedMessages, message);
358
275
  this.pinnedMessages = result;
@@ -360,24 +277,13 @@ export class ChannelState<
360
277
 
361
278
  addReaction(
362
279
  reaction: ReactionResponse<ReactionType, UserType>,
363
- message?: MessageResponse<
364
- AttachmentType,
365
- ChannelType,
366
- CommandType,
367
- MessageType,
368
- ReactionType,
369
- UserType
370
- >,
280
+ message?: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
371
281
  enforce_unique?: boolean,
372
282
  ) {
373
283
  if (!message) return;
374
284
  const messageWithReaction = message;
375
285
  this._updateMessage(message, (msg) => {
376
- messageWithReaction.own_reactions = this._addOwnReactionToMessage(
377
- msg.own_reactions,
378
- reaction,
379
- enforce_unique,
380
- );
286
+ messageWithReaction.own_reactions = this._addOwnReactionToMessage(msg.own_reactions, reaction, enforce_unique);
381
287
  return this.formatMessage(messageWithReaction);
382
288
  });
383
289
  return messageWithReaction;
@@ -407,45 +313,26 @@ export class ChannelState<
407
313
  reaction: ReactionResponse<ReactionType, UserType>,
408
314
  ) {
409
315
  if (ownReactions) {
410
- return ownReactions.filter(
411
- (item) => item.user_id !== reaction.user_id || item.type !== reaction.type,
412
- );
316
+ return ownReactions.filter((item) => item.user_id !== reaction.user_id || item.type !== reaction.type);
413
317
  }
414
318
  return ownReactions;
415
319
  }
416
320
 
417
321
  removeReaction(
418
322
  reaction: ReactionResponse<ReactionType, UserType>,
419
- message?: MessageResponse<
420
- AttachmentType,
421
- ChannelType,
422
- CommandType,
423
- MessageType,
424
- ReactionType,
425
- UserType
426
- >,
323
+ message?: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
427
324
  ) {
428
325
  if (!message) return;
429
326
  const messageWithReaction = message;
430
327
  this._updateMessage(message, (msg) => {
431
- messageWithReaction.own_reactions = this._removeOwnReactionFromMessage(
432
- msg.own_reactions,
433
- reaction,
434
- );
328
+ messageWithReaction.own_reactions = this._removeOwnReactionFromMessage(msg.own_reactions, reaction);
435
329
  return this.formatMessage(messageWithReaction);
436
330
  });
437
331
  return messageWithReaction;
438
332
  }
439
333
 
440
334
  removeQuotedMessageReferences(
441
- message: MessageResponse<
442
- AttachmentType,
443
- ChannelType,
444
- CommandType,
445
- MessageType,
446
- ReactionType,
447
- UserType
448
- >,
335
+ message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
449
336
  ) {
450
337
  const parseMessage = (
451
338
  m: ReturnType<
@@ -465,14 +352,7 @@ export class ChannelState<
465
352
  created_at: m.created_at.toString(),
466
353
  pinned_at: m.pinned_at?.toString(),
467
354
  updated_at: m.updated_at?.toString(),
468
- } as unknown) as MessageResponse<
469
- AttachmentType,
470
- ChannelType,
471
- CommandType,
472
- MessageType,
473
- ReactionType,
474
- UserType
475
- >);
355
+ } as unknown) as MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>);
476
356
 
477
357
  const updatedMessages = this.messages
478
358
  .filter((msg) => msg.quoted_message_id === message.id)
@@ -614,8 +494,7 @@ export class ChannelState<
614
494
  }
615
495
 
616
496
  const messageTime = (message[sortBy] as Date).getTime();
617
- const messageIsNewest =
618
- (messageArr[messageArrayLength - 1][sortBy] as Date).getTime() < messageTime;
497
+ const messageIsNewest = (messageArr[messageArrayLength - 1][sortBy] as Date).getTime() < messageTime;
619
498
 
620
499
  // if message is newer than last item in the list concat and return unless it's an update or deletion
621
500
  if (messageIsNewest && addMessageToList) {
@@ -630,8 +509,7 @@ export class ChannelState<
630
509
  let right = messageArrayLength - 1;
631
510
  while (left <= right) {
632
511
  middle = Math.floor((right + left) / 2);
633
- if ((messageArr[middle][sortBy] as Date).getTime() <= messageTime)
634
- left = middle + 1;
512
+ if ((messageArr[middle][sortBy] as Date).getTime() <= messageTime) left = middle + 1;
635
513
  else right = middle - 1;
636
514
  }
637
515
 
@@ -674,10 +552,7 @@ export class ChannelState<
674
552
  this.threads[messageToRemove.parent_id] = threadMessages;
675
553
  isRemoved = removed;
676
554
  } else {
677
- const { removed, result: messages } = this.removeMessageFromArray(
678
- this.messages,
679
- messageToRemove,
680
- );
555
+ const { removed, result: messages } = this.removeMessageFromArray(this.messages, messageToRemove);
681
556
  this.messages = messages;
682
557
  isRemoved = removed;
683
558
  }
@@ -701,9 +576,7 @@ export class ChannelState<
701
576
  >,
702
577
  msg: { id: string; parent_id?: string },
703
578
  ) => {
704
- const result = msgArray.filter(
705
- (message) => !(!!message.id && !!msg.id && message.id === msg.id),
706
- );
579
+ const result = msgArray.filter((message) => !(!!message.id && !!msg.id && message.id === msg.id));
707
580
 
708
581
  return { removed: result.length < msgArray.length, result };
709
582
  };