From 794ce47d026a88ec9daa3f6a8c13a594237af45a Mon Sep 17 00:00:00 2001 From: Saatvik Arya Date: Sat, 18 Oct 2025 12:06:28 +0530 Subject: [PATCH] fix(y-partyserver): make onMessage overridable via super Refactors YServer.onMessage from a class field to a proper method, enabling subclasses to override it and call super.onMessage(). Previously, onMessage was assigned as a class field (onMessage = handleChunked(...)), which prevented proper inheritance - super.onMessage was undefined because class fields don't exist on the prototype chain. This change allows users to extend YServer and handle custom string messages alongside the default binary Yjs protocol messages. Example usage: ```typescript class MyYServer extends YServer { onMessage(conn, message) { if (typeof message === "string") { // Handle custom JSON messages return; } super.onMessage(conn, message); // Now works! } } ``` --- packages/y-partyserver/src/server/index.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/y-partyserver/src/server/index.ts b/packages/y-partyserver/src/server/index.ts index e7d1309..ada5904 100644 --- a/packages/y-partyserver/src/server/index.ts +++ b/packages/y-partyserver/src/server/index.ts @@ -335,10 +335,14 @@ export class YServer extends Server { } } - onMessage = handleChunked((conn, message) => + private handleChunkedMessage = handleChunked((conn, message) => this.handleMessage(conn, message) ); + onMessage(conn: Connection, message: WSMessage): void { + this.handleChunkedMessage(conn, message); + } + onClose( connection: Connection, _code: number,