refactor: reimplement realtime-communication

This commit refactors a lot of things that are not easy to separate.
It replaces the binary protocol of y-protocols with json.
It introduces event based message processing.
It implements our own code mirror plugins for synchronisation of content and remote cursors

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-03-22 20:21:40 +01:00
parent 67cf1432b2
commit 3a06f84af1
110 changed files with 3920 additions and 2201 deletions

View file

@ -1,28 +1,14 @@
/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
* SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
export { MessageType } from './messages/message-type.enum.js'
export { ConnectionKeepAliveHandler } from './connection-keep-alive-handler.js'
export { YDocMessageTransporter } from './y-doc-message-transporter.js'
export {
applyAwarenessUpdateMessage,
encodeAwarenessUpdateMessage
} from './messages/awareness-update-message.js'
export {
applyDocumentUpdateMessage,
encodeDocumentUpdateMessage
} from './messages/document-update-message.js'
export { encodeCompleteAwarenessStateRequestMessage } from './messages/complete-awareness-state-request-message.js'
export { encodeCompleteDocumentStateRequestMessage } from './messages/complete-document-state-request-message.js'
export { encodeCompleteDocumentStateAnswerMessage } from './messages/complete-document-state-answer-message.js'
export { encodeDocumentDeletedMessage } from './messages/document-deleted-message.js'
export { encodeMetadataUpdatedMessage } from './messages/metadata-updated-message.js'
export { encodeServerVersionUpdatedMessage } from './messages/server-version-updated-message.js'
export { WebsocketTransporter } from './websocket-transporter.js'
export * from './message-transporters/mocked-backend-message-transporter.js'
export * from './message-transporters/message.js'
export * from './message-transporters/message-transporter.js'
export * from './message-transporters/realtime-user.js'
export * from './message-transporters/websocket-transporter.js'
export { parseUrl } from './utils/parse-url.js'
export {
@ -30,8 +16,10 @@ export {
WrongProtocolError
} from './utils/errors.js'
export type { MessageTransporterEvents } from './y-doc-message-transporter.js'
export * from './y-doc-sync/y-doc-sync-client-adapter.js'
export * from './y-doc-sync/y-doc-sync-server-adapter.js'
export * from './y-doc-sync/y-doc-sync-adapter.js'
export { waitForOtherPromisesToFinish } from './utils/wait-for-other-promises-to-finish.js'
export { MARKDOWN_CONTENT_CHANNEL_NAME } from './constants/markdown-content-channel-name.js'
export { RealtimeDoc } from './y-doc-sync/realtime-doc'