Initial commit

This commit is contained in:
2025-08-16 16:11:33 +10:00
commit 91df32c786
39 changed files with 6284 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import { SSESession } from '../utils/sse-session.js';
import { BaseTransport } from './base-transport.js';
export class TransportSSE extends BaseTransport {
static async from(url: string) {
const session = await SSESession.from(url);
return new TransportSSE(session);
}
static fromSSESession(session: SSESession) {
return new TransportSSE(session);
}
constructor(private readonly session: SSESession) {
super();
console.log('created transport sse');
this.session.on('message', (message) => this.emit('message', message));
this.session.on('connected', () => this.emit('connected', true));
this.session.on('disconnected', () => this.emit('disconnected', true));
}
/**
* Send fetch request to the url, ignoring SSE client as it's not needed for this transport
* @param url - The URL to send the message to
* @param body - The body to send
*/
async send(url: string, body: unknown): Promise<unknown> {
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(body),
});
return response.json();
}
/**
* Connect the SSE session
*/
async connect(): Promise<void> {
await this.session.connect();
}
/**
* Disconnect the SSE session
*/
async disconnect(): Promise<void> {
this.session.close();
}
}