File tree Expand file tree Collapse file tree 2 files changed +11
-4
lines changed
Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Original file line number Diff line number Diff line change 1+ import { ZodError } from 'zod/v4' ;
12import { JSONRPCMessage } from '../types.js' ;
23import { ReadBuffer } from './stdio.js' ;
34
@@ -34,9 +35,16 @@ test('should be reusable after clearing', () => {
3435 expect ( readBuffer . readMessage ( ) ) . toEqual ( testMessage ) ;
3536} ) ;
3637
37- test ( 'should override invalid messages and return null' , ( ) => {
38+ test ( 'should override invalid json message and return null' , ( ) => {
3839 const readBuffer = new ReadBuffer ( ) ;
3940
4041 readBuffer . append ( Buffer . from ( 'invalid message\n' ) ) ;
4142 expect ( readBuffer . readMessage ( ) ) . toBeNull ( ) ;
4243} ) ;
44+
45+ test ( 'should throw validation error on invalid JSON-RPC message' , ( ) => {
46+ const readBuffer = new ReadBuffer ( ) ;
47+ const invalidJsonRpcMessage = '{"jsonrpc":"2.0","method":123}\n' ;
48+ readBuffer . append ( Buffer . from ( invalidJsonRpcMessage ) ) ;
49+ expect ( ( ) => readBuffer . readMessage ( ) ) . toThrowError ( ZodError ) ;
50+ } ) ;
Original file line number Diff line number Diff line change 1- import { ZodError } from 'zod' ;
21import { JSONRPCMessage , JSONRPCMessageSchema } from '../types.js' ;
32
43/**
@@ -35,8 +34,8 @@ export function deserializeMessage(line: string): JSONRPCMessage | null {
3534 try {
3635 return JSONRPCMessageSchema . parse ( JSON . parse ( line ) ) ;
3736 } catch ( error : unknown ) {
38- // When Non JSONRPC message is received (parsing error or schema validation error), return null
39- if ( error instanceof ZodError || error instanceof SyntaxError ) {
37+ // When non-JSON messages are received, we simply ignore them.
38+ if ( error instanceof SyntaxError ) {
4039 return null ;
4140 }
4241 throw error ;
You can’t perform that action at this time.
0 commit comments