Skip to content

Commit c828067

Browse files
committed
Use eventsource package
1 parent cf4c592 commit c828067

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

package-lock.json

Lines changed: 20 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
},
4848
"dependencies": {
4949
"content-type": "^1.0.5",
50+
"eventsource": "^3.0.2",
5051
"raw-body": "^3.0.0",
5152
"zod": "^3.23.8",
5253
"zod-to-json-schema": "^3.24.1"
@@ -61,7 +62,6 @@
6162
"@types/node": "^22.0.2",
6263
"@types/ws": "^8.5.12",
6364
"eslint": "^9.8.0",
64-
"eventsource": "^2.0.2",
6565
"express": "^4.19.2",
6666
"jest": "^29.7.0",
6767
"ts-jest": "^29.2.4",

src/cli.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import EventSource from "eventsource";
21
import WebSocket from "ws";
32

4-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
5-
(global as any).EventSource = EventSource;
63
// eslint-disable-next-line @typescript-eslint/no-explicit-any
74
(global as any).WebSocket = WebSocket;
85

src/client/sse.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { Transport } from "../shared/transport.js";
22
import { JSONRPCMessage, JSONRPCMessageSchema } from "../types.js";
3+
import { EventSource, type EventSourceInit } from "eventsource";
34

45
/**
56
* Client transport for SSE: this will connect to a server using Server-Sent Events for receiving
67
* messages and make separate POST requests for sending messages.
7-
*
8-
* This uses the EventSource API in browsers. You can install the `eventsource` package for Node.js.
98
*/
109
export class SSEClientTransport implements Transport {
1110
private _eventSource?: EventSource;
@@ -19,7 +18,10 @@ export class SSEClientTransport implements Transport {
1918
onerror?: (error: Error) => void;
2019
onmessage?: (message: JSONRPCMessage) => void;
2120

22-
constructor(url: URL, opts?: { eventSourceInit?: EventSourceInit, requestInit?: RequestInit }) {
21+
constructor(
22+
url: URL,
23+
opts?: { eventSourceInit?: EventSourceInit; requestInit?: RequestInit },
24+
) {
2325
this._url = url;
2426
this._eventSourceInit = opts?.eventSourceInit;
2527
this._requestInit = opts?.requestInit;
@@ -33,7 +35,10 @@ export class SSEClientTransport implements Transport {
3335
}
3436

3537
return new Promise((resolve, reject) => {
36-
this._eventSource = new EventSource(this._url.href, this._eventSourceInit);
38+
this._eventSource = new EventSource(
39+
this._url.href,
40+
this._eventSourceInit,
41+
);
3742
this._abortController = new AbortController();
3843

3944
this._eventSource.onerror = (event) => {
@@ -101,7 +106,7 @@ export class SSEClientTransport implements Transport {
101106
method: "POST",
102107
headers,
103108
body: JSON.stringify(message),
104-
signal: this._abortController?.signal
109+
signal: this._abortController?.signal,
105110
};
106111

107112
const response = await fetch(this._endpoint, init);

0 commit comments

Comments
 (0)