@frontmcp/testing 1.7.2 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/setup.js CHANGED
@@ -368,18 +368,17 @@ var toBeError = function(received, expectedCode) {
368
368
  message: () => `Expected a result wrapper object with isError property`
369
369
  };
370
370
  }
371
- let pass = result.isError;
372
- if (pass && expectedCode !== void 0) {
373
- pass = result.error?.code === expectedCode;
374
- }
371
+ const receivedCode = typeof expectedCode === "string" ? result.raw?._meta?.["code"] : result.error?.code;
372
+ const codeMatches = expectedCode === void 0 || receivedCode === expectedCode;
373
+ const pass = result.isError && codeMatches;
375
374
  return {
376
375
  pass,
377
376
  message: () => {
378
377
  if (!result.isError) {
379
378
  return "Expected result to be an error, but it was successful";
380
379
  }
381
- if (expectedCode !== void 0 && result.error?.code !== expectedCode) {
382
- return `Expected error code ${expectedCode}, but got ${result.error?.code}`;
380
+ if (!codeMatches) {
381
+ return `Expected error code ${expectedCode}, but got ${String(receivedCode)}`;
383
382
  }
384
383
  return "Expected result not to be an error";
385
384
  }
@@ -2,6 +2,6 @@
2
2
  * @file transport/index.ts
3
3
  * @description Transport layer exports
4
4
  */
5
- export type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse, } from './transport.interface';
5
+ export type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse, NotificationHandler, } from './transport.interface';
6
6
  export { StreamableHttpTransport } from './streamable-http.transport';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -2,9 +2,9 @@
2
2
  * @file streamable-http.transport.ts
3
3
  * @description StreamableHTTP transport implementation for MCP Test Client
4
4
  */
5
- import type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse } from './transport.interface';
6
- import type { InterceptorChain } from '../interceptor';
7
5
  import type { ElicitationHandler } from '../client/mcp-test-client.types';
6
+ import type { InterceptorChain } from '../interceptor';
7
+ import type { JsonRpcRequest, JsonRpcResponse, McpTransport, TransportConfig, TransportState } from './transport.interface';
8
8
  /**
9
9
  * StreamableHTTP transport for MCP communication
10
10
  *
@@ -22,6 +22,10 @@ export declare class StreamableHttpTransport implements McpTransport {
22
22
  private interceptors?;
23
23
  private readonly publicMode;
24
24
  private elicitationHandler?;
25
+ private readonly notificationHandler?;
26
+ private notificationStream?;
27
+ private notificationProtocolVersion;
28
+ private notificationStreamReopenTimer?;
25
29
  constructor(config: TransportConfig);
26
30
  connect(): Promise<void>;
27
31
  /**
@@ -34,6 +38,7 @@ export declare class StreamableHttpTransport implements McpTransport {
34
38
  }>;
35
39
  notify(message: JsonRpcRequest): Promise<void>;
36
40
  sendRaw(data: string): Promise<JsonRpcResponse>;
41
+ openNotificationStream(protocolVersion: string): Promise<void>;
37
42
  close(): Promise<void>;
38
43
  isConnected(): boolean;
39
44
  getState(): TransportState;
@@ -48,6 +53,11 @@ export declare class StreamableHttpTransport implements McpTransport {
48
53
  getLastRequestHeaders(): Record<string, string>;
49
54
  simulateDisconnect(): Promise<void>;
50
55
  waitForReconnect(timeoutMs: number): Promise<void>;
56
+ private closeNotificationStream;
57
+ /** Opens the stream without holding up the caller past the request timeout; close() aborts it at any point. */
58
+ private connectNotificationStream;
59
+ private releaseNotificationStream;
60
+ private readNotificationStream;
51
61
  /**
52
62
  * Handle SSE response with elicitation support.
53
63
  *
@@ -71,6 +81,12 @@ export declare class StreamableHttpTransport implements McpTransport {
71
81
  * Send an elicitation response back to the server
72
82
  */
73
83
  private sendElicitationResponse;
84
+ /**
85
+ * The MCP endpoint URL. `entryPath` is where the server mounts MCP; the
86
+ * trailing slash is kept because both hosts normalize it and the original
87
+ * behaviour (`${baseUrl}/`) relied on it (issue #543).
88
+ */
89
+ private mcpUrl;
74
90
  private buildHeaders;
75
91
  private ensureConnected;
76
92
  private log;
@@ -1 +1 @@
1
- {"version":3,"file":"streamable-http.transport.d.ts","sourceRoot":"","sources":["../../src/transport/streamable-http.transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAc,kBAAkB,EAA4B,MAAM,iCAAiC,CAAC;AAIhH;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGrB;IACF,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;gBAEpC,MAAM,EAAE,eAAe;IAiB7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B;;;OAGG;YACW,qBAAqB;IAqC7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;IA8HxF,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmD/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI,cAAc;IAI1B,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAIrD,eAAe,IAAI,gBAAgB,GAAG,SAAS;IAI/C,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI;IAIpE,kBAAkB,IAAI,MAAM;IAI5B,iBAAiB,IAAI,MAAM;IAI3B,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD;;;;;OAKG;YACW,gCAAgC;IA+F9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAiDtB;;OAEG;YACW,cAAc;IAuC5B;;OAEG;YACW,wBAAwB;IAqCtC;;OAEG;YACW,uBAAuB;IA8BrC,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,GAAG;IAMX;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,2BAA2B;CAsDpC"}
1
+ {"version":3,"file":"streamable-http.transport.d.ts","sourceRoot":"","sources":["../../src/transport/streamable-http.transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAwC,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EAEZ,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAK/B;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;IACF,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAsB;IAC3D,OAAO,CAAC,kBAAkB,CAAC,CAAkB;IAC7C,OAAO,CAAC,2BAA2B,CAAM;IACzC,OAAO,CAAC,6BAA6B,CAAC,CAAgC;gBAE1D,MAAM,EAAE,eAAe;IAmB7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B;;;OAGG;YACW,qBAAqB;IAqC7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;IA8HxF,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmD/C,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI,cAAc;IAI1B,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAIrD,eAAe,IAAI,gBAAgB,GAAG,SAAS;IAI/C,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI;IAIpE,kBAAkB,IAAI,MAAM;IAI5B,iBAAiB,IAAI,MAAM;IAI3B,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,OAAO,CAAC,uBAAuB;IAM/B,+GAA+G;YACjG,yBAAyB;IAiCvC,OAAO,CAAC,yBAAyB;YAInB,sBAAsB;IA6BpC;;;;;OAKG;YACW,gCAAgC;IA+F9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAiDtB;;OAEG;YACW,cAAc;IA+C5B;;OAEG;YACW,wBAAwB;IAqCtC;;OAEG;YACW,uBAAuB;IA8BrC;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,GAAG;IAMX;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,2BAA2B;CAsDpC"}
@@ -20,6 +20,7 @@ export interface JsonRpcResponse {
20
20
  };
21
21
  }
22
22
  export type TransportState = 'disconnected' | 'connecting' | 'connected' | 'error';
23
+ export type NotificationHandler = (notification: JsonRpcRequest) => void;
23
24
  /**
24
25
  * Interface that all MCP transports must implement
25
26
  */
@@ -104,13 +105,26 @@ export interface McpTransport {
104
105
  * this handler is called to provide the user's response.
105
106
  */
106
107
  setElicitationHandler?(handler: ElicitationHandler | undefined): void;
108
+ /**
109
+ * Open the session's standalone GET stream, where the server sends
110
+ * notifications that are not tied to a request's own response.
111
+ * @param protocolVersion - The version negotiated at initialize, sent as `MCP-Protocol-Version`
112
+ */
113
+ openNotificationStream?(protocolVersion: string): Promise<void>;
107
114
  }
108
115
  /**
109
116
  * Configuration for transport implementations
110
117
  */
111
118
  export interface TransportConfig {
112
- /** Base URL of the MCP server */
119
+ /** Base URL of the MCP server (its root, not the MCP endpoint). */
113
120
  baseUrl: string;
121
+ /**
122
+ * The server's `http.entryPath` — the path MCP itself is mounted at
123
+ * (`''` / `/` for the root, `/mcp`, …). Applied to the MCP endpoint only;
124
+ * OAuth and discovery endpoints stay at the server root, which is where the
125
+ * server mounts them (issue #543).
126
+ */
127
+ entryPath?: string;
114
128
  /** Request timeout in milliseconds */
115
129
  timeout?: number;
116
130
  /** Authentication configuration */
@@ -132,5 +146,7 @@ export interface TransportConfig {
132
146
  clientInfo?: ClientInfo;
133
147
  /** Handler for server→client elicitation requests during tool execution */
134
148
  elicitationHandler?: ElicitationHandler;
149
+ /** Handler for server notifications streamed during a request */
150
+ notificationHandler?: NotificationHandler;
135
151
  }
136
152
  //# sourceMappingURL=transport.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../src/transport/transport.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../src/transport/transport.interface.ts"],"names":[],"mappings":"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"}