@modelcontextprotocol/sdk 1.0.3 → 1.1.0
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/README.md +8 -0
- package/dist/client/sse.d.ts +6 -1
- package/dist/client/sse.d.ts.map +1 -1
- package/dist/client/sse.js +14 -10
- package/dist/client/sse.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +3 -3
- package/dist/server/sse.js.map +1 -1
- package/dist/shared/protocol.js +2 -2
- package/dist/shared/protocol.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +14 -5
- package/dist/client/index.test.d.ts +0 -2
- package/dist/client/index.test.d.ts.map +0 -1
- package/dist/client/index.test.js +0 -393
- package/dist/client/index.test.js.map +0 -1
- package/dist/client/stdio.test.d.ts +0 -2
- package/dist/client/stdio.test.d.ts.map +0 -1
- package/dist/client/stdio.test.js +0 -51
- package/dist/client/stdio.test.js.map +0 -1
- package/dist/inMemory.test.d.ts +0 -2
- package/dist/inMemory.test.d.ts.map +0 -1
- package/dist/inMemory.test.js +0 -74
- package/dist/inMemory.test.js.map +0 -1
- package/dist/server/index.test.d.ts +0 -2
- package/dist/server/index.test.d.ts.map +0 -1
- package/dist/server/index.test.js +0 -408
- package/dist/server/index.test.js.map +0 -1
- package/dist/server/stdio.test.d.ts +0 -2
- package/dist/server/stdio.test.d.ts.map +0 -1
- package/dist/server/stdio.test.js +0 -87
- package/dist/server/stdio.test.js.map +0 -1
- package/dist/shared/stdio.test.d.ts +0 -2
- package/dist/shared/stdio.test.d.ts.map +0 -1
- package/dist/shared/stdio.test.js +0 -27
- package/dist/shared/stdio.test.js.map +0 -1
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
-
/* eslint-disable no-constant-binary-expression */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
|
4
|
-
import { Server } from "./index.js";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
import { RequestSchema, NotificationSchema, ResultSchema, LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, CreateMessageRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, SetLevelRequestSchema, ErrorCode, } from "../types.js";
|
|
7
|
-
import { InMemoryTransport } from "../inMemory.js";
|
|
8
|
-
import { Client } from "../client/index.js";
|
|
9
|
-
test("should accept latest protocol version", async () => {
|
|
10
|
-
var _a;
|
|
11
|
-
let sendPromiseResolve;
|
|
12
|
-
const sendPromise = new Promise((resolve) => {
|
|
13
|
-
sendPromiseResolve = resolve;
|
|
14
|
-
});
|
|
15
|
-
const serverTransport = {
|
|
16
|
-
start: jest.fn().mockResolvedValue(undefined),
|
|
17
|
-
close: jest.fn().mockResolvedValue(undefined),
|
|
18
|
-
send: jest.fn().mockImplementation((message) => {
|
|
19
|
-
if (message.id === 1 && message.result) {
|
|
20
|
-
expect(message.result).toEqual({
|
|
21
|
-
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
22
|
-
capabilities: expect.any(Object),
|
|
23
|
-
serverInfo: {
|
|
24
|
-
name: "test server",
|
|
25
|
-
version: "1.0",
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
sendPromiseResolve(undefined);
|
|
29
|
-
}
|
|
30
|
-
return Promise.resolve();
|
|
31
|
-
}),
|
|
32
|
-
};
|
|
33
|
-
const server = new Server({
|
|
34
|
-
name: "test server",
|
|
35
|
-
version: "1.0",
|
|
36
|
-
}, {
|
|
37
|
-
capabilities: {
|
|
38
|
-
prompts: {},
|
|
39
|
-
resources: {},
|
|
40
|
-
tools: {},
|
|
41
|
-
logging: {},
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
await server.connect(serverTransport);
|
|
45
|
-
// Simulate initialize request with latest version
|
|
46
|
-
(_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
|
|
47
|
-
jsonrpc: "2.0",
|
|
48
|
-
id: 1,
|
|
49
|
-
method: "initialize",
|
|
50
|
-
params: {
|
|
51
|
-
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
52
|
-
capabilities: {},
|
|
53
|
-
clientInfo: {
|
|
54
|
-
name: "test client",
|
|
55
|
-
version: "1.0",
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
await expect(sendPromise).resolves.toBeUndefined();
|
|
60
|
-
});
|
|
61
|
-
test("should accept supported older protocol version", async () => {
|
|
62
|
-
var _a;
|
|
63
|
-
const OLD_VERSION = SUPPORTED_PROTOCOL_VERSIONS[1];
|
|
64
|
-
let sendPromiseResolve;
|
|
65
|
-
const sendPromise = new Promise((resolve) => {
|
|
66
|
-
sendPromiseResolve = resolve;
|
|
67
|
-
});
|
|
68
|
-
const serverTransport = {
|
|
69
|
-
start: jest.fn().mockResolvedValue(undefined),
|
|
70
|
-
close: jest.fn().mockResolvedValue(undefined),
|
|
71
|
-
send: jest.fn().mockImplementation((message) => {
|
|
72
|
-
if (message.id === 1 && message.result) {
|
|
73
|
-
expect(message.result).toEqual({
|
|
74
|
-
protocolVersion: OLD_VERSION,
|
|
75
|
-
capabilities: expect.any(Object),
|
|
76
|
-
serverInfo: {
|
|
77
|
-
name: "test server",
|
|
78
|
-
version: "1.0",
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
sendPromiseResolve(undefined);
|
|
82
|
-
}
|
|
83
|
-
return Promise.resolve();
|
|
84
|
-
}),
|
|
85
|
-
};
|
|
86
|
-
const server = new Server({
|
|
87
|
-
name: "test server",
|
|
88
|
-
version: "1.0",
|
|
89
|
-
}, {
|
|
90
|
-
capabilities: {
|
|
91
|
-
prompts: {},
|
|
92
|
-
resources: {},
|
|
93
|
-
tools: {},
|
|
94
|
-
logging: {},
|
|
95
|
-
},
|
|
96
|
-
});
|
|
97
|
-
await server.connect(serverTransport);
|
|
98
|
-
// Simulate initialize request with older version
|
|
99
|
-
(_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
|
|
100
|
-
jsonrpc: "2.0",
|
|
101
|
-
id: 1,
|
|
102
|
-
method: "initialize",
|
|
103
|
-
params: {
|
|
104
|
-
protocolVersion: OLD_VERSION,
|
|
105
|
-
capabilities: {},
|
|
106
|
-
clientInfo: {
|
|
107
|
-
name: "test client",
|
|
108
|
-
version: "1.0",
|
|
109
|
-
},
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
await expect(sendPromise).resolves.toBeUndefined();
|
|
113
|
-
});
|
|
114
|
-
test("should handle unsupported protocol version", async () => {
|
|
115
|
-
var _a;
|
|
116
|
-
let sendPromiseResolve;
|
|
117
|
-
const sendPromise = new Promise((resolve) => {
|
|
118
|
-
sendPromiseResolve = resolve;
|
|
119
|
-
});
|
|
120
|
-
const serverTransport = {
|
|
121
|
-
start: jest.fn().mockResolvedValue(undefined),
|
|
122
|
-
close: jest.fn().mockResolvedValue(undefined),
|
|
123
|
-
send: jest.fn().mockImplementation((message) => {
|
|
124
|
-
if (message.id === 1 && message.result) {
|
|
125
|
-
expect(message.result).toEqual({
|
|
126
|
-
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
127
|
-
capabilities: expect.any(Object),
|
|
128
|
-
serverInfo: {
|
|
129
|
-
name: "test server",
|
|
130
|
-
version: "1.0",
|
|
131
|
-
},
|
|
132
|
-
});
|
|
133
|
-
sendPromiseResolve(undefined);
|
|
134
|
-
}
|
|
135
|
-
return Promise.resolve();
|
|
136
|
-
}),
|
|
137
|
-
};
|
|
138
|
-
const server = new Server({
|
|
139
|
-
name: "test server",
|
|
140
|
-
version: "1.0",
|
|
141
|
-
}, {
|
|
142
|
-
capabilities: {
|
|
143
|
-
prompts: {},
|
|
144
|
-
resources: {},
|
|
145
|
-
tools: {},
|
|
146
|
-
logging: {},
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
await server.connect(serverTransport);
|
|
150
|
-
// Simulate initialize request with unsupported version
|
|
151
|
-
(_a = serverTransport.onmessage) === null || _a === void 0 ? void 0 : _a.call(serverTransport, {
|
|
152
|
-
jsonrpc: "2.0",
|
|
153
|
-
id: 1,
|
|
154
|
-
method: "initialize",
|
|
155
|
-
params: {
|
|
156
|
-
protocolVersion: "invalid-version",
|
|
157
|
-
capabilities: {},
|
|
158
|
-
clientInfo: {
|
|
159
|
-
name: "test client",
|
|
160
|
-
version: "1.0",
|
|
161
|
-
},
|
|
162
|
-
},
|
|
163
|
-
});
|
|
164
|
-
await expect(sendPromise).resolves.toBeUndefined();
|
|
165
|
-
});
|
|
166
|
-
test("should respect client capabilities", async () => {
|
|
167
|
-
const server = new Server({
|
|
168
|
-
name: "test server",
|
|
169
|
-
version: "1.0",
|
|
170
|
-
}, {
|
|
171
|
-
capabilities: {
|
|
172
|
-
prompts: {},
|
|
173
|
-
resources: {},
|
|
174
|
-
tools: {},
|
|
175
|
-
logging: {},
|
|
176
|
-
},
|
|
177
|
-
enforceStrictCapabilities: true,
|
|
178
|
-
});
|
|
179
|
-
const client = new Client({
|
|
180
|
-
name: "test client",
|
|
181
|
-
version: "1.0",
|
|
182
|
-
}, {
|
|
183
|
-
capabilities: {
|
|
184
|
-
sampling: {},
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
// Implement request handler for sampling/createMessage
|
|
188
|
-
client.setRequestHandler(CreateMessageRequestSchema, async (request) => {
|
|
189
|
-
// Mock implementation of createMessage
|
|
190
|
-
return {
|
|
191
|
-
model: "test-model",
|
|
192
|
-
role: "assistant",
|
|
193
|
-
content: {
|
|
194
|
-
type: "text",
|
|
195
|
-
text: "This is a test response",
|
|
196
|
-
},
|
|
197
|
-
};
|
|
198
|
-
});
|
|
199
|
-
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
200
|
-
await Promise.all([
|
|
201
|
-
client.connect(clientTransport),
|
|
202
|
-
server.connect(serverTransport),
|
|
203
|
-
]);
|
|
204
|
-
expect(server.getClientCapabilities()).toEqual({ sampling: {} });
|
|
205
|
-
// This should work because sampling is supported by the client
|
|
206
|
-
await expect(server.createMessage({
|
|
207
|
-
messages: [],
|
|
208
|
-
maxTokens: 10,
|
|
209
|
-
})).resolves.not.toThrow();
|
|
210
|
-
// This should still throw because roots are not supported by the client
|
|
211
|
-
await expect(server.listRoots()).rejects.toThrow(/^Client does not support/);
|
|
212
|
-
});
|
|
213
|
-
test("should respect server notification capabilities", async () => {
|
|
214
|
-
const server = new Server({
|
|
215
|
-
name: "test server",
|
|
216
|
-
version: "1.0",
|
|
217
|
-
}, {
|
|
218
|
-
capabilities: {
|
|
219
|
-
logging: {},
|
|
220
|
-
},
|
|
221
|
-
enforceStrictCapabilities: true,
|
|
222
|
-
});
|
|
223
|
-
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
224
|
-
await server.connect(serverTransport);
|
|
225
|
-
// This should work because logging is supported by the server
|
|
226
|
-
await expect(server.sendLoggingMessage({
|
|
227
|
-
level: "info",
|
|
228
|
-
data: "Test log message",
|
|
229
|
-
})).resolves.not.toThrow();
|
|
230
|
-
// This should throw because resource notificaitons are not supported by the server
|
|
231
|
-
await expect(server.sendResourceUpdated({ uri: "test://resource" })).rejects.toThrow(/^Server does not support/);
|
|
232
|
-
});
|
|
233
|
-
test("should only allow setRequestHandler for declared capabilities", () => {
|
|
234
|
-
const server = new Server({
|
|
235
|
-
name: "test server",
|
|
236
|
-
version: "1.0",
|
|
237
|
-
}, {
|
|
238
|
-
capabilities: {
|
|
239
|
-
prompts: {},
|
|
240
|
-
resources: {},
|
|
241
|
-
},
|
|
242
|
-
});
|
|
243
|
-
// These should work because the capabilities are declared
|
|
244
|
-
expect(() => {
|
|
245
|
-
server.setRequestHandler(ListPromptsRequestSchema, () => ({ prompts: [] }));
|
|
246
|
-
}).not.toThrow();
|
|
247
|
-
expect(() => {
|
|
248
|
-
server.setRequestHandler(ListResourcesRequestSchema, () => ({
|
|
249
|
-
resources: [],
|
|
250
|
-
}));
|
|
251
|
-
}).not.toThrow();
|
|
252
|
-
// These should throw because the capabilities are not declared
|
|
253
|
-
expect(() => {
|
|
254
|
-
server.setRequestHandler(ListToolsRequestSchema, () => ({ tools: [] }));
|
|
255
|
-
}).toThrow(/^Server does not support tools/);
|
|
256
|
-
expect(() => {
|
|
257
|
-
server.setRequestHandler(SetLevelRequestSchema, () => ({}));
|
|
258
|
-
}).toThrow(/^Server does not support logging/);
|
|
259
|
-
});
|
|
260
|
-
/*
|
|
261
|
-
Test that custom request/notification/result schemas can be used with the Server class.
|
|
262
|
-
*/
|
|
263
|
-
test("should typecheck", () => {
|
|
264
|
-
const GetWeatherRequestSchema = RequestSchema.extend({
|
|
265
|
-
method: z.literal("weather/get"),
|
|
266
|
-
params: z.object({
|
|
267
|
-
city: z.string(),
|
|
268
|
-
}),
|
|
269
|
-
});
|
|
270
|
-
const GetForecastRequestSchema = RequestSchema.extend({
|
|
271
|
-
method: z.literal("weather/forecast"),
|
|
272
|
-
params: z.object({
|
|
273
|
-
city: z.string(),
|
|
274
|
-
days: z.number(),
|
|
275
|
-
}),
|
|
276
|
-
});
|
|
277
|
-
const WeatherForecastNotificationSchema = NotificationSchema.extend({
|
|
278
|
-
method: z.literal("weather/alert"),
|
|
279
|
-
params: z.object({
|
|
280
|
-
severity: z.enum(["warning", "watch"]),
|
|
281
|
-
message: z.string(),
|
|
282
|
-
}),
|
|
283
|
-
});
|
|
284
|
-
const WeatherRequestSchema = GetWeatherRequestSchema.or(GetForecastRequestSchema);
|
|
285
|
-
const WeatherNotificationSchema = WeatherForecastNotificationSchema;
|
|
286
|
-
const WeatherResultSchema = ResultSchema.extend({
|
|
287
|
-
temperature: z.number(),
|
|
288
|
-
conditions: z.string(),
|
|
289
|
-
});
|
|
290
|
-
// Create a typed Server for weather data
|
|
291
|
-
const weatherServer = new Server({
|
|
292
|
-
name: "WeatherServer",
|
|
293
|
-
version: "1.0.0",
|
|
294
|
-
}, {
|
|
295
|
-
capabilities: {
|
|
296
|
-
prompts: {},
|
|
297
|
-
resources: {},
|
|
298
|
-
tools: {},
|
|
299
|
-
logging: {},
|
|
300
|
-
},
|
|
301
|
-
});
|
|
302
|
-
// Typecheck that only valid weather requests/notifications/results are allowed
|
|
303
|
-
weatherServer.setRequestHandler(GetWeatherRequestSchema, (request) => {
|
|
304
|
-
return {
|
|
305
|
-
temperature: 72,
|
|
306
|
-
conditions: "sunny",
|
|
307
|
-
};
|
|
308
|
-
});
|
|
309
|
-
weatherServer.setNotificationHandler(WeatherForecastNotificationSchema, (notification) => {
|
|
310
|
-
console.log(`Weather alert: ${notification.params.message}`);
|
|
311
|
-
});
|
|
312
|
-
});
|
|
313
|
-
test("should handle server cancelling a request", async () => {
|
|
314
|
-
const server = new Server({
|
|
315
|
-
name: "test server",
|
|
316
|
-
version: "1.0",
|
|
317
|
-
}, {
|
|
318
|
-
capabilities: {
|
|
319
|
-
sampling: {},
|
|
320
|
-
},
|
|
321
|
-
});
|
|
322
|
-
const client = new Client({
|
|
323
|
-
name: "test client",
|
|
324
|
-
version: "1.0",
|
|
325
|
-
}, {
|
|
326
|
-
capabilities: {
|
|
327
|
-
sampling: {},
|
|
328
|
-
},
|
|
329
|
-
});
|
|
330
|
-
// Set up client to delay responding to createMessage
|
|
331
|
-
client.setRequestHandler(CreateMessageRequestSchema, async (_request, extra) => {
|
|
332
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
333
|
-
return {
|
|
334
|
-
model: "test",
|
|
335
|
-
role: "assistant",
|
|
336
|
-
content: {
|
|
337
|
-
type: "text",
|
|
338
|
-
text: "Test response",
|
|
339
|
-
},
|
|
340
|
-
};
|
|
341
|
-
});
|
|
342
|
-
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
343
|
-
await Promise.all([
|
|
344
|
-
client.connect(clientTransport),
|
|
345
|
-
server.connect(serverTransport),
|
|
346
|
-
]);
|
|
347
|
-
// Set up abort controller
|
|
348
|
-
const controller = new AbortController();
|
|
349
|
-
// Issue request but cancel it immediately
|
|
350
|
-
const createMessagePromise = server.createMessage({
|
|
351
|
-
messages: [],
|
|
352
|
-
maxTokens: 10,
|
|
353
|
-
}, {
|
|
354
|
-
signal: controller.signal,
|
|
355
|
-
});
|
|
356
|
-
controller.abort("Cancelled by test");
|
|
357
|
-
// Request should be rejected
|
|
358
|
-
await expect(createMessagePromise).rejects.toBe("Cancelled by test");
|
|
359
|
-
});
|
|
360
|
-
test("should handle request timeout", async () => {
|
|
361
|
-
const server = new Server({
|
|
362
|
-
name: "test server",
|
|
363
|
-
version: "1.0",
|
|
364
|
-
}, {
|
|
365
|
-
capabilities: {
|
|
366
|
-
sampling: {},
|
|
367
|
-
},
|
|
368
|
-
});
|
|
369
|
-
// Set up client that delays responses
|
|
370
|
-
const client = new Client({
|
|
371
|
-
name: "test client",
|
|
372
|
-
version: "1.0",
|
|
373
|
-
}, {
|
|
374
|
-
capabilities: {
|
|
375
|
-
sampling: {},
|
|
376
|
-
},
|
|
377
|
-
});
|
|
378
|
-
client.setRequestHandler(CreateMessageRequestSchema, async (_request, extra) => {
|
|
379
|
-
await new Promise((resolve, reject) => {
|
|
380
|
-
const timeout = setTimeout(resolve, 100);
|
|
381
|
-
extra.signal.addEventListener("abort", () => {
|
|
382
|
-
clearTimeout(timeout);
|
|
383
|
-
reject(extra.signal.reason);
|
|
384
|
-
});
|
|
385
|
-
});
|
|
386
|
-
return {
|
|
387
|
-
model: "test",
|
|
388
|
-
role: "assistant",
|
|
389
|
-
content: {
|
|
390
|
-
type: "text",
|
|
391
|
-
text: "Test response",
|
|
392
|
-
},
|
|
393
|
-
};
|
|
394
|
-
});
|
|
395
|
-
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
396
|
-
await Promise.all([
|
|
397
|
-
client.connect(clientTransport),
|
|
398
|
-
server.connect(serverTransport),
|
|
399
|
-
]);
|
|
400
|
-
// Request with 0 msec timeout should fail immediately
|
|
401
|
-
await expect(server.createMessage({
|
|
402
|
-
messages: [],
|
|
403
|
-
maxTokens: 10,
|
|
404
|
-
}, { timeout: 0 })).rejects.toMatchObject({
|
|
405
|
-
code: ErrorCode.RequestTimeout,
|
|
406
|
-
});
|
|
407
|
-
});
|
|
408
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/server/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.test.d.ts","sourceRoot":"","sources":["../../src/server/stdio.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { Readable, Writable } from "node:stream";
|
|
2
|
-
import { ReadBuffer, serializeMessage } from "../shared/stdio.js";
|
|
3
|
-
import { StdioServerTransport } from "./stdio.js";
|
|
4
|
-
let input;
|
|
5
|
-
let outputBuffer;
|
|
6
|
-
let output;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
input = new Readable({
|
|
9
|
-
// We'll use input.push() instead.
|
|
10
|
-
read: () => { },
|
|
11
|
-
});
|
|
12
|
-
outputBuffer = new ReadBuffer();
|
|
13
|
-
output = new Writable({
|
|
14
|
-
write(chunk, encoding, callback) {
|
|
15
|
-
outputBuffer.append(chunk);
|
|
16
|
-
callback();
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
test("should start then close cleanly", async () => {
|
|
21
|
-
const server = new StdioServerTransport(input, output);
|
|
22
|
-
server.onerror = (error) => {
|
|
23
|
-
throw error;
|
|
24
|
-
};
|
|
25
|
-
let didClose = false;
|
|
26
|
-
server.onclose = () => {
|
|
27
|
-
didClose = true;
|
|
28
|
-
};
|
|
29
|
-
await server.start();
|
|
30
|
-
expect(didClose).toBeFalsy();
|
|
31
|
-
await server.close();
|
|
32
|
-
expect(didClose).toBeTruthy();
|
|
33
|
-
});
|
|
34
|
-
test("should not read until started", async () => {
|
|
35
|
-
const server = new StdioServerTransport(input, output);
|
|
36
|
-
server.onerror = (error) => {
|
|
37
|
-
throw error;
|
|
38
|
-
};
|
|
39
|
-
let didRead = false;
|
|
40
|
-
const readMessage = new Promise((resolve) => {
|
|
41
|
-
server.onmessage = (message) => {
|
|
42
|
-
didRead = true;
|
|
43
|
-
resolve(message);
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
const message = {
|
|
47
|
-
jsonrpc: "2.0",
|
|
48
|
-
id: 1,
|
|
49
|
-
method: "ping",
|
|
50
|
-
};
|
|
51
|
-
input.push(serializeMessage(message));
|
|
52
|
-
expect(didRead).toBeFalsy();
|
|
53
|
-
await server.start();
|
|
54
|
-
expect(await readMessage).toEqual(message);
|
|
55
|
-
});
|
|
56
|
-
test("should read multiple messages", async () => {
|
|
57
|
-
const server = new StdioServerTransport(input, output);
|
|
58
|
-
server.onerror = (error) => {
|
|
59
|
-
throw error;
|
|
60
|
-
};
|
|
61
|
-
const messages = [
|
|
62
|
-
{
|
|
63
|
-
jsonrpc: "2.0",
|
|
64
|
-
id: 1,
|
|
65
|
-
method: "ping",
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
jsonrpc: "2.0",
|
|
69
|
-
method: "notifications/initialized",
|
|
70
|
-
},
|
|
71
|
-
];
|
|
72
|
-
const readMessages = [];
|
|
73
|
-
const finished = new Promise((resolve) => {
|
|
74
|
-
server.onmessage = (message) => {
|
|
75
|
-
readMessages.push(message);
|
|
76
|
-
if (JSON.stringify(message) === JSON.stringify(messages[1])) {
|
|
77
|
-
resolve();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
input.push(serializeMessage(messages[0]));
|
|
82
|
-
input.push(serializeMessage(messages[1]));
|
|
83
|
-
await server.start();
|
|
84
|
-
await finished;
|
|
85
|
-
expect(readMessages).toEqual(messages);
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=stdio.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.test.js","sourceRoot":"","sources":["../../src/server/stdio.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.test.d.ts","sourceRoot":"","sources":["../../src/shared/stdio.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { ReadBuffer } from "./stdio.js";
|
|
2
|
-
const testMessage = {
|
|
3
|
-
jsonrpc: "2.0",
|
|
4
|
-
method: "foobar",
|
|
5
|
-
};
|
|
6
|
-
test("should have no messages after initialization", () => {
|
|
7
|
-
const readBuffer = new ReadBuffer();
|
|
8
|
-
expect(readBuffer.readMessage()).toBeNull();
|
|
9
|
-
});
|
|
10
|
-
test("should only yield a message after a newline", () => {
|
|
11
|
-
const readBuffer = new ReadBuffer();
|
|
12
|
-
readBuffer.append(Buffer.from(JSON.stringify(testMessage)));
|
|
13
|
-
expect(readBuffer.readMessage()).toBeNull();
|
|
14
|
-
readBuffer.append(Buffer.from("\n"));
|
|
15
|
-
expect(readBuffer.readMessage()).toEqual(testMessage);
|
|
16
|
-
expect(readBuffer.readMessage()).toBeNull();
|
|
17
|
-
});
|
|
18
|
-
test("should be reusable after clearing", () => {
|
|
19
|
-
const readBuffer = new ReadBuffer();
|
|
20
|
-
readBuffer.append(Buffer.from("foobar"));
|
|
21
|
-
readBuffer.clear();
|
|
22
|
-
expect(readBuffer.readMessage()).toBeNull();
|
|
23
|
-
readBuffer.append(Buffer.from(JSON.stringify(testMessage)));
|
|
24
|
-
readBuffer.append(Buffer.from("\n"));
|
|
25
|
-
expect(readBuffer.readMessage()).toEqual(testMessage);
|
|
26
|
-
});
|
|
27
|
-
//# sourceMappingURL=stdio.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.test.js","sourceRoot":"","sources":["../../src/shared/stdio.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,GAAmB;IAClC,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC7C,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAEpC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE5C,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
|