@liveblocks/core 3.13.0-rc1 → 3.13.0-rc3

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
@@ -342,7 +342,6 @@ declare const OpCode: Readonly<{
342
342
  DELETE_OBJECT_KEY: 6;
343
343
  CREATE_MAP: 7;
344
344
  CREATE_REGISTER: 8;
345
- ACK: 9;
346
345
  }>;
347
346
  declare namespace OpCode {
348
347
  type INIT = typeof OpCode.INIT;
@@ -354,7 +353,6 @@ declare namespace OpCode {
354
353
  type DELETE_OBJECT_KEY = typeof OpCode.DELETE_OBJECT_KEY;
355
354
  type CREATE_MAP = typeof OpCode.CREATE_MAP;
356
355
  type CREATE_REGISTER = typeof OpCode.CREATE_REGISTER;
357
- type ACK = typeof OpCode.ACK;
358
356
  }
359
357
  /**
360
358
  * These operations are the payload for {@link UpdateStorageServerMsg} messages
@@ -1140,7 +1138,7 @@ declare global {
1140
1138
  [key: string]: unknown;
1141
1139
  }
1142
1140
  }
1143
- type ExtendableTypes = "Presence" | "Storage" | "UserMeta" | "RoomEvent" | "ThreadMetadata" | "RoomInfo" | "GroupInfo" | "ActivitiesData";
1141
+ type ExtendableTypes = "Presence" | "Storage" | "UserMeta" | "RoomEvent" | "ThreadMetadata" | "CommentMetadata" | "RoomInfo" | "GroupInfo" | "ActivitiesData";
1144
1142
  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
1143
  type GetOverride<K extends ExtendableTypes, B, Reason extends string = "does not match its requirements"> = GetOverrideOrErrorValue<K, B, MakeErrorString<K, Reason>>;
1146
1144
  type GetOverrideOrErrorValue<K extends ExtendableTypes, B, ErrorType> = unknown extends Liveblocks[K] ? B : Liveblocks[K] extends B ? Liveblocks[K] : ErrorType;
@@ -1148,7 +1146,8 @@ type DP = GetOverride<"Presence", JsonObject, "is not a valid JSON object">;
1148
1146
  type DS = GetOverride<"Storage", LsonObject, "is not a valid LSON value">;
1149
1147
  type DU = GetOverrideOrErrorValue<"UserMeta", BaseUserMeta, Record<"id" | "info", MakeErrorString<"UserMeta">>>;
1150
1148
  type DE = GetOverride<"RoomEvent", Json, "is not a valid JSON value">;
1151
- type DM = GetOverride<"ThreadMetadata", BaseMetadata>;
1149
+ type DTM = GetOverride<"ThreadMetadata", BaseMetadata>;
1150
+ type DCM = GetOverride<"CommentMetadata", BaseMetadata>;
1152
1151
  type DRI = GetOverride<"RoomInfo", BaseRoomInfo>;
1153
1152
  type DGI = GetOverride<"GroupInfo", BaseGroupInfo>;
1154
1153
  type DAD = GetOverrideOrErrorValue<"ActivitiesData", BaseActivitiesData, {
@@ -1213,7 +1212,7 @@ type CommentMixedAttachment = CommentAttachment | CommentLocalAttachment;
1213
1212
  /**
1214
1213
  * Represents a comment.
1215
1214
  */
1216
- type CommentData = {
1215
+ type CommentData<CM extends BaseMetadata = DCM> = {
1217
1216
  type: "comment";
1218
1217
  id: string;
1219
1218
  threadId: string;
@@ -1223,13 +1222,15 @@ type CommentData = {
1223
1222
  editedAt?: Date;
1224
1223
  reactions: CommentReaction[];
1225
1224
  attachments: CommentAttachment[];
1225
+ metadata: CM;
1226
1226
  } & Relax<{
1227
1227
  body: CommentBody;
1228
1228
  } | {
1229
1229
  deletedAt: Date;
1230
1230
  }>;
1231
- type CommentDataPlain = Omit<DateToString<CommentData>, "reactions" | "body"> & {
1231
+ type CommentDataPlain<CM extends BaseMetadata = DCM> = Omit<DateToString<CommentData<CM>>, "reactions" | "body" | "metadata"> & {
1232
1232
  reactions: DateToString<CommentReaction>[];
1233
+ metadata: CM;
1233
1234
  } & Relax<{
1234
1235
  body: CommentBody;
1235
1236
  } | {
@@ -1284,22 +1285,22 @@ type SearchCommentsResult = {
1284
1285
  /**
1285
1286
  * Represents a thread of comments.
1286
1287
  */
1287
- type ThreadData<M extends BaseMetadata = DM> = {
1288
+ type ThreadData<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = {
1288
1289
  type: "thread";
1289
1290
  id: string;
1290
1291
  roomId: string;
1291
1292
  createdAt: Date;
1292
1293
  updatedAt: Date;
1293
- comments: CommentData[];
1294
- metadata: M;
1294
+ comments: CommentData<CM>[];
1295
+ metadata: TM;
1295
1296
  resolved: boolean;
1296
1297
  };
1297
- interface ThreadDataWithDeleteInfo<M extends BaseMetadata = DM> extends ThreadData<M> {
1298
+ interface ThreadDataWithDeleteInfo<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> extends ThreadData<TM, CM> {
1298
1299
  deletedAt?: Date;
1299
1300
  }
1300
- type ThreadDataPlain<M extends BaseMetadata> = Omit<DateToString<ThreadData<M>>, "comments" | "metadata"> & {
1301
- comments: CommentDataPlain[];
1302
- metadata: M;
1301
+ type ThreadDataPlain<TM extends BaseMetadata = DTM, CM extends BaseMetadata = DCM> = Omit<DateToString<ThreadData<TM, CM>>, "comments" | "metadata"> & {
1302
+ comments: CommentDataPlain<CM>[];
1303
+ metadata: TM;
1303
1304
  };
1304
1305
  type ThreadDeleteInfo = {
1305
1306
  type: "deletedThread";
@@ -1537,17 +1538,17 @@ type MakeOptionalFieldsNullable<T> = {
1537
1538
  };
1538
1539
  type Patchable<T> = Partial<MakeOptionalFieldsNullable<T>>;
1539
1540
 
1540
- interface RoomHttpApi<M extends BaseMetadata> {
1541
+ interface RoomHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> {
1541
1542
  getThreads(options: {
1542
1543
  roomId: string;
1543
1544
  cursor?: string;
1544
1545
  query?: {
1545
1546
  resolved?: boolean;
1546
1547
  subscribed?: boolean;
1547
- metadata?: Partial<QueryMetadata<M>>;
1548
+ metadata?: Partial<QueryMetadata<TM>>;
1548
1549
  };
1549
1550
  }): Promise<{
1550
- threads: ThreadData<M>[];
1551
+ threads: ThreadData<TM, CM>[];
1551
1552
  inboxNotifications: InboxNotificationData[];
1552
1553
  subscriptions: SubscriptionData[];
1553
1554
  requestedAt: Date;
@@ -1560,7 +1561,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1560
1561
  signal?: AbortSignal;
1561
1562
  }): Promise<{
1562
1563
  threads: {
1563
- updated: ThreadData<M>[];
1564
+ updated: ThreadData<TM, CM>[];
1564
1565
  deleted: ThreadDeleteInfo[];
1565
1566
  };
1566
1567
  inboxNotifications: {
@@ -1577,7 +1578,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1577
1578
  searchComments(options: {
1578
1579
  roomId: string;
1579
1580
  query: {
1580
- threadMetadata?: Partial<QueryMetadata<M>>;
1581
+ threadMetadata?: Partial<QueryMetadata<TM>>;
1581
1582
  threadResolved?: boolean;
1582
1583
  hasAttachments?: boolean;
1583
1584
  hasMentions?: boolean;
@@ -1588,19 +1589,20 @@ interface RoomHttpApi<M extends BaseMetadata> {
1588
1589
  }): Promise<{
1589
1590
  data: Array<SearchCommentsResult>;
1590
1591
  }>;
1591
- createThread({ roomId, metadata, body, commentId, threadId, attachmentIds, }: {
1592
+ createThread({ roomId, metadata, body, commentId, threadId, commentMetadata, attachmentIds, }: {
1592
1593
  roomId: string;
1593
1594
  threadId?: string;
1594
1595
  commentId?: string;
1595
- metadata: M | undefined;
1596
+ metadata: TM | undefined;
1597
+ commentMetadata: CM | undefined;
1596
1598
  body: CommentBody;
1597
1599
  attachmentIds?: string[];
1598
- }): Promise<ThreadData<M>>;
1600
+ }): Promise<ThreadData<TM, CM>>;
1599
1601
  getThread(options: {
1600
1602
  roomId: string;
1601
1603
  threadId: string;
1602
1604
  }): Promise<{
1603
- thread?: ThreadData<M>;
1605
+ thread?: ThreadData<TM, CM>;
1604
1606
  inboxNotification?: InboxNotificationData;
1605
1607
  subscription?: SubscriptionData;
1606
1608
  }>;
@@ -1610,23 +1612,31 @@ interface RoomHttpApi<M extends BaseMetadata> {
1610
1612
  }): Promise<void>;
1611
1613
  editThreadMetadata({ roomId, metadata, threadId, }: {
1612
1614
  roomId: string;
1613
- metadata: Patchable<M>;
1615
+ metadata: Patchable<TM>;
1614
1616
  threadId: string;
1615
- }): Promise<M>;
1616
- createComment({ roomId, threadId, commentId, body, attachmentIds, }: {
1617
+ }): Promise<TM>;
1618
+ editCommentMetadata({ roomId, threadId, commentId, metadata, }: {
1619
+ roomId: string;
1620
+ threadId: string;
1621
+ commentId: string;
1622
+ metadata: Patchable<CM>;
1623
+ }): Promise<CM>;
1624
+ createComment({ roomId, threadId, commentId, body, metadata, attachmentIds, }: {
1617
1625
  roomId: string;
1618
1626
  threadId: string;
1619
1627
  commentId?: string;
1620
1628
  body: CommentBody;
1629
+ metadata?: CM;
1621
1630
  attachmentIds?: string[];
1622
- }): Promise<CommentData>;
1623
- editComment({ roomId, threadId, commentId, body, attachmentIds, }: {
1631
+ }): Promise<CommentData<CM>>;
1632
+ editComment({ roomId, threadId, commentId, body, attachmentIds, metadata, }: {
1624
1633
  roomId: string;
1625
1634
  threadId: string;
1626
1635
  commentId: string;
1627
1636
  body: CommentBody;
1628
1637
  attachmentIds?: string[];
1629
- }): Promise<CommentData>;
1638
+ metadata?: Patchable<CM>;
1639
+ }): Promise<CommentData<CM>>;
1630
1640
  deleteComment({ roomId, threadId, commentId, }: {
1631
1641
  roomId: string;
1632
1642
  threadId: string;
@@ -1764,7 +1774,7 @@ interface RoomHttpApi<M extends BaseMetadata> {
1764
1774
  signal: AbortSignal;
1765
1775
  }): Promise<string>;
1766
1776
  }
1767
- interface NotificationHttpApi<M extends BaseMetadata> {
1777
+ interface NotificationHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> {
1768
1778
  getInboxNotifications(options?: {
1769
1779
  cursor?: string;
1770
1780
  query?: {
@@ -1773,7 +1783,7 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1773
1783
  };
1774
1784
  }): Promise<{
1775
1785
  inboxNotifications: InboxNotificationData[];
1776
- threads: ThreadData<M>[];
1786
+ threads: ThreadData<TM, CM>[];
1777
1787
  subscriptions: SubscriptionData[];
1778
1788
  nextCursor: string | null;
1779
1789
  requestedAt: Date;
@@ -1791,7 +1801,7 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1791
1801
  deleted: InboxNotificationDeleteInfo[];
1792
1802
  };
1793
1803
  threads: {
1794
- updated: ThreadData<M>[];
1804
+ updated: ThreadData<TM, CM>[];
1795
1805
  deleted: ThreadDeleteInfo[];
1796
1806
  };
1797
1807
  subscriptions: {
@@ -1816,16 +1826,16 @@ interface NotificationHttpApi<M extends BaseMetadata> {
1816
1826
  }): Promise<NotificationSettingsPlain>;
1817
1827
  updateNotificationSettings(settings: PartialNotificationSettings): Promise<NotificationSettingsPlain>;
1818
1828
  }
1819
- interface LiveblocksHttpApi<M extends BaseMetadata> extends RoomHttpApi<M>, NotificationHttpApi<M> {
1829
+ interface LiveblocksHttpApi<TM extends BaseMetadata, CM extends BaseMetadata> extends RoomHttpApi<TM, CM>, NotificationHttpApi<TM, CM> {
1820
1830
  getUrlMetadata(url: string): Promise<UrlMetadata>;
1821
1831
  getUserThreads_experimental(options?: {
1822
1832
  cursor?: string;
1823
1833
  query?: {
1824
1834
  resolved?: boolean;
1825
- metadata?: Partial<QueryMetadata<M>>;
1835
+ metadata?: Partial<QueryMetadata<TM>>;
1826
1836
  };
1827
1837
  }): Promise<{
1828
- threads: ThreadData<M>[];
1838
+ threads: ThreadData<TM, CM>[];
1829
1839
  inboxNotifications: InboxNotificationData[];
1830
1840
  subscriptions: SubscriptionData[];
1831
1841
  nextCursor: string | null;
@@ -1841,7 +1851,7 @@ interface LiveblocksHttpApi<M extends BaseMetadata> extends RoomHttpApi<M>, Noti
1841
1851
  deleted: InboxNotificationDeleteInfo[];
1842
1852
  };
1843
1853
  threads: {
1844
- updated: ThreadData<M>[];
1854
+ updated: ThreadData<TM, CM>[];
1845
1855
  deleted: ThreadDeleteInfo[];
1846
1856
  };
1847
1857
  subscriptions: {
@@ -1901,6 +1911,7 @@ type CommentsOrNotificationsErrorContext = {
1901
1911
  commentId: string;
1902
1912
  body: CommentBody;
1903
1913
  metadata: BaseMetadata;
1914
+ commentMetadata: BaseMetadata;
1904
1915
  } | {
1905
1916
  type: "DELETE_THREAD_ERROR";
1906
1917
  roomId: string;
@@ -1910,6 +1921,12 @@ type CommentsOrNotificationsErrorContext = {
1910
1921
  roomId: string;
1911
1922
  threadId: string;
1912
1923
  metadata: Patchable<BaseMetadata>;
1924
+ } | {
1925
+ type: "EDIT_COMMENT_METADATA_ERROR";
1926
+ roomId: string;
1927
+ threadId: string;
1928
+ commentId: string;
1929
+ metadata: Patchable<BaseMetadata>;
1913
1930
  } | {
1914
1931
  type: "MARK_THREAD_AS_RESOLVED_ERROR" | "MARK_THREAD_AS_UNRESOLVED_ERROR" | "SUBSCRIBE_TO_THREAD_ERROR" | "UNSUBSCRIBE_FROM_THREAD_ERROR";
1915
1932
  roomId: string;
@@ -1920,6 +1937,7 @@ type CommentsOrNotificationsErrorContext = {
1920
1937
  threadId: string;
1921
1938
  commentId: string;
1922
1939
  body: CommentBody;
1940
+ metadata: BaseMetadata;
1923
1941
  } | {
1924
1942
  type: "DELETE_COMMENT_ERROR";
1925
1943
  roomId: string;
@@ -2030,7 +2048,7 @@ type InternalSyncStatus = SyncStatus | "has-local-changes";
2030
2048
  * of Liveblocks, NEVER USE ANY OF THESE DIRECTLY, because bad things
2031
2049
  * will probably happen if you do.
2032
2050
  */
2033
- type PrivateClientApi<U extends BaseUserMeta, M extends BaseMetadata> = {
2051
+ type PrivateClientApi<U extends BaseUserMeta, TM extends BaseMetadata, CM extends BaseMetadata> = {
2034
2052
  readonly currentUserId: Signal<string | undefined>;
2035
2053
  readonly mentionSuggestionsCache: Map<string, MentionData[]>;
2036
2054
  readonly resolveMentionSuggestions: ClientOptions<U>["resolveMentionSuggestions"];
@@ -2038,13 +2056,13 @@ type PrivateClientApi<U extends BaseUserMeta, M extends BaseMetadata> = {
2038
2056
  readonly roomsInfoStore: BatchStore<DRI | undefined, string>;
2039
2057
  readonly groupsInfoStore: BatchStore<DGI | undefined, string>;
2040
2058
  readonly getRoomIds: () => string[];
2041
- readonly httpClient: LiveblocksHttpApi<M>;
2042
- 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>;
2043
2061
  createSyncSource(): SyncSource;
2044
2062
  emitError(context: LiveblocksErrorContext, cause?: Error): void;
2045
2063
  ai: Ai;
2046
2064
  };
2047
- type NotificationsApi<M extends BaseMetadata> = {
2065
+ type NotificationsApi<TM extends BaseMetadata, CM extends BaseMetadata> = {
2048
2066
  /**
2049
2067
  * Gets a page (or the initial page) for user inbox notifications and their
2050
2068
  * associated threads and thread subscriptions.
@@ -2071,7 +2089,7 @@ type NotificationsApi<M extends BaseMetadata> = {
2071
2089
  };
2072
2090
  }): Promise<{
2073
2091
  inboxNotifications: InboxNotificationData[];
2074
- threads: ThreadData<M>[];
2092
+ threads: ThreadData<TM, CM>[];
2075
2093
  subscriptions: SubscriptionData[];
2076
2094
  nextCursor: string | null;
2077
2095
  requestedAt: Date;
@@ -2112,7 +2130,7 @@ type NotificationsApi<M extends BaseMetadata> = {
2112
2130
  deleted: InboxNotificationDeleteInfo[];
2113
2131
  };
2114
2132
  threads: {
2115
- updated: ThreadData<M>[];
2133
+ updated: ThreadData<TM, CM>[];
2116
2134
  deleted: ThreadDeleteInfo[];
2117
2135
  };
2118
2136
  subscriptions: {
@@ -2192,23 +2210,23 @@ type NotificationsApi<M extends BaseMetadata> = {
2192
2210
  * narrower.
2193
2211
  */
2194
2212
  type OpaqueClient = Client<BaseUserMeta>;
2195
- 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> = {
2196
2214
  /**
2197
2215
  * Gets a room. Returns null if {@link Client.enter} has not been called previously.
2198
2216
  *
2199
2217
  * @param roomId The id of the room
2200
2218
  */
2201
- 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;
2202
2220
  /**
2203
2221
  * Enter a room.
2204
2222
  * @param roomId The id of the room
2205
2223
  * @param options Optional. You can provide initializers for the Presence or Storage when entering the Room.
2206
2224
  * @returns The room and a leave function. Call the returned leave() function when you no longer need the room.
2207
2225
  */
2208
- 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, [
2209
2227
  options: EnterOptions<NoInfr<P>, NoInfr<S>>
2210
2228
  ]>): {
2211
- room: Room<P, S, U, E, M2>;
2229
+ room: Room<P, S, U, E, TM2, CM2>;
2212
2230
  leave: () => void;
2213
2231
  };
2214
2232
  /**
@@ -2274,7 +2292,7 @@ type Client<U extends BaseUserMeta = DU, M extends BaseMetadata = DM> = {
2274
2292
  * of Liveblocks, NEVER USE ANY OF THESE DIRECTLY, because bad things
2275
2293
  * will probably happen if you do.
2276
2294
  */
2277
- readonly [kInternal]: PrivateClientApi<U, M>;
2295
+ readonly [kInternal]: PrivateClientApi<U, TM, CM>;
2278
2296
  /**
2279
2297
  * Returns the current global sync status of the Liveblocks client. If any
2280
2298
  * part of Liveblocks has any local pending changes that haven't been
@@ -2298,7 +2316,7 @@ type Client<U extends BaseUserMeta = DU, M extends BaseMetadata = DM> = {
2298
2316
  readonly error: Observable<LiveblocksError>;
2299
2317
  readonly syncStatus: Observable<void>;
2300
2318
  };
2301
- } & NotificationsApi<M>;
2319
+ } & NotificationsApi<TM, CM>;
2302
2320
  type AuthEndpoint = string | ((room?: string) => Promise<CustomAuthenticationResult>);
2303
2321
  /**
2304
2322
  * The authentication endpoint that is called to ensure that the current user has access to a room.
@@ -2492,7 +2510,7 @@ declare const ServerMsgCode: Readonly<{
2492
2510
  USER_LEFT: 102;
2493
2511
  BROADCASTED_EVENT: 103;
2494
2512
  ROOM_STATE: 104;
2495
- INITIAL_STORAGE_STATE: 200;
2513
+ STORAGE_STATE: 200;
2496
2514
  UPDATE_STORAGE: 201;
2497
2515
  UPDATE_YDOC: 300;
2498
2516
  THREAD_CREATED: 400;
@@ -2504,6 +2522,7 @@ declare const ServerMsgCode: Readonly<{
2504
2522
  COMMENT_DELETED: 404;
2505
2523
  COMMENT_REACTION_ADDED: 405;
2506
2524
  COMMENT_REACTION_REMOVED: 406;
2525
+ COMMENT_METADATA_UPDATED: 409;
2507
2526
  REJECT_STORAGE_OP: 299;
2508
2527
  }>;
2509
2528
  declare namespace ServerMsgCode {
@@ -2512,7 +2531,7 @@ declare namespace ServerMsgCode {
2512
2531
  type USER_LEFT = typeof ServerMsgCode.USER_LEFT;
2513
2532
  type BROADCASTED_EVENT = typeof ServerMsgCode.BROADCASTED_EVENT;
2514
2533
  type ROOM_STATE = typeof ServerMsgCode.ROOM_STATE;
2515
- type INITIAL_STORAGE_STATE = typeof ServerMsgCode.INITIAL_STORAGE_STATE;
2534
+ type STORAGE_STATE = typeof ServerMsgCode.STORAGE_STATE;
2516
2535
  type UPDATE_STORAGE = typeof ServerMsgCode.UPDATE_STORAGE;
2517
2536
  type UPDATE_YDOC = typeof ServerMsgCode.UPDATE_YDOC;
2518
2537
  type THREAD_CREATED = typeof ServerMsgCode.THREAD_CREATED;
@@ -2524,13 +2543,14 @@ declare namespace ServerMsgCode {
2524
2543
  type COMMENT_DELETED = typeof ServerMsgCode.COMMENT_DELETED;
2525
2544
  type COMMENT_REACTION_ADDED = typeof ServerMsgCode.COMMENT_REACTION_ADDED;
2526
2545
  type COMMENT_REACTION_REMOVED = typeof ServerMsgCode.COMMENT_REACTION_REMOVED;
2546
+ type COMMENT_METADATA_UPDATED = typeof ServerMsgCode.COMMENT_METADATA_UPDATED;
2527
2547
  type REJECT_STORAGE_OP = typeof ServerMsgCode.REJECT_STORAGE_OP;
2528
2548
  }
2529
2549
  /**
2530
2550
  * Messages that can be sent from the server to the client.
2531
2551
  */
2532
- 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;
2533
- 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> | StorageStateServerMsg | UpdateStorageServerMsg | YDocUpdateServerMsg | RejectedStorageOpServerMsg | CommentsEventServerMsg;
2553
+ type CommentsEventServerMsg = ThreadCreatedEvent | ThreadDeletedEvent | ThreadMetadataUpdatedEvent | ThreadUpdatedEvent | CommentCreatedEvent | CommentEditedEvent | CommentDeletedEvent | CommentReactionAdded | CommentReactionRemoved | CommentMetadataUpdatedEvent;
2534
2554
  type ThreadCreatedEvent = {
2535
2555
  type: ServerMsgCode.THREAD_CREATED;
2536
2556
  threadId: string;
@@ -2574,6 +2594,11 @@ type CommentReactionRemoved = {
2574
2594
  commentId: string;
2575
2595
  emoji: string;
2576
2596
  };
2597
+ type CommentMetadataUpdatedEvent = {
2598
+ type: ServerMsgCode.COMMENT_METADATA_UPDATED;
2599
+ threadId: string;
2600
+ commentId: string;
2601
+ };
2577
2602
  /**
2578
2603
  * Sent by the WebSocket server and broadcasted to all clients to announce that
2579
2604
  * a User updated their presence. For example, when a user moves their cursor.
@@ -2720,11 +2745,11 @@ type RoomStateServerMsg<U extends BaseUserMeta> = {
2720
2745
  };
2721
2746
  /**
2722
2747
  * Sent by the WebSocket server to a single client in response to the client
2723
- * joining the Room, to provide the initial Storage state of the Room. The
2724
- * payload includes the entire Storage document.
2748
+ * sending a FetchStorageClientMsg message, to provide the initial Storage
2749
+ * state of the Room. The payload includes the entire Storage document.
2725
2750
  */
2726
- type InitialDocumentStateServerMsg = {
2727
- readonly type: ServerMsgCode.INITIAL_STORAGE_STATE;
2751
+ type StorageStateServerMsg = {
2752
+ readonly type: ServerMsgCode.STORAGE_STATE;
2728
2753
  readonly items: IdTuple<SerializedCrdt>[];
2729
2754
  };
2730
2755
  /**
@@ -3055,12 +3080,12 @@ type SubscribeFn<P extends JsonObject, _TStorage extends LsonObject, U extends B
3055
3080
  (type: "storage-status", listener: Callback<StorageStatus>): () => void;
3056
3081
  (type: "comments", listener: Callback<CommentsEventServerMsg>): () => void;
3057
3082
  };
3058
- type GetThreadsOptions<M extends BaseMetadata> = {
3083
+ type GetThreadsOptions<TM extends BaseMetadata> = {
3059
3084
  cursor?: string;
3060
3085
  query?: {
3061
3086
  resolved?: boolean;
3062
3087
  subscribed?: boolean;
3063
- metadata?: Partial<QueryMetadata<M>>;
3088
+ metadata?: Partial<QueryMetadata<TM>>;
3064
3089
  };
3065
3090
  };
3066
3091
  type GetThreadsSinceOptions = {
@@ -3083,7 +3108,7 @@ type GetSubscriptionSettingsOptions = {
3083
3108
  * a Room instance using globally augmented types only, which is narrower.
3084
3109
  */
3085
3110
  type OpaqueRoom = Room<JsonObject, LsonObject, BaseUserMeta, Json, BaseMetadata>;
3086
- 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> = {
3087
3112
  /**
3088
3113
  * @private
3089
3114
  *
@@ -3297,8 +3322,8 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3297
3322
  * requestedAt
3298
3323
  * } = await room.getThreads({ query: { resolved: false }});
3299
3324
  */
3300
- getThreads(options?: GetThreadsOptions<M>): Promise<{
3301
- threads: ThreadData<M>[];
3325
+ getThreads(options?: GetThreadsOptions<TM>): Promise<{
3326
+ threads: ThreadData<TM, CM>[];
3302
3327
  inboxNotifications: InboxNotificationData[];
3303
3328
  subscriptions: SubscriptionData[];
3304
3329
  requestedAt: Date;
@@ -3315,7 +3340,7 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3315
3340
  */
3316
3341
  getThreadsSince(options: GetThreadsSinceOptions): Promise<{
3317
3342
  threads: {
3318
- updated: ThreadData<M>[];
3343
+ updated: ThreadData<TM, CM>[];
3319
3344
  deleted: ThreadDeleteInfo[];
3320
3345
  };
3321
3346
  inboxNotifications: {
@@ -3336,7 +3361,7 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3336
3361
  * const { thread, inboxNotification, subscription } = await room.getThread("th_xxx");
3337
3362
  */
3338
3363
  getThread(threadId: string): Promise<{
3339
- thread?: ThreadData<M>;
3364
+ thread?: ThreadData<TM, CM>;
3340
3365
  inboxNotification?: InboxNotificationData;
3341
3366
  subscription?: SubscriptionData;
3342
3367
  }>;
@@ -3354,10 +3379,11 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3354
3379
  createThread(options: {
3355
3380
  threadId?: string;
3356
3381
  commentId?: string;
3357
- metadata: M | undefined;
3382
+ metadata: TM | undefined;
3358
3383
  body: CommentBody;
3384
+ commentMetadata?: CM;
3359
3385
  attachmentIds?: string[];
3360
- }): Promise<ThreadData<M>>;
3386
+ }): Promise<ThreadData<TM, CM>>;
3361
3387
  /**
3362
3388
  * Deletes a thread.
3363
3389
  *
@@ -3373,9 +3399,21 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3373
3399
  * await room.editThreadMetadata({ threadId: "th_xxx", metadata: { x: 100, y: 100 } })
3374
3400
  */
3375
3401
  editThreadMetadata(options: {
3376
- metadata: Patchable<M>;
3402
+ metadata: Patchable<TM>;
3377
3403
  threadId: string;
3378
- }): Promise<M>;
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: { tag: "important", externalId: 1234 } })
3411
+ */
3412
+ editCommentMetadata(options: {
3413
+ threadId: string;
3414
+ commentId: string;
3415
+ metadata: Patchable<CM>;
3416
+ }): Promise<CM>;
3379
3417
  /**
3380
3418
  * Marks a thread as resolved.
3381
3419
  *
@@ -3420,8 +3458,9 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3420
3458
  threadId: string;
3421
3459
  commentId?: string;
3422
3460
  body: CommentBody;
3461
+ metadata?: CM;
3423
3462
  attachmentIds?: string[];
3424
- }): Promise<CommentData>;
3463
+ }): Promise<CommentData<CM>>;
3425
3464
  /**
3426
3465
  * Edits a comment.
3427
3466
  *
@@ -3439,8 +3478,9 @@ type Room<P extends JsonObject = DP, S extends LsonObject = DS, U extends BaseUs
3439
3478
  threadId: string;
3440
3479
  commentId: string;
3441
3480
  body: CommentBody;
3481
+ metadata?: Patchable<CM>;
3442
3482
  attachmentIds?: string[];
3443
- }): Promise<CommentData>;
3483
+ }): Promise<CommentData<CM>>;
3444
3484
  /**
3445
3485
  * Deletes a comment.
3446
3486
  * If it is the last non-deleted comment, the thread also gets deleted.
@@ -4459,14 +4499,14 @@ declare const MENTION_CHARACTER = "@";
4459
4499
  * @param data The plain comment data object (usually returned by the API)
4460
4500
  * @returns The rich comment data object that can be used by the client.
4461
4501
  */
4462
- declare function convertToCommentData(data: CommentDataPlain): CommentData;
4502
+ declare function convertToCommentData<CM extends BaseMetadata>(data: CommentDataPlain<CM>): CommentData<CM>;
4463
4503
  /**
4464
4504
  * Converts a plain thread data object (usually returned by the API) to a thread data object that can be used by the client.
4465
4505
  * This is necessary because the plain data object stores dates as ISO strings, but the client expects them as Date objects.
4466
4506
  * @param data The plain thread data object (usually returned by the API)
4467
4507
  * @returns The rich thread data object that can be used by the client.
4468
4508
  */
4469
- 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>;
4470
4510
  /**
4471
4511
  * Converts a plain comment reaction object (usually returned by the API) to a comment reaction object that can be used by the client.
4472
4512
  * This is necessary because the plain data object stores dates as ISO strings, but the client expects them as Date objects.
@@ -5182,4 +5222,4 @@ type EnsureJson<T> = T extends Json ? T : T extends Array<infer I> ? (EnsureJson
5182
5222
  [K in keyof T as EnsureJson<T[K]> extends never ? never : K]: EnsureJson<T[K]>;
5183
5223
  };
5184
5224
 
5185
- 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 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 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 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 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 StorageStateServerMsg, 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 };