change sessionIdGenerator to be either undefined or generate a string

This commit is contained in:
ihrpr 2025-04-17 18:22:11 +01:00
commit f10d1ff93f
No known key found for this signature in database
2 changed files with 14 additions and 14 deletions

View file

@ -10,7 +10,7 @@ import { z } from "zod";
* Test server configuration for StreamableHTTPServerTransport tests
*/
interface TestServerConfig {
sessionIdGenerator?: () => string | undefined;
sessionIdGenerator: (() => string) | undefined;
enableJsonResponse?: boolean;
customRequestHandler?: (req: IncomingMessage, res: ServerResponse, parsedBody?: unknown) => Promise<void>;
eventStore?: EventStore;
@ -19,7 +19,7 @@ interface TestServerConfig {
/**
* Helper to create and start test HTTP server with MCP setup
*/
async function createTestServer(config: TestServerConfig = {}): Promise<{
async function createTestServer(config: TestServerConfig = { sessionIdGenerator: (() => randomUUID()) }): Promise<{
server: Server;
transport: StreamableHTTPServerTransport;
mcpServer: McpServer;
@ -40,7 +40,7 @@ async function createTestServer(config: TestServerConfig = {}): Promise<{
);
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: config.sessionIdGenerator ?? (() => randomUUID()),
sessionIdGenerator: config.sessionIdGenerator,
enableJsonResponse: config.enableJsonResponse ?? false,
eventStore: config.eventStore
});
@ -681,7 +681,7 @@ describe("StreamableHTTPServerTransport with JSON Response Mode", () => {
let sessionId: string;
beforeEach(async () => {
const result = await createTestServer({ enableJsonResponse: true });
const result = await createTestServer({ sessionIdGenerator: (() => randomUUID()), enableJsonResponse: true });
server = result.server;
transport = result.transport;
baseUrl = result.baseUrl;
@ -784,7 +784,8 @@ describe("StreamableHTTPServerTransport with pre-parsed body", () => {
console.error("Error handling request:", error);
if (!res.headersSent) res.writeHead(500).end();
}
}
},
sessionIdGenerator: (() => randomUUID())
});
server = result.server;
@ -1063,7 +1064,7 @@ describe("StreamableHTTPServerTransport in stateless mode", () => {
let baseUrl: URL;
beforeEach(async () => {
const result = await createTestServer({ sessionIdGenerator: () => undefined });
const result = await createTestServer({ sessionIdGenerator: undefined });
server = result.server;
transport = result.transport;
baseUrl = result.baseUrl;

View file

@ -37,7 +37,7 @@ export interface StreamableHTTPServerTransportOptions {
*
* Return undefined to disable session management.
*/
sessionIdGenerator: () => string | undefined;
sessionIdGenerator: (() => string) | undefined;
/**
* A callback for session initialization events
@ -98,7 +98,7 @@ export interface StreamableHTTPServerTransportOptions {
*/
export class StreamableHTTPServerTransport implements Transport {
// when sessionId is not set (undefined), it means the transport is in stateless mode
private sessionIdGenerator: () => string | undefined;
private sessionIdGenerator: (() => string) | undefined;
private _started: boolean = false;
private _streamMapping: Map<string, ServerResponse> = new Map();
private _requestToStreamMapping: Map<RequestId, string> = new Map();
@ -365,7 +365,7 @@ export class StreamableHTTPServerTransport implements Transport {
}));
return;
}
this.sessionId = this.sessionIdGenerator();
this.sessionId = this.sessionIdGenerator?.();
this._initialized = true;
// If we have a session ID and an onsessioninitialized handler, call it immediately