File tree Expand file tree Collapse file tree 5 files changed +11
-28
lines changed Expand file tree Collapse file tree 5 files changed +11
-28
lines changed Original file line number Diff line number Diff line change 1
- import { validateMessage } from "../shared/message.js" ;
2
1
import { Transport } from "../shared/transport.js" ;
3
- import { JSONRPCMessage } from "../types.js" ;
2
+ import { JSONRPCMessage , JSONRPCMessageSchema } from "../types.js" ;
4
3
5
4
/**
6
5
* Client transport for SSE: this will connect to a server using Server-Sent Events for receiving
@@ -57,8 +56,7 @@ export class SSEClientTransport implements Transport {
57
56
const messageEvent = event as MessageEvent ;
58
57
let message : JSONRPCMessage ;
59
58
try {
60
- message = JSON . parse ( messageEvent . data ) ;
61
- validateMessage ( message ) ;
59
+ message = JSONRPCMessageSchema . parse ( JSON . parse ( messageEvent . data ) ) ;
62
60
} catch ( error ) {
63
61
this . onerror ?.( error as Error ) ;
64
62
return ;
Original file line number Diff line number Diff line change 1
- import { validateMessage } from "../shared/message.js" ;
2
1
import { Transport } from "../shared/transport.js" ;
3
- import { JSONRPCMessage } from "../types.js" ;
2
+ import { JSONRPCMessage , JSONRPCMessageSchema } from "../types.js" ;
4
3
5
4
const SUBPROTOCOL = "mcp" ;
6
5
@@ -38,8 +37,7 @@ export class WebSocketClientTransport implements Transport {
38
37
this . _socket . onmessage = ( event : MessageEvent ) => {
39
38
let message : JSONRPCMessage ;
40
39
try {
41
- message = JSON . parse ( event . data ) ;
42
- validateMessage ( message ) ;
40
+ message = JSONRPCMessageSchema . parse ( JSON . parse ( event . data ) ) ;
43
41
} catch ( error ) {
44
42
this . onerror ?.( error as Error ) ;
45
43
return ;
Original file line number Diff line number Diff line change 1
1
import { randomUUID } from "node:crypto" ;
2
2
import { IncomingMessage , ServerResponse } from "node:http" ;
3
- import { validateMessage } from "../shared/message.js" ;
4
3
import { Transport } from "../shared/transport.js" ;
5
- import { JSONRPCMessage } from "../types.js" ;
4
+ import { JSONRPCMessage , JSONRPCMessageSchema } from "../types.js" ;
6
5
import getRawBody from "raw-body" ;
7
6
import contentType from "content-type" ;
8
7
@@ -101,15 +100,16 @@ export class SSEServerTransport implements Transport {
101
100
/**
102
101
* Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.
103
102
*/
104
- async handleMessage ( message : JSONRPCMessage ) : Promise < void > {
103
+ async handleMessage ( message : unknown ) : Promise < void > {
104
+ let parsedMessage : JSONRPCMessage ;
105
105
try {
106
- validateMessage ( message ) ;
106
+ parsedMessage = JSONRPCMessageSchema . parse ( message ) ;
107
107
} catch ( error ) {
108
108
this . onerror ?.( error as Error ) ;
109
109
throw error ;
110
110
}
111
111
112
- this . onmessage ?.( message ) ;
112
+ this . onmessage ?.( parsedMessage ) ;
113
113
}
114
114
115
115
async close ( ) : Promise < void > {
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1
- import { JSONRPCMessage } from "../types.js" ;
2
- import { validateMessage } from "./message.js" ;
1
+ import { JSONRPCMessage , JSONRPCMessageSchema } from "../types.js" ;
3
2
4
3
/**
5
4
* Buffers a continuous stdio stream into discrete JSON-RPC messages.
@@ -32,9 +31,7 @@ export class ReadBuffer {
32
31
}
33
32
34
33
export function deserializeMessage ( line : string ) : JSONRPCMessage {
35
- const message = JSON . parse ( line ) as JSONRPCMessage ;
36
- validateMessage ( message ) ;
37
- return message ;
34
+ return JSONRPCMessageSchema . parse ( JSON . parse ( line ) ) ;
38
35
}
39
36
40
37
export function serializeMessage ( message : JSONRPCMessage ) : string {
You can’t perform that action at this time.
0 commit comments