@liveblocks/core 3.13.0-ack1 → 3.13.0-metadata1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -360,7 +360,7 @@ declare namespace OpCode {
360
360
  * These operations are the payload for {@link UpdateStorageServerMsg} messages
361
361
  * only.
362
362
  */
363
- type Op = CreateOp | UpdateObjectOp | DeleteCrdtOp | SetParentKeyOp | DeleteObjectKeyOp | AckOp;
363
+ type Op = CreateOp | UpdateObjectOp | DeleteCrdtOp | SetParentKeyOp | DeleteObjectKeyOp | AckOpV7 | AckOpV8;
364
364
  type CreateOp = CreateObjectOp | CreateRegisterOp | CreateMapOp | CreateListOp;
365
365
  type UpdateObjectOp = {
366
366
  readonly opId?: string;
@@ -411,11 +411,15 @@ type DeleteCrdtOp = {
411
411
  readonly id: string;
412
412
  readonly type: OpCode.DELETE_CRDT;
413
413
  };
414
- type AckOp = {
414
+ type AckOpV7 = {
415
415
  readonly type: OpCode.DELETE_CRDT;
416
416
  readonly id: "ACK";
417
417
  readonly opId: string;
418
418
  };
419
+ type AckOpV8 = {
420
+ readonly type: OpCode.ACK;
421
+ readonly opId: string;
422
+ };
419
423
  type SetParentKeyOp = {
420
424
  readonly opId?: string;
421
425
  readonly id: string;
@@ -1140,7 +1144,7 @@ declare global {
1140
1144
  [key: string]: unknown;
1141
1145
  }
1142
1146
  }
1143
- type ExtendableTypes = "Presence" | "Storage" | "UserMeta" | "RoomEvent" | "ThreadMetadata" | "RoomInfo" | "GroupInfo" | "ActivitiesData";
1147
+ type ExtendableTypes = "Presence" | "Storage" | "UserMeta" | "RoomEvent" | "ThreadMetadata" | "CommentMetadata" | "RoomInfo" | "GroupInfo" | "ActivitiesData";
1144
1148
  type MakeErrorString<K extends ExtendableTypes, Reason extends string = "does not match its requirements"> = `The type you provided for '${K}' ${Reason}. To learn how to fix this, see https://liveblocks.io/docs/errors/${K}`;
1145
1149
  type GetOverride<K extends ExtendableTypes, B, Reason extends string = "does not match its requirements"> = GetOverrideOrErrorValue<K, B, MakeErrorString<K, Reason>>;
1146
1150
  type GetOverrideOrErrorValue<K extends ExtendableTypes, B, ErrorType> = unknown extends Liveblocks[K] ? B : Liveblocks[K] extends B ? Liveblocks[K] : ErrorType;
@@ -1148,7 +1152,8 @@ type DP = GetOverride<"Presence", JsonObject, "is not a valid JSON object">;
1148
1152
  type DS = GetOverride<"Storage", LsonObject, "is not a valid LSON value">;
1149
1153
  type DU = GetOverrideOrErrorValue<"UserMeta", BaseUserMeta, Record<"id" | "info", MakeErrorString<"UserMeta">>>;
1150
1154
  type DE = GetOverride<"RoomEvent", Json, "is not a valid JSON value">;
1151
- type DM = GetOverride<"ThreadMetadata", BaseMetadata>;
1155
+ type DTM = GetOverride<"ThreadMetadata", BaseMetadata>;
1156
+ type DCM = GetOverride<"CommentMetadata", BaseMetadata>;
1152
1157
  type DRI = GetOverride<"RoomInfo", BaseRoomInfo>;
1153
1158
  type DGI = GetOverride<"GroupInfo", BaseGroupInfo>;
1154
1159
  type DAD = GetOverrideOrErrorValue<"ActivitiesData", BaseActivitiesData, {
@@ -1213,7 +1218,7 @@ type CommentMixedAttachment = CommentAttachment | CommentLocalAttachment;
1213
1218
  /**
1214
1219
  * Represents a comment.
1215
1220
  */
1216
- type CommentData = {
1221
+ type CommentData<CM extends BaseMetadata = DCM> = {
1217
1222
  type: "comment";
1218
1223
  id: string;
1219
1224
  threadId: string;
@@ -1223,13 +1228,15 @@ type CommentData = {
1223
1228
  editedAt?: Date;
1224
1229
  reactions: CommentReaction[];
1225
1230
  attachments: CommentAttachment[];
1231
+ metadata: CM;
1226
1232
  } & Relax<{
1227
1233
  body: CommentBody;
1228
1234
  } | {
1229
1235
  deletedAt: Date;
1230
1236
  }>;
1231
- type CommentDataPlain = Omit<DateToString<CommentData>, "reactions" | "body"> & {
1237
+ type CommentDataPlain<CM extends BaseMetadata = DCM> = Omit<DateToString<CommentData<CM>>, "reactions" | "body" | "metadata"> & {
1232
1238
  reactions: DateToString<CommentReaction>[];
1239
+ metadata: CM;
1233
1240
  } & Relax<{
1234
1241
  body: CommentBody;
1235
1242
  } | {
@@ -1284,22 +1291,22 @@ type SearchCommentsResult = {
1284
1291
  /**
1285
1292
  * Represents a thread of comments.
1286
1293
  */
1287
- type ThreadData<M extends BaseMetadata = DM> = {
1294
+ type ThreadData<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = {
1288
1295
  type: "thread";
1289
1296
  id: string;
1290
1297
  roomId: string;
1291
1298
  createdAt: Date;
1292
1299
  updatedAt: Date;
1293
- comments: CommentData[];
1294
- metadata: M;
1300
+ comments: CommentData<CM>[];
1301
+ metadata: TM;
1295
1302
  resolved: boolean;
1296
1303
  };
1297
- interface ThreadDataWithDeleteInfo<M extends BaseMetadata = DM> extends ThreadData<M> {
1304
+ interface ThreadDataWithDeleteInfo<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> extends ThreadData<TM, CM> {
1298
1305
  deletedAt?: Date;
1299
1306
  }
1300
- type ThreadDataPlain<M extends BaseMetadata> = Omit<DateToString<ThreadData<M>>, "comments" | "metadata"> & {
1301
- comments: CommentDataPlain[];
1302
- metadata: M;
1307
+ type ThreadDataPlain<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = Omit<DateToString<ThreadData<TM, CM>>, "comments" | "metadata"> & {
1308
+ comments: CommentDataPlain<CM>[];
1309
+ metadata: TM;
1303
1310
  };
1304
1311
  type ThreadDeleteInfo = {
1305
1312
  type: "deletedThread";
@@ -1537,17 +1544,17 @@ type MakeOptionalFieldsNullable<T> = {
1537
1544
  };
1538
1545
  type Patchable<T> = Partial<MakeOptionalFieldsNullable<T>>;
1539
1546
 
1540
- interface RoomHttpApi<M extends BaseMetadata> {
1547
+ interface RoomHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> {
1541
1548
  getThreads(options: {
1542
1549
  roomId: string;
1543
1550
  cursor?: string;
1544
1551
  query?: {
1545
1552
  resolved?: boolean;
1546
1553
  subscribed?: boolean;
1547
- metadata?: Partial<QueryMetadata<M>>;
1554
+ metadata?: Partial<QueryMetadata<TM>>;
1548
1555
  };
1549
1556
  }): Promise<{
1550
- threads: ThreadData<M>[];
1557
+ threads: ThreadData<TM, CM>[];
1551
1558
  inboxNotifications: InboxNotificationData[];
1552
1559
  subscriptions: SubscriptionData[];
1553
1560
  requestedAt: Date;
@@ -1560,7 +1567,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1560
1567
  signal?: AbortSignal;
1561
1568
  }): Promise<{
1562
1569
  threads: {
1563
- updated: ThreadData<M>[];
1570
+ updated: ThreadData<TM, CM>[];
1564
1571
  deleted: ThreadDeleteInfo[];
1565
1572
  };
1566
1573
  inboxNotifications: {
@@ -1577,7 +1584,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1577
1584
  searchComments(options: {
1578
1585
  roomId: string;
1579
1586
  query: {
1580
- threadMetadata?: Partial<QueryMetadata<M>>;
1587
+ threadMetadata?: Partial<QueryMetadata<TM>>;
1581
1588
  threadResolved?: boolean;
1582
1589
  hasAttachments?: boolean;
1583
1590
  hasMentions?: boolean;
@@ -1588,19 +1595,20 @@ interface RoomHttpApi<M extends BaseMetadata> {
1588
1595
  }): Promise<{
1589
1596
  data: Array<SearchCommentsResult>;
1590
1597
  }>;
1591
- createThread({ roomId, metadata, body, commentId, threadId, attachmentIds, }: {
1598
+ createThread({ roomId, metadata, body, commentId, threadId, commentMetadata, attachmentIds, }: {
1592
1599
  roomId: string;
1593
1600
  threadId?: string;
1594
1601
  commentId?: string;
1595
- metadata: M | undefined;
1602
+ metadata: TM | undefined;
1603
+ commentMetadata: CM | undefined;
1596
1604
  body: CommentBody;
1597
1605
  attachmentIds?: string[];
1598
- }): Promise<ThreadData<M>>;
1606
+ }): Promise<ThreadData<TM, CM>>;
1599
1607
  getThread(options: {
1600
1608
  roomId: string;
1601
1609
  threadId: string;
1602
1610
  }): Promise<{
1603
- thread?: ThreadData<M>;
1611
+ thread?: ThreadData<TM, CM>;
1604
1612
  inboxNotification?: InboxNotificationData;
1605
1613
  subscription?: SubscriptionData;
1606
1614
  }>;
@@ -1610,23 +1618,31 @@ interface RoomHttpApi<M extends BaseMetadata> {
1610
1618
  }): Promise<void>;
1611
1619
  editThreadMetadata({ roomId, metadata, threadId, }: {
1612
1620
  roomId: string;
1613
- metadata: Patchable<M>;
1621
+ metadata: Patchable<TM>;
1614
1622
  threadId: string;
1615
- }): Promise<M>;
1616
- createComment({ roomId, threadId, commentId, body, attachmentIds, }: {
1623
+ }): Promise<TM>;
1624
+ editCommentMetadata({ roomId, threadId, commentId, metadata, }: {
1625
+ roomId: string;
1626
+ threadId: string;
1627
+ commentId: string;
1628
+ metadata: Patchable<CM>;
1629
+ }): Promise<CM>;
1630
+ createComment({ roomId, threadId, commentId, body, metadata, attachmentIds, }: {
1617
1631
  roomId: string;
1618
1632
  threadId: string;
1619
1633
  commentId?: string;
1620
1634
  body: CommentBody;
1635
+ metadata?: CM;
1621
1636
  attachmentIds?: string[];
1622
- }): Promise<CommentData>;
1623
- editComment({ roomId, threadId, commentId, body, attachmentIds, }: {
1637
+ }): Promise<CommentData<CM>>;
1638
+ editComment({ roomId, threadId, commentId, body, attachmentIds, metadata, }: {
1624
1639
  roomId: string;
1625
1640
  threadId: string;
1626
1641
  commentId: string;
1627
1642
  body: CommentBody;
1628
1643
  attachmentIds?: string[];
1629
- }): Promise<CommentData>;
1644
+ metadata?: Patchable<CM>;
1645
+ }): Promise<CommentData<CM>>;
1630
1646
  deleteComment({ roomId, threadId, commentId, }: {
1631
1647
  roomId: string;
1632
1648
  threadId: string;
@@ -1764,7 +1780,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1764
1780
  signal: AbortSignal;
1765
1781
  }): Promise<string>;
1766
1782
  }
1767
- interface NotificationHttpApi<M extends BaseMetadata> {
1783
+ interface NotificationHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> {
1768
1784
  getInboxNotifications(options?: {
1769
1785
  cursor?: string;
1770
1786
  query?: {
@@ -1773,7 +1789,7 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1773
1789
  };
1774
1790
  }): Promise<{
1775
1791
  inboxNotifications: InboxNotificationData[];
1776
- threads: ThreadData<M>[];
1792
+ threads: ThreadData<TM, CM>[];
1777
1793
  subscriptions: SubscriptionData[];
1778
1794
  nextCursor: string | null;
1779
1795
  requestedAt: Date;
@@ -1791,7 +1807,7 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1791
1807
  deleted: InboxNotificationDeleteInfo[];
1792
1808
  };
1793
1809
  threads: {
1794
- updated: ThreadData<M>[];
1810
+ updated: ThreadData<TM, CM>[];
1795
1811
  deleted: ThreadDeleteInfo[];
1796
1812
  };
1797
1813
  subscriptions: {
@@ -1816,16 +1832,16 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1816
1832
  }): Promise<NotificationSettingsPlain>;
1817
1833
  updateNotificationSettings(settings: PartialNotificationSettings): Promise<NotificationSettingsPlain>;
1818
1834
  }
1819
- interface LiveblocksHttpApi<M extends BaseMetadata> extends RoomHttpApi<M>, NotificationHttpApi<M> {
1835
+ interface LiveblocksHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> extends RoomHttpApi<TM, CM>, NotificationHttpApi<TM, CM> {
1820
1836
  getUrlMetadata(url: string): Promise<UrlMetadata>;
1821
1837
  getUserThreads_experimental(options?: {
1822
1838
  cursor?: string;
1823
1839
  query?: {
1824
1840
  resolved?: boolean;
1825
- metadata?: Partial<QueryMetadata<M>>;
1841
+ metadata?: Partial<QueryMetadata<TM>>;
1826
1842
  };
1827
1843
  }): Promise<{
1828
- threads: ThreadData<M>[];
1844
+ threads: ThreadData<TM, CM>[];
1829
1845
  inboxNotifications: InboxNotificationData[];
1830
1846
  subscriptions: SubscriptionData[];
1831
1847
  nextCursor: string | null;
@@ -1841,7 +1857,7 @@ interface LiveblocksHttpApi<M extends BaseMetadata> extends RoomHttpApi<M>, Noti
1841
1857
  deleted: InboxNotificationDeleteInfo[];
1842
1858
  };
1843
1859
  threads: {
1844
- updated: ThreadData<M>[];
1860
+ updated: ThreadData<TM, CM>[];
1845
1861
  deleted: ThreadDeleteInfo[];
1846
1862
  };
1847
1863
  subscriptions: {
@@ -1901,6 +1917,7 @@ type CommentsOrNotificationsErrorContext = {
1901
1917
  commentId: string;
1902
1918
  body: CommentBody;
1903
1919
  metadata: BaseMetadata;
1920
+ commentMetadata: BaseMetadata;
1904
1921
  } | {
1905
1922
  type: "DELETE_THREAD_ERROR";
1906
1923
  roomId: string;
@@ -1910,6 +1927,12 @@ type CommentsOrNotificationsErrorContext = {
1910
1927
  roomId: string;
1911
1928
  threadId: string;
1912
1929
  metadata: Patchable<BaseMetadata>;
1930
+ } | {
1931
+ type: "EDIT_COMMENT_METADATA_ERROR";
1932
+ roomId: string;
1933
+ threadId: string;
1934
+ commentId: string;
1935
+ metadata: Patchable<BaseMetadata>;
1913
1936
  } | {
1914
1937
  type: "MARK_THREAD_AS_RESOLVED_ERROR" | "MARK_THREAD_AS_UNRESOLVED_ERROR" | "SUBSCRIBE_TO_THREAD_ERROR" | "UNSUBSCRIBE_FROM_THREAD_ERROR";
1915
1938
  roomId: string;
@@ -1920,6 +1943,7 @@ type CommentsOrNotificationsErrorContext = {
1920
1943
  threadId: string;
1921
1944
  commentId: string;
1922
1945
  body: CommentBody;
1946
+ metadata: BaseMetadata;
1923
1947
  } | {
1924
1948
  type: "DELETE_COMMENT_ERROR";
1925
1949
  roomId: string;
@@ -2024,7 +2048,7 @@ type InternalSyncStatus = SyncStatus | "has-local-changes";
2024
2048
  * of Liveblocks, NEVER USE ANY OF THESE DIRECTLY, because bad things
2025
2049
  * will probably happen if you do.
2026
2050
  */
2027
- type PrivateClientApi<U extends BaseUserMeta, M extends BaseMetadata> = {
2051
+ type PrivateClientApi<U extends BaseUserMeta, TM extends BaseMetadata, CM extends BaseMetadata> = {
2028
2052
  readonly currentUserId: Signal<string | undefined>;
2029
2053
  readonly mentionSuggestionsCache: Map<string, MentionData[]>;
2030
2054
  readonly resolveMentionSuggestions: ClientOptions<U>["resolveMentionSuggestions"];
@@ -2032,13 +2056,13 @@ type PrivateClientApi<U extends BaseUserMeta, M extends BaseMetadata> = {
2032
2056
  readonly roomsInfoStore: BatchStore<DRI | undefined, string>;
2033
2057
  readonly groupsInfoStore: BatchStore<DGI | undefined, string>;
2034
2058
  readonly getRoomIds: () => string[];
2035
- readonly httpClient: LiveblocksHttpApi<M>;
2036
- as<M2 extends BaseMetadata>(): Client<U, M2>;
2059
+ readonly httpClient: LiveblocksHttpApi<TM, CM>;
2060
+ as<TM2 extends BaseMetadata, CM2 extends BaseMetadata>(): Client<U, TM2, CM2>;
2037
2061
  createSyncSource(): SyncSource;
2038
2062
  emitError(context: LiveblocksErrorContext, cause?: Error): void;
2039
2063
  ai: Ai;
2040
2064
  };
2041
- type NotificationsApi<M extends BaseMetadata> = {
2065
+ type NotificationsApi<TM extends BaseMetadata, CM extends BaseMetadata> = {
2042
2066
  /**
2043
2067
  * Gets a page (or the initial page) for user inbox notifications and their
2044
2068
  * associated threads and thread subscriptions.
@@ -2065,7 +2089,7 @@ type NotificationsApi<M extends BaseMetadata> = {
2065
2089
  };
2066
2090
  }): Promise<{
2067
2091
  inboxNotifications: InboxNotificationData[];
2068
- threads: ThreadData<M>[];
2092
+ threads: ThreadData<TM, CM>[];
2069
2093
  subscriptions: SubscriptionData[];
2070
2094
  nextCursor: string | null;
2071
2095
  requestedAt: Date;
@@ -2106,7 +2130,7 @@ type NotificationsApi<M extends BaseMetadata> = {
2106
2130
  deleted: InboxNotificationDeleteInfo[];
2107
2131
  };
2108
2132
  threads: {
2109
- updated: ThreadData<M>[];
2133
+ updated: ThreadData<TM, CM>[];
2110
2134
  deleted: ThreadDeleteInfo[];
2111
2135
  };
2112
2136
  subscriptions: {
@@ -2186,23 +2210,23 @@ type NotificationsApi<M extends BaseMetadata> = {
2186
2210
  * narrower.
2187
2211
  */
2188
2212
  type OpaqueClient = Client<BaseUserMeta>;
2189
- type Client<U extends BaseUserMeta = DU, M extends BaseMetadata = DM> = {
2213
+ type Client<U extends BaseUserMeta = DU, TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = {
2190
2214
  /**
2191
2215
  * Gets a room. Returns null if {@link Client.enter} has not been called previously.
2192
2216
  *
2193
2217
  * @param roomId The id of the room
2194
2218
  */
2195
- getRoom<P extends JsonObject = DP, S extends LsonObject = DS, E extends Json = DE, M2 extends BaseMetadata = M>(roomId: string): Room<P, S, U, E, M2> | null;
2219
+ getRoom<P extends JsonObject = DP, S extends LsonObject = DS, E extends Json = DE, TM2 extends BaseMetadata = TM, CM2 extends BaseMetadata = CM>(roomId: string): Room<P, S, U, E, TM2, CM2> | null;
2196
2220
  /**
2197
2221
  * Enter a room.
2198
2222
  * @param roomId The id of the room
2199
2223
  * @param options Optional. You can provide initializers for the Presence or Storage when entering the Room.
2200
2224
  * @returns The room and a leave function. Call the returned leave() function when you no longer need the room.
2201
2225
  */
2202
- enterRoom<P extends JsonObject = DP, S extends LsonObject = DS, E extends Json = DE, M2 extends BaseMetadata = M>(roomId: string, ...args: OptionalTupleUnless<P & S, [
2226
+ enterRoom<P extends JsonObject = DP, S extends LsonObject = DS, E extends Json = DE, TM2 extends BaseMetadata = TM, CM2 extends BaseMetadata = CM>(roomId: string, ...args: OptionalTupleUnless<P & S, [
2203
2227
  options: EnterOptions<NoInfr<P>, NoInfr<S>>
2204
2228
  ]>): {
2205
- room: Room<P, S, U, E, M2>;
2229
+ room: Room<P, S, U, E, TM2, CM2>;
2206
2230
  leave: () => void;
2207
2231
  };
2208
2232
  /**
@@ -2268,7 +2292,7 @@ type Client<U extends BaseUserMeta = DU, M extends BaseMetadata = DM> = {
2268
2292
  * of Liveblocks, NEVER USE ANY OF THESE DIRECTLY, because bad things
2269
2293
  * will probably happen if you do.
2270
2294
  */
2271
- readonly [kInternal]: PrivateClientApi<U, M>;
2295
+ readonly [kInternal]: PrivateClientApi<U, TM, CM>;
2272
2296
  /**
2273
2297
  * Returns the current global sync status of the Liveblocks client. If any
2274
2298
  * part of Liveblocks has any local pending changes that haven't been
@@ -2292,7 +2316,7 @@ type Client<U extends BaseUserMeta = DU, M extends BaseMetadata = DM> = {
2292
2316
  readonly error: Observable<LiveblocksError>;
2293
2317
  readonly syncStatus: Observable<void>;
2294
2318
  };
2295
- } & NotificationsApi<M>;
2319
+ } & NotificationsApi<TM, CM>;
2296
2320
  type AuthEndpoint = string | ((room?: string) => Promise<CustomAuthenticationResult>);
2297
2321
  /**
2298
2322
  * The authentication endpoint that is called to ensure that the current user has access to a room.
@@ -2488,7 +2512,6 @@ declare const ServerMsgCode: Readonly<{
2488
2512
  ROOM_STATE: 104;
2489
2513
  INITIAL_STORAGE_STATE: 200;
2490
2514
  UPDATE_STORAGE: 201;
2491
- STORAGE_ACK: 202;
2492
2515
  UPDATE_YDOC: 300;
2493
2516
  THREAD_CREATED: 400;
2494
2517
  THREAD_DELETED: 407;
@@ -2499,6 +2522,7 @@ declare const ServerMsgCode: Readonly<{
2499
2522
  COMMENT_DELETED: 404;
2500
2523
  COMMENT_REACTION_ADDED: 405;
2501
2524
  COMMENT_REACTION_REMOVED: 406;
2525
+ COMMENT_METADATA_UPDATED: 409;
2502
2526
  REJECT_STORAGE_OP: 299;
2503
2527
  }>;
2504
2528
  declare namespace ServerMsgCode {
@@ -2509,7 +2533,6 @@ declare namespace ServerMsgCode {
2509
2533
  type ROOM_STATE = typeof ServerMsgCode.ROOM_STATE;
2510
2534
  type INITIAL_STORAGE_STATE = typeof ServerMsgCode.INITIAL_STORAGE_STATE;
2511
2535
  type UPDATE_STORAGE = typeof ServerMsgCode.UPDATE_STORAGE;
2512
- type STORAGE_ACK = typeof ServerMsgCode.STORAGE_ACK;
2513
2536
  type UPDATE_YDOC = typeof ServerMsgCode.UPDATE_YDOC;
2514
2537
  type THREAD_CREATED = typeof ServerMsgCode.THREAD_CREATED;
2515
2538
  type THREAD_DELETED = typeof ServerMsgCode.THREAD_DELETED;
@@ -2520,13 +2543,14 @@ declare namespace ServerMsgCode {
2520
2543
  type COMMENT_DELETED = typeof ServerMsgCode.COMMENT_DELETED;
2521
2544
  type COMMENT_REACTION_ADDED = typeof ServerMsgCode.COMMENT_REACTION_ADDED;
2522
2545
  type COMMENT_REACTION_REMOVED = typeof ServerMsgCode.COMMENT_REACTION_REMOVED;
2546
+ type COMMENT_METADATA_UPDATED = typeof ServerMsgCode.COMMENT_METADATA_UPDATED;
2523
2547
  type REJECT_STORAGE_OP = typeof ServerMsgCode.REJECT_STORAGE_OP;
2524
2548
  }
2525
2549
  /**
2526
2550
  * Messages that can be sent from the server to the client.
2527
2551
  */
2528
- type ServerMsg<P extends JsonObject, U extends BaseUserMeta, E extends Json> = UpdatePresenceServerMsg<P> | UserJoinServerMsg<U> | UserLeftServerMsg | BroadcastedEventServerMsg<E> | RoomStateServerMsg<U> | InitialDocumentStateServerMsg | UpdateStorageServerMsg | StorageAckServerMsg | YDocUpdateServerMsg | RejectedStorageOpServerMsg | CommentsEventServerMsg;
2529
- type CommentsEventServerMsg = ThreadCreatedEvent | ThreadDeletedEvent | ThreadMetadataUpdatedEvent | ThreadUpdatedEvent | CommentCreatedEvent | CommentEditedEvent | CommentDeletedEvent | CommentReactionAdded | CommentReactionRemoved;
2552
+ type ServerMsg<P extends JsonObject, U extends BaseUserMeta, E extends Json> = UpdatePresenceServerMsg<P> | UserJoinServerMsg<U> | UserLeftServerMsg | BroadcastedEventServerMsg<E> | RoomStateServerMsg<U> | InitialDocumentStateServerMsg | UpdateStorageServerMsg | YDocUpdateServerMsg | RejectedStorageOpServerMsg | CommentsEventServerMsg;
2553
+ type CommentsEventServerMsg = ThreadCreatedEvent | ThreadDeletedEvent | ThreadMetadataUpdatedEvent | ThreadUpdatedEvent | CommentCreatedEvent | CommentEditedEvent | CommentDeletedEvent | CommentReactionAdded | CommentReactionRemoved | CommentMetadataUpdatedEvent;
2530
2554
  type ThreadCreatedEvent = {
2531
2555
  type: ServerMsgCode.THREAD_CREATED;
2532
2556
  threadId: string;
@@ -2570,6 +2594,11 @@ type CommentReactionRemoved = {
2570
2594
  commentId: string;
2571
2595
  emoji: string;
2572
2596
  };
2597
+ type CommentMetadataUpdatedEvent = {
2598
+ type: ServerMsgCode.COMMENT_METADATA_UPDATED;
2599
+ threadId: string;
2600
+ commentId: string;
2601
+ };
2573
2602
  /**
2574
2603
  * Sent by the WebSocket server and broadcasted to all clients to announce that
2575
2604
  * a User updated their presence. For example, when a user moves their cursor.
@@ -2734,14 +2763,6 @@ type UpdateStorageServerMsg = {
2734
2763
  readonly type: ServerMsgCode.UPDATE_STORAGE;
2735
2764
  readonly ops: Op[];
2736
2765
  };
2737
- /**
2738
- * Sent back to client that initiated a storage mutation, to acknowledge which
2739
- * mutations have been persisted.
2740
- */
2741
- type StorageAckServerMsg = {
2742
- readonly type: ServerMsgCode.STORAGE_ACK;
2743
- readonly opIds: string[];
2744
- };
2745
2766
  /**
2746
2767
  * Sent by the WebSocket server to the client to indicate that certain opIds
2747
2768
  * have been rejected, possibly due to lack of permissions or exceeding
@@ -3059,12 +3080,12 @@ type SubscribeFn<P extends JsonObject, _TStorage extends LsonObject, U extends B
3059
3080
  (type: "storage-status", listener: Callback<StorageStatus>): () => void;
3060
3081
  (type: "comments", listener: Callback<CommentsEventServerMsg>): () => void;
3061
3082
  };
3062
- type GetThreadsOptions<M extends BaseMetadata> = {
3083
+ type GetThreadsOptions<TM extends BaseMetadata> = {
3063
3084
  cursor?: string;
3064
3085
  query?: {
3065
3086
  resolved?: boolean;
3066
3087
  subscribed?: boolean;
3067
- metadata?: Partial<QueryMetadata<M>>;
3088
+ metadata?: Partial<QueryMetadata<TM>>;
3068
3089
  };
3069
3090
  };
3070
3091
  type GetThreadsSinceOptions = {
@@ -3087,7 +3108,7 @@ type GetSubscriptionSettingsOptions = {
3087
3108
  * a Room instance using globally augmented types only, which is narrower.
3088
3109
  */
3089
3110
  type OpaqueRoom = Room<JsonObject, LsonObject, BaseUserMeta, Json, BaseMetadata>;
3090
- type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUserMeta = DU, E extends Json = DE, M extends BaseMetadata = DM> = {
3111
+ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUserMeta = DU, E extends Json = DE, TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = {
3091
3112
  /**
3092
3113
  * @private
3093
3114
  *
@@ -3301,8 +3322,8 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3301
3322
  * requestedAt
3302
3323
  * } = await room.getThreads({ query: { resolved: false }});
3303
3324
  */
3304
- getThreads(options?: GetThreadsOptions<M>): Promise<{
3305
- threads: ThreadData<M>[];
3325
+ getThreads(options?: GetThreadsOptions<TM>): Promise<{
3326
+ threads: ThreadData<TM, CM>[];
3306
3327
  inboxNotifications: InboxNotificationData[];
3307
3328
  subscriptions: SubscriptionData[];
3308
3329
  requestedAt: Date;
@@ -3319,7 +3340,7 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3319
3340
  */
3320
3341
  getThreadsSince(options: GetThreadsSinceOptions): Promise<{
3321
3342
  threads: {
3322
- updated: ThreadData<M>[];
3343
+ updated: ThreadData<TM, CM>[];
3323
3344
  deleted: ThreadDeleteInfo[];
3324
3345
  };
3325
3346
  inboxNotifications: {
@@ -3340,7 +3361,7 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3340
3361
  * const { thread, inboxNotification, subscription } = await room.getThread("th_xxx");
3341
3362
  */
3342
3363
  getThread(threadId: string): Promise<{
3343
- thread?: ThreadData<M>;
3364
+ thread?: ThreadData<TM, CM>;
3344
3365
  inboxNotification?: InboxNotificationData;
3345
3366
  subscription?: SubscriptionData;
3346
3367
  }>;
@@ -3358,10 +3379,11 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3358
3379
  createThread(options: {
3359
3380
  threadId?: string;
3360
3381
  commentId?: string;
3361
- metadata: M | undefined;
3382
+ metadata: TM | undefined;
3362
3383
  body: CommentBody;
3384
+ commentMetadata?: CM;
3363
3385
  attachmentIds?: string[];
3364
- }): Promise<ThreadData<M>>;
3386
+ }): Promise<ThreadData<TM, CM>>;
3365
3387
  /**
3366
3388
  * Deletes a thread.
3367
3389
  *
@@ -3377,9 +3399,21 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3377
3399
  * await room.editThreadMetadata({ threadId: "th_xxx", metadata: { x: 100, y: 100 } })
3378
3400
  */
3379
3401
  editThreadMetadata(options: {
3380
- metadata: Patchable<M>;
3402
+ metadata: Patchable<TM>;
3403
+ threadId: string;
3404
+ }): Promise<TM>;
3405
+ /**
3406
+ * Edits a comment's metadata.
3407
+ * To delete an existing metadata property, set its value to `null`.
3408
+ *
3409
+ * @example
3410
+ * await room.editCommentMetadata({ threadId: "th_xxx", commentId: "cm_xxx", metadata: { slackChannelId: "C024BE91L", slackMessageTs: "1700311782.001200" } })
3411
+ */
3412
+ editCommentMetadata(options: {
3381
3413
  threadId: string;
3382
- }): Promise<M>;
3414
+ commentId: string;
3415
+ metadata: Patchable<CM>;
3416
+ }): Promise<CM>;
3383
3417
  /**
3384
3418
  * Marks a thread as resolved.
3385
3419
  *
@@ -3424,8 +3458,9 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3424
3458
  threadId: string;
3425
3459
  commentId?: string;
3426
3460
  body: CommentBody;
3461
+ metadata?: CM;
3427
3462
  attachmentIds?: string[];
3428
- }): Promise<CommentData>;
3463
+ }): Promise<CommentData<CM>>;
3429
3464
  /**
3430
3465
  * Edits a comment.
3431
3466
  *
@@ -3443,8 +3478,9 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3443
3478
  threadId: string;
3444
3479
  commentId: string;
3445
3480
  body: CommentBody;
3481
+ metadata?: Patchable<CM>;
3446
3482
  attachmentIds?: string[];
3447
- }): Promise<CommentData>;
3483
+ }): Promise<CommentData<CM>>;
3448
3484
  /**
3449
3485
  * Deletes a comment.
3450
3486
  * If it is the last non-deleted comment, the thread also gets deleted.
@@ -4463,14 +4499,14 @@ declare const MENTION_CHARACTER = "@";
4463
4499
  * @param data The plain comment data object (usually returned by the API)
4464
4500
  * @returns The rich comment data object that can be used by the client.
4465
4501
  */
4466
- declare function convertToCommentData(data: CommentDataPlain): CommentData;
4502
+ declare function convertToCommentData<CM extends BaseMetadata>(data: CommentDataPlain<CM>): CommentData<CM>;
4467
4503
  /**
4468
4504
  * Converts a plain thread data object (usually returned by the API) to a thread data object that can be used by the client.
4469
4505
  * This is necessary because the plain data object stores dates as ISO strings, but the client expects them as Date objects.
4470
4506
  * @param data The plain thread data object (usually returned by the API)
4471
4507
  * @returns The rich thread data object that can be used by the client.
4472
4508
  */
4473
- declare function convertToThreadData<M extends BaseMetadata>(data: ThreadDataPlain<M>): ThreadData<M>;
4509
+ declare function convertToThreadData<TM extends BaseMetadata, CM extends BaseMetadata>(data: ThreadDataPlain<TM, CM>): ThreadData<TM, CM>;
4474
4510
  /**
4475
4511
  * Converts a plain comment reaction object (usually returned by the API) to a comment reaction object that can be used by the client.
4476
4512
  * This is necessary because the plain data object stores dates as ISO strings, but the client expects them as Date objects.
@@ -5186,4 +5222,4 @@ type EnsureJson<T> = T extends Json ? T : T extends Array<infer I> ? (EnsureJson
5186
5222
  [K in keyof T as EnsureJson<T[K]> extends never ? never : K]: EnsureJson<T[K]>;
5187
5223
  };
5188
5224
 
5189
- export { type AckOp, type ActivityData, type AiAssistantContentPart, type AiAssistantMessage, type AiChat, type AiChatMessage, type AiChatsQuery, type AiKnowledgeRetrievalPart, type AiKnowledgeSource, type AiOpaqueToolDefinition, type AiOpaqueToolInvocationProps, type AiReasoningPart, type AiRetrievalPart, type AiSourcesPart, type AiTextPart, type AiToolDefinition, type AiToolExecuteCallback, type AiToolExecuteContext, type AiToolInvocationPart, type AiToolInvocationProps, type AiToolTypePack, type AiUrlSource, type AiUserMessage, type AiWebRetrievalPart, type AsyncError, type AsyncLoading, type AsyncResult, type AsyncSuccess, type Awaitable, type BaseActivitiesData, type BaseAuthResult, type BaseGroupInfo, type BaseMetadata, type BaseRoomInfo, type BaseUserMeta, type Brand, type BroadcastEventClientMsg, type BroadcastOptions, type BroadcastedEventServerMsg, type Client, type ClientMsg, ClientMsgCode, type ClientOptions, type CommentAttachment, type CommentBody, type CommentBodyBlockElement, type CommentBodyElement, type CommentBodyInlineElement, type CommentBodyLink, type CommentBodyLinkElementArgs, type CommentBodyMention, type CommentBodyMentionElementArgs, type CommentBodyParagraph, type CommentBodyParagraphElementArgs, type CommentBodyText, type CommentBodyTextElementArgs, type CommentData, type CommentDataPlain, type CommentLocalAttachment, type CommentMixedAttachment, type CommentReaction, type CommentUserReaction, type CommentUserReactionPlain, type CommentsEventServerMsg, type ContextualPromptContext, type ContextualPromptResponse, type CopilotId, CrdtType, type CreateListOp, type CreateManagedPoolOptions, type CreateMapOp, type CreateObjectOp, type CreateOp, type CreateRegisterOp, type Cursor, type CustomAuthenticationResult, type DAD, type DE, type DGI, type DM, type DP, type DRI, type DS, type DU, DefaultMap, type Delegates, type DeleteCrdtOp, type DeleteObjectKeyOp, Deque, DerivedSignal, DevToolsTreeNode as DevTools, protocol as DevToolsMsg, type DistributiveOmit, type EnsureJson, type EnterOptions, type EventSource, type FetchStorageClientMsg, type FetchYDocClientMsg, type GetThreadsOptions, type GroupData, type GroupDataPlain, type GroupMemberData, type GroupMentionData, type GroupScopes, type History, type HistoryVersion, HttpError, type ISODateString, type ISignal, type IUserInfo, type IWebSocket, type IWebSocketCloseEvent, type IWebSocketEvent, type IWebSocketInstance, type IWebSocketMessageEvent, type IYjsProvider, type IdTuple, type Immutable, type InboxNotificationCustomData, type InboxNotificationCustomDataPlain, type InboxNotificationData, type InboxNotificationDataPlain, type InboxNotificationDeleteInfo, type InboxNotificationTextMentionData, type InboxNotificationTextMentionDataPlain, type InboxNotificationThreadData, type InboxNotificationThreadDataPlain, type InferFromSchema, type InitialDocumentStateServerMsg, type Json, type JsonArray, type JsonObject, type JsonScalar, type KDAD, type LargeMessageStrategy, type LayerKey, LiveList, type LiveListUpdate, LiveMap, type LiveMapUpdate, type LiveNode, LiveObject, type LiveObjectUpdate, type LiveStructure, LiveblocksError, type LiveblocksErrorContext, type LostConnectionEvent, type Lson, type LsonObject, MENTION_CHARACTER, type ManagedPool, type MentionData, type MessageId, MutableSignal, type NoInfr, type NodeMap, type NotificationChannel, type NotificationChannelSettings, type NotificationKind, type NotificationSettings, type NotificationSettingsPlain, type Observable, type Op, OpCode, type OpaqueClient, type OpaqueRoom, type OptionalTupleUnless, type OthersEvent, type ParentToChildNodeMap, type PartialNotificationSettings, type PartialUnless, type Patchable, Permission, type PlainLson, type PlainLsonFields, type PlainLsonList, type PlainLsonMap, type PlainLsonObject, type Poller, type PrivateClientApi, type PrivateRoomApi, Promise_withResolvers, type QueryMetadata, type QueryParams, type RejectedStorageOpServerMsg, type Relax, type RenderableToolResultResponse, type Resolve, type ResolveGroupsInfoArgs, type ResolveMentionSuggestionsArgs, type ResolveRoomsInfoArgs, type ResolveUsersArgs, type Room, type RoomEventMessage, type RoomStateServerMsg, type RoomSubscriptionSettings, type SearchCommentsResult, type SerializedChild, type SerializedCrdt, type SerializedList, type SerializedMap, type SerializedObject, type SerializedRegister, type SerializedRootObject, type ServerMsg, ServerMsgCode, type SetParentKeyOp, Signal, type SignalType, SortedList, type Status, type StorageAckServerMsg, type StorageStatus, type StorageUpdate, type StringifyCommentBodyElements, type StringifyCommentBodyOptions, type SubscriptionData, type SubscriptionDataPlain, type SubscriptionDeleteInfo, type SubscriptionDeleteInfoPlain, type SubscriptionKey, type SyncSource, type SyncStatus, TextEditorType, type ThreadData, type ThreadDataPlain, type ThreadDataWithDeleteInfo, type ThreadDeleteInfo, type ToImmutable, type ToJson, type ToolResultResponse, type URLSafeString, type UnsubscribeCallback, type UpdateObjectOp, type UpdatePresenceClientMsg, type UpdatePresenceServerMsg, type UpdateStorageClientMsg, type UpdateStorageServerMsg, type UpdateYDocClientMsg, type UploadAttachmentOptions, type UrlMetadata, type User, type UserJoinServerMsg, type UserLeftServerMsg, type UserMentionData, type UserRoomSubscriptionSettings, type UserSubscriptionData, type UserSubscriptionDataPlain, WebsocketCloseCodes, type WithNavigation, type WithOptional, type WithRequired, type YDocUpdateServerMsg, type YjsSyncStatus, asPos, assert, assertNever, autoRetry, b64decode, batch, checkBounds, chunk, cloneLson, compactObject, fancyConsole as console, convertToCommentData, convertToCommentUserReaction, convertToGroupData, convertToInboxNotificationData, convertToSubscriptionData, convertToThreadData, convertToUserSubscriptionData, createClient, createCommentAttachmentId, createCommentId, createInboxNotificationId, createManagedPool, createNotificationSettings, createThreadId, defineAiTool, deprecate, deprecateIf, detectDupes, entries, errorIf, findLastIndex, freeze, generateUrl, getMentionsFromCommentBody, getSubscriptionKey, html, htmlSafe, isCommentBodyLink, isCommentBodyMention, isCommentBodyText, isJsonArray, isJsonObject, isJsonScalar, isLiveNode, isNotificationChannelEnabled, isNumberOperator, isPlainObject, isStartsWithOperator, isUrl, kInternal, keys, legacy_patchImmutableObject, lsonToJson, makeAbortController, makeEventSource, makePoller, makePosition, mapValues, memoizeOnSuccess, nanoid, nn, objectToQuery, patchLiveObjectKey, patchNotificationSettings, raise, resolveMentionsInCommentBody, sanitizeUrl, shallow, shallow2, stableStringify, stringifyCommentBody, throwUsageError, toPlainLson, tryParseJson, url, urljoin, wait, warnOnce, warnOnceIf, withTimeout };
5225
+ export { type AckOpV7, type AckOpV8, type ActivityData, type AiAssistantContentPart, type AiAssistantMessage, type AiChat, type AiChatMessage, type AiChatsQuery, type AiKnowledgeRetrievalPart, type AiKnowledgeSource, type AiOpaqueToolDefinition, type AiOpaqueToolInvocationProps, type AiReasoningPart, type AiRetrievalPart, type AiSourcesPart, type AiTextPart, type AiToolDefinition, type AiToolExecuteCallback, type AiToolExecuteContext, type AiToolInvocationPart, type AiToolInvocationProps, type AiToolTypePack, type AiUrlSource, type AiUserMessage, type AiWebRetrievalPart, type AsyncError, type AsyncLoading, type AsyncResult, type AsyncSuccess, type Awaitable, type BaseActivitiesData, type BaseAuthResult, type BaseGroupInfo, type BaseMetadata, type BaseRoomInfo, type BaseUserMeta, type Brand, type BroadcastEventClientMsg, type BroadcastOptions, type BroadcastedEventServerMsg, type Client, type ClientMsg, ClientMsgCode, type ClientOptions, type CommentAttachment, type CommentBody, type CommentBodyBlockElement, type CommentBodyElement, type CommentBodyInlineElement, type CommentBodyLink, type CommentBodyLinkElementArgs, type CommentBodyMention, type CommentBodyMentionElementArgs, type CommentBodyParagraph, type CommentBodyParagraphElementArgs, type CommentBodyText, type CommentBodyTextElementArgs, type CommentData, type CommentDataPlain, type CommentLocalAttachment, type CommentMixedAttachment, type CommentReaction, type CommentUserReaction, type CommentUserReactionPlain, type CommentsEventServerMsg, type ContextualPromptContext, type ContextualPromptResponse, type CopilotId, CrdtType, type CreateListOp, type CreateManagedPoolOptions, type CreateMapOp, type CreateObjectOp, type CreateOp, type CreateRegisterOp, type Cursor, type CustomAuthenticationResult, type DAD, type DCM, type DE, type DGI, type DP, type DRI, type DS, type DTM, type DU, DefaultMap, type Delegates, type DeleteCrdtOp, type DeleteObjectKeyOp, Deque, DerivedSignal, DevToolsTreeNode as DevTools, protocol as DevToolsMsg, type DistributiveOmit, type EnsureJson, type EnterOptions, type EventSource, type FetchStorageClientMsg, type FetchYDocClientMsg, type GetThreadsOptions, type GroupData, type GroupDataPlain, type GroupMemberData, type GroupMentionData, type GroupScopes, type History, type HistoryVersion, HttpError, type ISODateString, type ISignal, type IUserInfo, type IWebSocket, type IWebSocketCloseEvent, type IWebSocketEvent, type IWebSocketInstance, type IWebSocketMessageEvent, type IYjsProvider, type IdTuple, type Immutable, type InboxNotificationCustomData, type InboxNotificationCustomDataPlain, type InboxNotificationData, type InboxNotificationDataPlain, type InboxNotificationDeleteInfo, type InboxNotificationTextMentionData, type InboxNotificationTextMentionDataPlain, type InboxNotificationThreadData, type InboxNotificationThreadDataPlain, type InferFromSchema, type InitialDocumentStateServerMsg, type Json, type JsonArray, type JsonObject, type JsonScalar, type KDAD, type LargeMessageStrategy, type LayerKey, LiveList, type LiveListUpdate, LiveMap, type LiveMapUpdate, type LiveNode, LiveObject, type LiveObjectUpdate, type LiveStructure, LiveblocksError, type LiveblocksErrorContext, type LostConnectionEvent, type Lson, type LsonObject, MENTION_CHARACTER, type ManagedPool, type MentionData, type MessageId, MutableSignal, type NoInfr, type NodeMap, type NotificationChannel, type NotificationChannelSettings, type NotificationKind, type NotificationSettings, type NotificationSettingsPlain, type Observable, type Op, OpCode, type OpaqueClient, type OpaqueRoom, type OptionalTupleUnless, type OthersEvent, type ParentToChildNodeMap, type PartialNotificationSettings, type PartialUnless, type Patchable, Permission, type PlainLson, type PlainLsonFields, type PlainLsonList, type PlainLsonMap, type PlainLsonObject, type Poller, type PrivateClientApi, type PrivateRoomApi, Promise_withResolvers, type QueryMetadata, type QueryParams, type RejectedStorageOpServerMsg, type Relax, type RenderableToolResultResponse, type Resolve, type ResolveGroupsInfoArgs, type ResolveMentionSuggestionsArgs, type ResolveRoomsInfoArgs, type ResolveUsersArgs, type Room, type RoomEventMessage, type RoomStateServerMsg, type RoomSubscriptionSettings, type SearchCommentsResult, type SerializedChild, type SerializedCrdt, type SerializedList, type SerializedMap, type SerializedObject, type SerializedRegister, type SerializedRootObject, type ServerMsg, ServerMsgCode, type SetParentKeyOp, Signal, type SignalType, SortedList, type Status, type StorageStatus, type StorageUpdate, type StringifyCommentBodyElements, type StringifyCommentBodyOptions, type SubscriptionData, type SubscriptionDataPlain, type SubscriptionDeleteInfo, type SubscriptionDeleteInfoPlain, type SubscriptionKey, type SyncSource, type SyncStatus, TextEditorType, type ThreadData, type ThreadDataPlain, type ThreadDataWithDeleteInfo, type ThreadDeleteInfo, type ToImmutable, type ToJson, type ToolResultResponse, type URLSafeString, type UnsubscribeCallback, type UpdateObjectOp, type UpdatePresenceClientMsg, type UpdatePresenceServerMsg, type UpdateStorageClientMsg, type UpdateStorageServerMsg, type UpdateYDocClientMsg, type UploadAttachmentOptions, type UrlMetadata, type User, type UserJoinServerMsg, type UserLeftServerMsg, type UserMentionData, type UserRoomSubscriptionSettings, type UserSubscriptionData, type UserSubscriptionDataPlain, WebsocketCloseCodes, type WithNavigation, type WithOptional, type WithRequired, type YDocUpdateServerMsg, type YjsSyncStatus, asPos, assert, assertNever, autoRetry, b64decode, batch, checkBounds, chunk, cloneLson, compactObject, fancyConsole as console, convertToCommentData, convertToCommentUserReaction, convertToGroupData, convertToInboxNotificationData, convertToSubscriptionData, convertToThreadData, convertToUserSubscriptionData, createClient, createCommentAttachmentId, createCommentId, createInboxNotificationId, createManagedPool, createNotificationSettings, createThreadId, defineAiTool, deprecate, deprecateIf, detectDupes, entries, errorIf, findLastIndex, freeze, generateUrl, getMentionsFromCommentBody, getSubscriptionKey, html, htmlSafe, isCommentBodyLink, isCommentBodyMention, isCommentBodyText, isJsonArray, isJsonObject, isJsonScalar, isLiveNode, isNotificationChannelEnabled, isNumberOperator, isPlainObject, isStartsWithOperator, isUrl, kInternal, keys, legacy_patchImmutableObject, lsonToJson, makeAbortController, makeEventSource, makePoller, makePosition, mapValues, memoizeOnSuccess, nanoid, nn, objectToQuery, patchLiveObjectKey, patchNotificationSettings, raise, resolveMentionsInCommentBody, sanitizeUrl, shallow, shallow2, stableStringify, stringifyCommentBody, throwUsageError, toPlainLson, tryParseJson, url, urljoin, wait, warnOnce, warnOnceIf, withTimeout };