77from .websockets import YRoomWebsocket
88from .rooms .yroom_manager import YRoomManager
99from .outputs import OutputsManager , outputs_handlers
10+ from .events import JSD_AWARENESS_EVENT_SCHEMA , JSD_ROOM_EVENT_SCHEMA
11+ from .jcollab_api import JCollabAPI
1012
1113class ServerDocsApp (ExtensionApp ):
1214 name = "jupyter_server_documents"
@@ -51,6 +53,10 @@ def initialize(self):
5153 super ().initialize ()
5254
5355 def initialize_settings (self ):
56+ # Register event schemas
57+ self .serverapp .event_logger .register_event_schema (JSD_ROOM_EVENT_SCHEMA )
58+ self .serverapp .event_logger .register_event_schema (JSD_AWARENESS_EVENT_SCHEMA )
59+
5460 # Get YRoomManager arguments from server extension context.
5561 # We cannot access the 'file_id_manager' key immediately because server
5662 # extensions initialize in alphabetical order. 'jupyter_server_documents' <
@@ -65,13 +71,22 @@ def get_fileid_manager():
6571 self .settings ["yroom_manager" ] = YRoomManager (
6672 get_fileid_manager = get_fileid_manager ,
6773 contents_manager = contents_manager ,
74+ event_logger = self .serverapp .event_logger ,
6875 loop = loop ,
6976 log = log
7077 )
71-
78+
7279 # Initialize OutputsManager
7380 self .outputs_manager = self .outputs_manager_class (config = self .config )
7481 self .settings ["outputs_manager" ] = self .outputs_manager
82+
83+ # Serve Jupyter Collaboration API on
84+ # `self.settings["jupyter_server_ydoc"]` for compatibility with
85+ # extensions depending on Jupyter Collaboration
86+ self .settings ["jupyter_server_ydoc" ] = JCollabAPI (
87+ get_fileid_manager = get_fileid_manager ,
88+ yroom_manager = self .settings ["yroom_manager" ]
89+ )
7590
7691 def _link_jupyter_server_extension (self , server_app ):
7792 """Setup custom config needed by this extension."""
0 commit comments