@liveblocks/core 1.2.2-comments3 → 1.2.2-comments4

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.mts CHANGED
@@ -570,6 +570,11 @@ declare type CustomAuthenticationResult = {
570
570
  reason: string;
571
571
  };
572
572
 
573
+ declare type BaseUserInfo = {
574
+ [key: string]: Json | undefined;
575
+ name?: string;
576
+ avatar?: string;
577
+ };
573
578
  /**
574
579
  * This type is used by clients to define the metadata for a user.
575
580
  */
@@ -582,9 +587,160 @@ declare type BaseUserMeta = {
582
587
  /**
583
588
  * Additional user information that has been set in the authentication endpoint.
584
589
  */
585
- info?: Json;
590
+ info?: BaseUserInfo;
591
+ };
592
+
593
+ declare enum Permission {
594
+ Read = "room:read",
595
+ Write = "room:write",
596
+ PresenceWrite = "room:presence:write",
597
+ CommentsWrite = "comments:write",
598
+ CommentsRead = "comments:read"
599
+ }
600
+ declare type LiveblocksPermissions = Record<string, Permission[]>;
601
+ declare enum TokenKind {
602
+ SECRET_LEGACY = "sec-legacy",
603
+ ACCESS_TOKEN = "acc",
604
+ ID_TOKEN = "id"
605
+ }
606
+ declare type JwtMeta = {
607
+ iat: number;
608
+ exp: number;
609
+ };
610
+ /**
611
+ * Legacy Secret Token.
612
+ */
613
+ declare type LegacySecretToken = {
614
+ k: TokenKind.SECRET_LEGACY;
615
+ roomId: string;
616
+ scopes: string[];
617
+ id?: string;
618
+ info?: BaseUserInfo;
619
+ [other: string]: Json | undefined;
620
+ } & JwtMeta;
621
+ /**
622
+ * New authorization Access Token.
623
+ */
624
+ declare type AccessToken = {
625
+ k: TokenKind.ACCESS_TOKEN;
626
+ pid: string;
627
+ uid: string;
628
+ perms: LiveblocksPermissions;
629
+ ui?: BaseUserInfo;
630
+ } & JwtMeta;
631
+ /**
632
+ * New authorization ID Token.
633
+ */
634
+ declare type IDToken = {
635
+ k: TokenKind.ID_TOKEN;
636
+ pid: string;
637
+ uid: string;
638
+ gids?: string[];
639
+ ui?: BaseUserInfo;
640
+ } & JwtMeta;
641
+ declare type AuthToken = AccessToken | IDToken | LegacySecretToken;
642
+ declare type ParsedAuthToken = {
643
+ readonly raw: string;
644
+ readonly parsed: AuthToken;
645
+ };
646
+
647
+ declare type AuthValue = {
648
+ type: "secret";
649
+ token: ParsedAuthToken;
650
+ } | {
651
+ type: "public";
652
+ publicApiKey: string;
653
+ };
654
+
655
+ declare type BaseMetadata = Record<string, string | boolean | number>;
656
+
657
+ declare type CommentBodyBlockElement = CommentBodyParagraph;
658
+ declare type CommentBodyInlineElement = CommentBodyText | CommentBodyMention;
659
+ declare type CommentBodyElement = CommentBodyBlockElement | CommentBodyInlineElement;
660
+ declare type CommentBodyParagraph = {
661
+ type: "paragraph";
662
+ children: CommentBodyInlineElement[];
663
+ };
664
+ declare type CommentBodyMention = {
665
+ type: "mention";
666
+ id: string;
667
+ };
668
+ declare type CommentBodyText = {
669
+ bold?: boolean;
670
+ italic?: boolean;
671
+ strikethrough?: boolean;
672
+ code?: boolean;
673
+ text: string;
674
+ };
675
+ declare type CommentBody = {
676
+ version: 1;
677
+ content: CommentBodyBlockElement[];
678
+ };
679
+
680
+ /**
681
+ * Represents a comment.
682
+ */
683
+ declare type CommentData = {
684
+ type: "comment";
685
+ id: string;
686
+ threadId: string;
687
+ roomId: string;
688
+ userId: string;
689
+ createdAt: string;
690
+ editedAt?: string;
691
+ } & ({
692
+ body: CommentBody;
693
+ deletedAt?: never;
694
+ } | {
695
+ body?: never;
696
+ deletedAt: string;
697
+ });
698
+
699
+ /**
700
+ * Represents a thread of comments.
701
+ */
702
+ declare type ThreadData<ThreadMetadata extends BaseMetadata = never> = {
703
+ type: "thread";
704
+ id: string;
705
+ roomId: string;
706
+ createdAt: string;
707
+ updatedAt?: string;
708
+ comments: CommentData[];
709
+ metadata: [ThreadMetadata] extends [never] ? Record<string, never> : ThreadMetadata;
586
710
  };
587
711
 
712
+ declare type Options = {
713
+ serverEndpoint: string;
714
+ };
715
+ declare type CommentsApi<ThreadMetadata extends BaseMetadata> = {
716
+ getThreads(): Promise<ThreadData<ThreadMetadata>[]>;
717
+ createThread(options: {
718
+ threadId: string;
719
+ commentId: string;
720
+ metadata: ThreadMetadata | undefined;
721
+ body: CommentBody;
722
+ }): Promise<ThreadData<ThreadMetadata>>;
723
+ editThreadMetadata(options: {
724
+ metadata: Partial<ThreadMetadata>;
725
+ threadId: string;
726
+ }): Promise<ThreadData<ThreadMetadata>>;
727
+ createComment(options: {
728
+ threadId: string;
729
+ commentId: string;
730
+ body: CommentBody;
731
+ }): Promise<CommentData>;
732
+ editComment(options: {
733
+ threadId: string;
734
+ commentId: string;
735
+ body: CommentBody;
736
+ }): Promise<CommentData>;
737
+ deleteComment(options: {
738
+ threadId: string;
739
+ commentId: string;
740
+ }): Promise<void>;
741
+ };
742
+ declare function createCommentsApi<ThreadMetadata extends BaseMetadata>(roomId: string, getAuthValue: () => Promise<AuthValue>, { serverEndpoint }: Options): CommentsApi<ThreadMetadata>;
743
+
588
744
  declare type Callback<T> = (event: T) => void;
589
745
  declare type UnsubscribeCallback = () => void;
590
746
  declare type Observable<T> = {
@@ -606,6 +762,59 @@ declare type Observable<T> = {
606
762
  */
607
763
  waitUntil(predicate?: (event: T) => boolean): Promise<T>;
608
764
  };
765
+ declare type EventSource<T> = Observable<T> & {
766
+ /**
767
+ * Notify all subscribers about the event.
768
+ */
769
+ notify(event: T): void;
770
+ /**
771
+ * Clear all registered event listeners. None of the registered functions
772
+ * will ever get called again. Be careful when using this API, because the
773
+ * subscribers may not have any idea they won't be notified anymore.
774
+ */
775
+ clear(): void;
776
+ /**
777
+ * Returns the number of active subscribers.
778
+ */
779
+ count(): number;
780
+ /**
781
+ * Pauses event delivery until unpaused. Any .notify() calls made while
782
+ * paused will get buffered into memory and emitted later.
783
+ */
784
+ pause(): void;
785
+ /**
786
+ * Emits all in-memory buffered events, and unpauses. Any .notify() calls
787
+ * made after this will be synchronously delivered again.
788
+ */
789
+ unpause(): void;
790
+ /**
791
+ * Observable instance, which can be used to subscribe to this event source
792
+ * in a readonly fashion. Safe to publicly expose.
793
+ */
794
+ observable: Observable<T>;
795
+ };
796
+ /**
797
+ * makeEventSource allows you to generate a subscribe/notify pair of functions
798
+ * to make subscribing easy and to get notified about events.
799
+ *
800
+ * The events are anonymous, so you can use it to define events, like so:
801
+ *
802
+ * const event1 = makeEventSource();
803
+ * const event2 = makeEventSource();
804
+ *
805
+ * event1.subscribe(foo);
806
+ * event1.subscribe(bar);
807
+ * event2.subscribe(qux);
808
+ *
809
+ * // Unsubscription is pretty standard
810
+ * const unsub = event2.subscribe(foo);
811
+ * unsub();
812
+ *
813
+ * event1.notify(); // Now foo and bar will get called
814
+ * event2.notify(); // Now qux will get called (but foo will not, since it's unsubscribed)
815
+ *
816
+ */
817
+ declare function makeEventSource<T>(): EventSource<T>;
609
818
 
610
819
  interface IWebSocketEvent {
611
820
  type: string;
@@ -760,12 +969,41 @@ declare enum ServerMsgCode {
760
969
  INITIAL_STORAGE_STATE = 200,
761
970
  UPDATE_STORAGE = 201,
762
971
  REJECT_STORAGE_OP = 299,
763
- UPDATE_YDOC = 300
972
+ UPDATE_YDOC = 300,
973
+ THREAD_CREATED = 400,
974
+ THREAD_METADATA_UPDATED = 401,
975
+ COMMENT_CREATED = 402,
976
+ COMMENT_EDITED = 403,
977
+ COMMENT_DELETED = 404
764
978
  }
765
979
  /**
766
980
  * Messages that can be sent from the server to the client.
767
981
  */
768
- declare type ServerMsg<TPresence extends JsonObject, TUserMeta extends BaseUserMeta, TRoomEvent extends Json> = UpdatePresenceServerMsg<TPresence> | UserJoinServerMsg<TUserMeta> | UserLeftServerMsg | BroadcastedEventServerMsg<TRoomEvent> | RoomStateServerMsg<TUserMeta> | InitialDocumentStateServerMsg | UpdateStorageServerMsg | RejectedStorageOpServerMsg | YDocUpdate;
982
+ declare type ServerMsg<TPresence extends JsonObject, TUserMeta extends BaseUserMeta, TRoomEvent extends Json> = UpdatePresenceServerMsg<TPresence> | UserJoinServerMsg<TUserMeta> | UserLeftServerMsg | BroadcastedEventServerMsg<TRoomEvent> | RoomStateServerMsg<TUserMeta> | InitialDocumentStateServerMsg | UpdateStorageServerMsg | RejectedStorageOpServerMsg | YDocUpdate | CommentsEventServerMsg;
983
+ declare type CommentsEventServerMsg = ThreadCreatedEvent | ThreadMetadataUpdatedEvent | CommentCreatedEvent | CommentEditedEvent | CommentDeletedEvent;
984
+ declare type ThreadCreatedEvent = {
985
+ type: ServerMsgCode.THREAD_CREATED;
986
+ threadId: string;
987
+ };
988
+ declare type ThreadMetadataUpdatedEvent = {
989
+ type: ServerMsgCode.THREAD_METADATA_UPDATED;
990
+ threadId: string;
991
+ };
992
+ declare type CommentCreatedEvent = {
993
+ type: ServerMsgCode.COMMENT_CREATED;
994
+ threadId: string;
995
+ commentId: string;
996
+ };
997
+ declare type CommentEditedEvent = {
998
+ type: ServerMsgCode.COMMENT_EDITED;
999
+ threadId: string;
1000
+ commentId: string;
1001
+ };
1002
+ declare type CommentDeletedEvent = {
1003
+ type: ServerMsgCode.COMMENT_DELETED;
1004
+ threadId: string;
1005
+ commentId: string;
1006
+ };
769
1007
  /**
770
1008
  * Sent by the WebSocket server and broadcasted to all clients to announce that
771
1009
  * a User updated their presence. For example, when a user moves their cursor.
@@ -972,6 +1210,10 @@ declare type User<TPresence extends JsonObject, TUserMeta extends BaseUserMeta>
972
1210
  * can only read but not mutate it.
973
1211
  */
974
1212
  readonly canWrite: boolean;
1213
+ /**
1214
+ * True if the user can comment on a thread
1215
+ */
1216
+ readonly canComment: boolean;
975
1217
  };
976
1218
 
977
1219
  /**
@@ -1239,7 +1481,7 @@ declare type SubscribeFn<TPresence extends JsonObject, _TStorage extends LsonObj
1239
1481
  */
1240
1482
  (type: "storage-status", listener: Callback<StorageStatus>): () => void;
1241
1483
  };
1242
- declare type Room<TPresence extends JsonObject, TStorage extends LsonObject, TUserMeta extends BaseUserMeta, TRoomEvent extends Json> = {
1484
+ declare type Room<TPresence extends JsonObject, TStorage extends LsonObject, TUserMeta extends BaseUserMeta, TRoomEvent extends Json> = CommentsApi<any> & {
1243
1485
  /**
1244
1486
  * The id of the room.
1245
1487
  */
@@ -1384,6 +1626,7 @@ declare type Room<TPresence extends JsonObject, TStorage extends LsonObject, TUs
1384
1626
  readonly storageDidLoad: Observable<void>;
1385
1627
  readonly storageStatus: Observable<StorageStatus>;
1386
1628
  readonly ydoc: Observable<YDocUpdate>;
1629
+ readonly comments: Observable<CommentsEventServerMsg>;
1387
1630
  };
1388
1631
  /**
1389
1632
  * Batches modifications made during the given function.
@@ -1569,6 +1812,93 @@ declare function assert(condition: boolean, errmsg: string): asserts condition;
1569
1812
  */
1570
1813
  declare function nn<T>(value: T, errmsg?: string): NonNullable<T>;
1571
1814
 
1815
+ declare type AsyncFunction<T, A extends any[] = any[]> = (...args: A) => Promise<T>;
1816
+ declare type AsyncCacheOptions<T, E> = {
1817
+ isStateEqual?: (a: AsyncState<T, E>, b: AsyncState<T, E>) => boolean;
1818
+ };
1819
+ declare type AsyncStateInitial = {
1820
+ readonly isLoading: false;
1821
+ readonly data?: never;
1822
+ readonly error?: never;
1823
+ };
1824
+ declare type AsyncStateLoading<T> = {
1825
+ readonly isLoading: true;
1826
+ readonly data?: T;
1827
+ readonly error?: never;
1828
+ };
1829
+ declare type AsyncStateSuccess<T> = {
1830
+ readonly isLoading: false;
1831
+ readonly data: T;
1832
+ readonly error?: never;
1833
+ };
1834
+ declare type AsyncStateError<T, E> = {
1835
+ readonly isLoading: false;
1836
+ readonly data?: T;
1837
+ readonly error: E;
1838
+ };
1839
+ declare type AsyncState<T, E> = AsyncStateInitial | AsyncStateLoading<T> | AsyncStateSuccess<T> | AsyncStateError<T, E>;
1840
+ declare type AsyncStateResolved<T, E> = AsyncStateSuccess<T> | AsyncStateError<T, E>;
1841
+ declare type AsyncCacheItem<T, E> = Observable<AsyncState<T, E>> & {
1842
+ setAsyncFunction(asyncFunction: AsyncFunction<T, [string]>): void;
1843
+ get(): Promise<AsyncStateResolved<T, E>>;
1844
+ getState(): AsyncState<T, E>;
1845
+ revalidate(): Promise<AsyncStateResolved<T, E>>;
1846
+ };
1847
+ declare type AsyncCache<T, E> = {
1848
+ /**
1849
+ * @private
1850
+ *
1851
+ * Creates a key in the cache.
1852
+ *
1853
+ * @param key The key to create.
1854
+ * @param asyncFunction Override the cache's function for this key.
1855
+ */
1856
+ create(key: string, asyncFunction?: AsyncFunction<T, [string]>): AsyncCacheItem<T, E>;
1857
+ /**
1858
+ * Returns a promise which resolves with the state of the key.
1859
+ *
1860
+ * @param key The key to get.
1861
+ */
1862
+ get(key: string): Promise<AsyncStateResolved<T, E>>;
1863
+ /**
1864
+ * Returns the current state of the key synchronously.
1865
+ *
1866
+ * @param key The key to get the state of.
1867
+ */
1868
+ getState(key: string): AsyncState<T, E> | undefined;
1869
+ /**
1870
+ * Revalidates the key.
1871
+ *
1872
+ * @param key The key to revalidate.
1873
+ */
1874
+ revalidate(key: string): Promise<AsyncStateResolved<T, E>>;
1875
+ /**
1876
+ * Subscribes to the key's changes.
1877
+ *
1878
+ * @param key The key to subscribe to.
1879
+ * @param callback The function invoked on every change.
1880
+ */
1881
+ subscribe(key: string, callback: Callback<AsyncState<T, E>>): UnsubscribeCallback;
1882
+ /**
1883
+ * Subscribes to the key's changes once.
1884
+ *
1885
+ * @param key The key to subscribe to.
1886
+ * @param callback The function invoked on every change.
1887
+ */
1888
+ subscribeOnce(key: string, callback: Callback<AsyncState<T, E>>): UnsubscribeCallback;
1889
+ /**
1890
+ * Returns whether a key already exists in the cache.
1891
+ *
1892
+ * @param key The key to look for.
1893
+ */
1894
+ has(key: string): boolean;
1895
+ /**
1896
+ * Clears all keys.
1897
+ */
1898
+ clear(): void;
1899
+ };
1900
+ declare function createAsyncCache<T, E>(asyncFunction: AsyncFunction<T, [string]>, options?: AsyncCacheOptions<T, E>): AsyncCache<T, E>;
1901
+
1572
1902
  /**
1573
1903
  * Displays a deprecation warning in the dev console. Only in dev mode, and
1574
1904
  * only once per message/key. In production, this is a no-op.
@@ -1595,12 +1925,39 @@ declare function throwUsageError(message: string): void;
1595
1925
  */
1596
1926
  declare function errorIf(condition: unknown, message: string): void;
1597
1927
 
1928
+ declare const warn: (message: string, ...args: readonly unknown[]) => void;
1929
+ declare const error: (message: string, ...args: readonly unknown[]) => void;
1930
+ declare const warnWithTitle: (title: string, message: string, ...args: readonly unknown[]) => void;
1931
+ declare const errorWithTitle: (title: string, message: string, ...args: readonly unknown[]) => void;
1932
+
1933
+ declare const fancyConsole_error: typeof error;
1934
+ declare const fancyConsole_errorWithTitle: typeof errorWithTitle;
1935
+ declare const fancyConsole_warn: typeof warn;
1936
+ declare const fancyConsole_warnWithTitle: typeof warnWithTitle;
1937
+ declare namespace fancyConsole {
1938
+ export {
1939
+ fancyConsole_error as error,
1940
+ fancyConsole_errorWithTitle as errorWithTitle,
1941
+ fancyConsole_warn as warn,
1942
+ fancyConsole_warnWithTitle as warnWithTitle,
1943
+ };
1944
+ }
1945
+
1598
1946
  /**
1599
1947
  * Freezes the given argument, but only in development builds. In production
1600
1948
  * builds, this is a no-op for performance reasons.
1601
1949
  */
1602
1950
  declare const freeze: typeof Object.freeze;
1603
1951
 
1952
+ declare type Poller = {
1953
+ start(interval: number): void;
1954
+ restart(interval: number): void;
1955
+ pause(): void;
1956
+ resume(): void;
1957
+ stop(): void;
1958
+ };
1959
+ declare function makePoller(callback: () => void): Poller;
1960
+
1604
1961
  declare const brand: unique symbol;
1605
1962
  declare type Brand<T, TBrand extends string> = T & {
1606
1963
  [brand]: TBrand;
@@ -1800,15 +2157,15 @@ declare type TreeNode = LsonTreeNode | UserTreeNode;
1800
2157
  type DevToolsTreeNode_JsonTreeNode = JsonTreeNode;
1801
2158
  type DevToolsTreeNode_LiveTreeNode<TName extends `Live${string}` = `Live${string}`> = LiveTreeNode<TName>;
1802
2159
  type DevToolsTreeNode_LsonTreeNode = LsonTreeNode;
1803
- type DevToolsTreeNode_UserTreeNode = UserTreeNode;
1804
2160
  type DevToolsTreeNode_TreeNode = TreeNode;
2161
+ type DevToolsTreeNode_UserTreeNode = UserTreeNode;
1805
2162
  declare namespace DevToolsTreeNode {
1806
2163
  export {
1807
2164
  DevToolsTreeNode_JsonTreeNode as JsonTreeNode,
1808
2165
  DevToolsTreeNode_LiveTreeNode as LiveTreeNode,
1809
2166
  DevToolsTreeNode_LsonTreeNode as LsonTreeNode,
1810
- DevToolsTreeNode_UserTreeNode as UserTreeNode,
1811
2167
  DevToolsTreeNode_TreeNode as TreeNode,
2168
+ DevToolsTreeNode_UserTreeNode as UserTreeNode,
1812
2169
  };
1813
2170
  }
1814
2171
 
@@ -1908,16 +2265,16 @@ declare type FullClientToPanelMessage = ClientToPanelMessage & {
1908
2265
  source: "liveblocks-devtools-client";
1909
2266
  };
1910
2267
 
1911
- type protocol_PanelToClientMessage = PanelToClientMessage;
1912
2268
  type protocol_ClientToPanelMessage = ClientToPanelMessage;
1913
- type protocol_FullPanelToClientMessage = FullPanelToClientMessage;
1914
2269
  type protocol_FullClientToPanelMessage = FullClientToPanelMessage;
2270
+ type protocol_FullPanelToClientMessage = FullPanelToClientMessage;
2271
+ type protocol_PanelToClientMessage = PanelToClientMessage;
1915
2272
  declare namespace protocol {
1916
2273
  export {
1917
- protocol_PanelToClientMessage as PanelToClientMessage,
1918
2274
  protocol_ClientToPanelMessage as ClientToPanelMessage,
1919
- protocol_FullPanelToClientMessage as FullPanelToClientMessage,
1920
2275
  protocol_FullClientToPanelMessage as FullClientToPanelMessage,
2276
+ protocol_FullPanelToClientMessage as FullPanelToClientMessage,
2277
+ protocol_PanelToClientMessage as PanelToClientMessage,
1921
2278
  };
1922
2279
  }
1923
2280
 
@@ -1933,4 +2290,4 @@ declare type EnsureJson<T> = [
1933
2290
  [K in keyof T]: EnsureJson<T[K]>;
1934
2291
  };
1935
2292
 
1936
- export { AckOp, BaseAuthResult, BaseUserMeta, BroadcastEventClientMsg, BroadcastOptions, BroadcastedEventServerMsg, Client, ClientMsg, ClientMsgCode, CrdtType, CreateChildOp, CreateListOp, CreateMapOp, CreateObjectOp, CreateOp, CreateRegisterOp, CreateRootObjectOp, CustomAuthenticationResult, Delegates, DeleteCrdtOp, DeleteObjectKeyOp, DevToolsTreeNode as DevTools, protocol as DevToolsMsg, EnsureJson, FetchStorageClientMsg, FetchYDocClientMsg, History, IWebSocket, IWebSocketCloseEvent, IWebSocketEvent, IWebSocketInstance, IWebSocketMessageEvent, IdTuple, Immutable, InitialDocumentStateServerMsg, Json, JsonArray, JsonObject, JsonScalar, LegacyConnectionStatus, LiveList, LiveListUpdate, LiveMap, LiveMapUpdate, LiveNode, LiveObject, LiveObjectUpdate, LiveStructure, LostConnectionEvent, Lson, LsonObject, NodeMap, Op, OpCode, Others, ParentToChildNodeMap, PlainLson, PlainLsonFields, PlainLsonList, PlainLsonMap, PlainLsonObject, RejectedStorageOpServerMsg, Resolve, Room, RoomInitializers, RoomStateServerMsg, SerializedChild, SerializedCrdt, SerializedList, SerializedMap, SerializedObject, SerializedRegister, SerializedRootObject, ServerMsg, ServerMsgCode, SetParentKeyOp, Status, StorageStatus, StorageUpdate, ToImmutable, ToJson, UpdateObjectOp, UpdatePresenceClientMsg, UpdatePresenceServerMsg, UpdateStorageClientMsg, UpdateStorageServerMsg, UpdateYDocClientMsg, User, UserJoinServerMsg, UserLeftServerMsg, WebsocketCloseCodes, asArrayWithLegacyMethods, asPos, assert, assertNever, b64decode, createClient, deprecate, deprecateIf, detectDupes, errorIf, freeze, isChildCrdt, isJsonArray, isJsonObject, isJsonScalar, isPlainObject, isRootCrdt, legacy_patchImmutableObject, lsonToJson, makePosition, nn, patchLiveObjectKey, shallow, throwUsageError, toPlainLson, tryParseJson, withTimeout };
2293
+ export { AckOp, AsyncCache, AsyncState, AsyncStateError, AsyncStateInitial, AsyncStateLoading, AsyncStateResolved, AsyncStateSuccess, BaseAuthResult, BaseMetadata, BaseUserMeta, BroadcastEventClientMsg, BroadcastOptions, BroadcastedEventServerMsg, Client, ClientMsg, ClientMsgCode, CommentBody, CommentBodyElement, CommentBodyMention, CommentBodyParagraph, CommentData, CommentsApi, CrdtType, CreateChildOp, CreateListOp, CreateMapOp, CreateObjectOp, CreateOp, CreateRegisterOp, CreateRootObjectOp, CustomAuthenticationResult, Delegates, DeleteCrdtOp, DeleteObjectKeyOp, DevToolsTreeNode as DevTools, protocol as DevToolsMsg, EnsureJson, EventSource, FetchStorageClientMsg, FetchYDocClientMsg, History, IWebSocket, IWebSocketCloseEvent, IWebSocketEvent, IWebSocketInstance, IWebSocketMessageEvent, IdTuple, Immutable, InitialDocumentStateServerMsg, Json, JsonArray, JsonObject, JsonScalar, LegacyConnectionStatus, LiveList, LiveListUpdate, LiveMap, LiveMapUpdate, LiveNode, LiveObject, LiveObjectUpdate, LiveStructure, LostConnectionEvent, Lson, LsonObject, NodeMap, Op, OpCode, Others, ParentToChildNodeMap, PlainLson, PlainLsonFields, PlainLsonList, PlainLsonMap, PlainLsonObject, RejectedStorageOpServerMsg, Resolve, Room, RoomInitializers, RoomStateServerMsg, SerializedChild, SerializedCrdt, SerializedList, SerializedMap, SerializedObject, SerializedRegister, SerializedRootObject, ServerMsg, ServerMsgCode, SetParentKeyOp, Status, StorageStatus, StorageUpdate, ThreadData, ToImmutable, ToJson, UnsubscribeCallback, UpdateObjectOp, UpdatePresenceClientMsg, UpdatePresenceServerMsg, UpdateStorageClientMsg, UpdateStorageServerMsg, UpdateYDocClientMsg, User, UserJoinServerMsg, UserLeftServerMsg, WebsocketCloseCodes, asArrayWithLegacyMethods, asPos, assert, assertNever, b64decode, fancyConsole as console, createAsyncCache, createClient, createCommentsApi, deprecate, deprecateIf, detectDupes, errorIf, freeze, isChildCrdt, isJsonArray, isJsonObject, isJsonScalar, isPlainObject, isRootCrdt, legacy_patchImmutableObject, lsonToJson, makeEventSource, makePoller, makePosition, nn, patchLiveObjectKey, shallow, throwUsageError, toPlainLson, tryParseJson, withTimeout };