@slbdn/mcp-tester 1.2.0 → 1.4.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/CHANGELOG.md +108 -0
- package/README.md +160 -7
- package/dist/cli/index.js +382 -62
- package/dist/cli/index.js.map +1 -1
- package/dist/client/MCPClient.d.ts +187 -10
- package/dist/client/MCPClient.d.ts.map +1 -1
- package/dist/client/MCPClient.js +270 -50
- package/dist/client/MCPClient.js.map +1 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/validation.d.ts +52 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +326 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +8 -6
package/dist/cli/index.js
CHANGED
|
@@ -3,36 +3,114 @@
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { MCPClient } from '../client/MCPClient.js';
|
|
5
5
|
import { MCPConnectionError, MCPTimeoutError, MCPServerError } from '../utils/errors.js';
|
|
6
|
+
import { generateTests } from '../generate-tests.js';
|
|
7
|
+
import { generateTypes } from '../generate-types.js';
|
|
8
|
+
import { readFileSync } from 'fs';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
import { dirname, join } from 'path';
|
|
11
|
+
// Read version from package.json (works in both src and dist)
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
function getPackageVersion() {
|
|
14
|
+
try {
|
|
15
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
|
|
16
|
+
return pkg.version || '0.0.0';
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return '0.0.0';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
6
22
|
const program = new Command();
|
|
7
23
|
program
|
|
8
24
|
.name('mcp-tester')
|
|
9
|
-
.description('CLI tool for testing MCP servers')
|
|
10
|
-
.version(
|
|
11
|
-
// Global options
|
|
25
|
+
.description('CLI tool for testing MCP servers (stdio, HTTP, and SSE transports)')
|
|
26
|
+
.version(getPackageVersion(), '-V, --version');
|
|
27
|
+
// Global options (also added per-command via addTransportOptions below)
|
|
12
28
|
program
|
|
13
29
|
.option('-t, --timeout <ms>', 'Request timeout in milliseconds', '30000')
|
|
14
30
|
.option('-v, --verbose', 'Enable verbose output')
|
|
15
31
|
.option('-l, --log-level <level>', 'Log level (debug|info|warn|error)', 'info');
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Add transport options to a command. Commander requires options to be defined
|
|
34
|
+
* on the command itself for them to be recognized during argument parsing.
|
|
35
|
+
*/
|
|
36
|
+
function withTransport(cmd) {
|
|
37
|
+
return cmd
|
|
38
|
+
.option('-T, --transport <type>', 'Transport: stdio (default), http, or sse', undefined)
|
|
39
|
+
.option('--url <url>', 'Server URL for http/sse (e.g. http://localhost:3000/mcp)', undefined)
|
|
40
|
+
.option('--headers <json>', 'HTTP headers as JSON (e.g. \'{"Authorization":"Bearer x"}\')', undefined);
|
|
41
|
+
}
|
|
42
|
+
// ─── Helper: resolve server config from global opts + positional args ──────
|
|
43
|
+
/**
|
|
44
|
+
* Build a ServerConfig from the global options and positional command/args.
|
|
45
|
+
*
|
|
46
|
+
* - If `--url` is provided → use HTTP/SSE transport
|
|
47
|
+
* - If `--transport http|sse` without `--url` → treat first positional arg as URL
|
|
48
|
+
* - Otherwise → stdio with command + args
|
|
49
|
+
*/
|
|
50
|
+
function resolveServerConfig(opts, command, args) {
|
|
51
|
+
const transport = String(opts['transport'] || '');
|
|
52
|
+
const url = opts['url'] ? String(opts['url']) : undefined;
|
|
53
|
+
const headersRaw = opts['headers'] ? String(opts['headers']) : undefined;
|
|
54
|
+
let headers;
|
|
55
|
+
if (headersRaw) {
|
|
56
|
+
try {
|
|
57
|
+
headers = JSON.parse(headersRaw);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
console.error('❌ Invalid JSON for --headers');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// HTTP or SSE transport
|
|
65
|
+
if (transport === 'http' || transport === 'sse' || (url && transport)) {
|
|
66
|
+
const actualTransport = (transport || 'http');
|
|
67
|
+
const actualUrl = url || command;
|
|
68
|
+
if (!actualUrl) {
|
|
69
|
+
console.error(`❌ URL is required for ${actualTransport} transport. Use --url or pass as first argument.`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
return { transport: actualTransport, url: actualUrl, headers };
|
|
73
|
+
}
|
|
74
|
+
// Auto-detect: if command looks like a URL, use HTTP
|
|
75
|
+
if (command && (command.startsWith('http://') || command.startsWith('https://'))) {
|
|
76
|
+
return { transport: 'http', url: command, headers };
|
|
77
|
+
}
|
|
78
|
+
// Default: stdio
|
|
79
|
+
if (!command) {
|
|
80
|
+
console.error('❌ Command is required for stdio transport. Example: mcp-tester test node ./server.js');
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
return { command, args: args || [] };
|
|
84
|
+
}
|
|
85
|
+
/** Human-readable description of the connection target for logging. */
|
|
86
|
+
function describeTarget(config) {
|
|
87
|
+
if ('url' in config) {
|
|
88
|
+
return `${config.transport}: ${config.url}`;
|
|
89
|
+
}
|
|
90
|
+
return `stdio: ${config.command} ${(config.args || []).join(' ')}`;
|
|
91
|
+
}
|
|
92
|
+
/** Create a client with global options. */
|
|
93
|
+
function createClient(opts) {
|
|
94
|
+
return new MCPClient({
|
|
24
95
|
name: 'mcp-tester-cli',
|
|
25
96
|
version: '1.0.0',
|
|
26
97
|
timeout: parseInt(String(opts['timeout'] || '30000')),
|
|
27
98
|
logLevel: (opts['verbose'] ? 'debug' : String(opts['logLevel'] || 'info')),
|
|
28
99
|
});
|
|
100
|
+
}
|
|
101
|
+
// ─── Commands ────────────────────────────────────────────────────────────
|
|
102
|
+
// Test command - connects and verifies server is working
|
|
103
|
+
withTransport(program
|
|
104
|
+
.command('test')
|
|
105
|
+
.description('Test MCP server connection and list available capabilities')
|
|
106
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
107
|
+
.argument('[args...]', 'Arguments for the server command')).action(async (command, args, opts) => {
|
|
108
|
+
const config = resolveServerConfig(opts, command, args);
|
|
109
|
+
const client = createClient(opts);
|
|
29
110
|
try {
|
|
30
111
|
console.log(`🔌 Connecting to MCP server...`);
|
|
31
|
-
console.log(`
|
|
32
|
-
await client.start(
|
|
33
|
-
command,
|
|
34
|
-
args,
|
|
35
|
-
});
|
|
112
|
+
console.log(` ${describeTarget(config)}`);
|
|
113
|
+
await client.start(config);
|
|
36
114
|
console.log(`✅ Connected successfully\n`);
|
|
37
115
|
// Test tools
|
|
38
116
|
console.log(`🛠️ Tools:`);
|
|
@@ -76,7 +154,7 @@ program
|
|
|
76
154
|
catch (error) {
|
|
77
155
|
console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
78
156
|
if (error instanceof MCPConnectionError) {
|
|
79
|
-
console.error(' →
|
|
157
|
+
console.error(' → Connection failed. Check the URL or command.');
|
|
80
158
|
}
|
|
81
159
|
else if (error instanceof MCPTimeoutError) {
|
|
82
160
|
console.error(` → Request timed out after ${opts['timeout']}ms`);
|
|
@@ -91,22 +169,18 @@ program
|
|
|
91
169
|
}
|
|
92
170
|
});
|
|
93
171
|
// List tools command
|
|
94
|
-
program
|
|
172
|
+
withTransport(program
|
|
95
173
|
.command('list-tools')
|
|
96
174
|
.alias('lt')
|
|
97
175
|
.description('List all available tools from the MCP server')
|
|
98
|
-
.argument('
|
|
99
|
-
.argument('[args...]', 'Arguments for the server command')
|
|
176
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
177
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
100
178
|
.option('--json', 'Output as JSON')
|
|
101
179
|
.action(async (command, args, opts) => {
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
version: '1.0.0',
|
|
105
|
-
timeout: parseInt(String(opts['timeout'] || '30000')),
|
|
106
|
-
logLevel: opts['verbose'] ? 'debug' : 'info',
|
|
107
|
-
});
|
|
180
|
+
const config = resolveServerConfig(opts, command, args);
|
|
181
|
+
const client = createClient(opts);
|
|
108
182
|
try {
|
|
109
|
-
await client.start(
|
|
183
|
+
await client.start(config);
|
|
110
184
|
const tools = await client.listTools();
|
|
111
185
|
if (opts['json']) {
|
|
112
186
|
console.log(JSON.stringify({ tools }, null, 2));
|
|
@@ -133,22 +207,18 @@ program
|
|
|
133
207
|
}
|
|
134
208
|
});
|
|
135
209
|
// Call tool command
|
|
136
|
-
program
|
|
210
|
+
withTransport(program
|
|
137
211
|
.command('call-tool')
|
|
138
212
|
.alias('ct')
|
|
139
213
|
.description('Call a tool on the MCP server')
|
|
140
214
|
.argument('<tool-name>', 'Name of the tool to call')
|
|
141
|
-
.argument('
|
|
142
|
-
.argument('[args...]', 'Arguments for the server command')
|
|
215
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
216
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
143
217
|
.option('--params <json>', 'Tool parameters as JSON string')
|
|
144
218
|
.option('--json', 'Output as JSON')
|
|
145
219
|
.action(async (toolName, command, serverArgs, opts) => {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
version: '1.0.0',
|
|
149
|
-
timeout: parseInt(String(opts['timeout'] || '30000')),
|
|
150
|
-
logLevel: opts['verbose'] ? 'debug' : 'info',
|
|
151
|
-
});
|
|
220
|
+
const config = resolveServerConfig(opts, command, serverArgs);
|
|
221
|
+
const client = createClient(opts);
|
|
152
222
|
let toolArgs = {};
|
|
153
223
|
if (opts['params']) {
|
|
154
224
|
try {
|
|
@@ -160,7 +230,7 @@ program
|
|
|
160
230
|
}
|
|
161
231
|
}
|
|
162
232
|
try {
|
|
163
|
-
await client.start(
|
|
233
|
+
await client.start(config);
|
|
164
234
|
if (!opts['json']) {
|
|
165
235
|
console.log(`🔧 Calling tool: ${toolName}`);
|
|
166
236
|
if (Object.keys(toolArgs).length > 0) {
|
|
@@ -195,23 +265,19 @@ program
|
|
|
195
265
|
}
|
|
196
266
|
});
|
|
197
267
|
// Read resource command
|
|
198
|
-
program
|
|
268
|
+
withTransport(program
|
|
199
269
|
.command('read-resource')
|
|
200
270
|
.alias('rr')
|
|
201
271
|
.description('Read a resource from the MCP server')
|
|
202
272
|
.argument('<uri>', 'URI of the resource to read')
|
|
203
|
-
.argument('
|
|
204
|
-
.argument('[args...]', 'Arguments for the server command')
|
|
273
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
274
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
205
275
|
.option('--json', 'Output as JSON')
|
|
206
276
|
.action(async (uri, command, serverArgs, opts) => {
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
version: '1.0.0',
|
|
210
|
-
timeout: parseInt(String(opts['timeout'] || '30000')),
|
|
211
|
-
logLevel: opts['verbose'] ? 'debug' : 'info',
|
|
212
|
-
});
|
|
277
|
+
const config = resolveServerConfig(opts, command, serverArgs);
|
|
278
|
+
const client = createClient(opts);
|
|
213
279
|
try {
|
|
214
|
-
await client.start(
|
|
280
|
+
await client.start(config);
|
|
215
281
|
if (!opts['json']) {
|
|
216
282
|
console.log(`📖 Reading resource: ${uri}`);
|
|
217
283
|
}
|
|
@@ -237,22 +303,18 @@ program
|
|
|
237
303
|
}
|
|
238
304
|
});
|
|
239
305
|
// Get prompt command
|
|
240
|
-
program
|
|
306
|
+
withTransport(program
|
|
241
307
|
.command('get-prompt')
|
|
242
308
|
.alias('gp')
|
|
243
309
|
.description('Get a prompt from the MCP server')
|
|
244
310
|
.argument('<name>', 'Name of the prompt')
|
|
245
|
-
.argument('
|
|
246
|
-
.argument('[args...]', 'Arguments for the server command')
|
|
311
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
312
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
247
313
|
.option('--args <json>', 'Prompt arguments as JSON string')
|
|
248
314
|
.option('--json', 'Output as JSON')
|
|
249
315
|
.action(async (promptName, command, serverArgs, opts) => {
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
version: '1.0.0',
|
|
253
|
-
timeout: parseInt(String(opts['timeout'] || '30000')),
|
|
254
|
-
logLevel: opts['verbose'] ? 'debug' : 'info',
|
|
255
|
-
});
|
|
316
|
+
const config = resolveServerConfig(opts, command, serverArgs);
|
|
317
|
+
const client = createClient(opts);
|
|
256
318
|
let promptArgs = {};
|
|
257
319
|
if (opts['args']) {
|
|
258
320
|
try {
|
|
@@ -264,7 +326,7 @@ program
|
|
|
264
326
|
}
|
|
265
327
|
}
|
|
266
328
|
try {
|
|
267
|
-
await client.start(
|
|
329
|
+
await client.start(config);
|
|
268
330
|
if (!opts['json']) {
|
|
269
331
|
console.log(`💬 Getting prompt: ${promptName}`);
|
|
270
332
|
}
|
|
@@ -290,16 +352,274 @@ program
|
|
|
290
352
|
await client.stop();
|
|
291
353
|
}
|
|
292
354
|
});
|
|
293
|
-
//
|
|
355
|
+
// Generate test file command
|
|
356
|
+
withTransport(program
|
|
357
|
+
.command('generate')
|
|
358
|
+
.alias('gen')
|
|
359
|
+
.description('Generate test file from MCP server inspection')
|
|
360
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
361
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
362
|
+
.option('-o, --output <file>', 'Output file path (prints to stdout if omitted)')
|
|
363
|
+
.option('--framework <fw>', 'Test framework: jest or vitest', 'jest')
|
|
364
|
+
.option('--description <desc>', 'Description for the test suite')
|
|
365
|
+
.option('--no-resources', 'Skip resource tests')
|
|
366
|
+
.option('--no-prompts', 'Skip prompt tests')
|
|
367
|
+
.option('--no-tools', 'Skip tool tests')
|
|
368
|
+
.option('--no-matchers', 'Skip custom matchers import')
|
|
369
|
+
.action(async (command, serverArgs, opts) => {
|
|
370
|
+
const framework = String(opts['framework'] || 'jest');
|
|
371
|
+
if (framework !== 'jest' && framework !== 'vitest') {
|
|
372
|
+
console.error('❌ Framework must be "jest" or "vitest"');
|
|
373
|
+
process.exit(1);
|
|
374
|
+
}
|
|
375
|
+
try {
|
|
376
|
+
console.error('🔍 Inspecting MCP server...');
|
|
377
|
+
// generateTests supports stdio only (connects and inspects)
|
|
378
|
+
const config = resolveServerConfig(opts, command, serverArgs);
|
|
379
|
+
const timeout = parseInt(String(opts['timeout'] || '30000'));
|
|
380
|
+
let code;
|
|
381
|
+
if ('command' in config) {
|
|
382
|
+
code = await generateTests({
|
|
383
|
+
command: config.command,
|
|
384
|
+
args: config.args || [],
|
|
385
|
+
framework: framework,
|
|
386
|
+
description: opts['description'],
|
|
387
|
+
includeResources: opts['resources'] !== false,
|
|
388
|
+
includePrompts: opts['prompts'] !== false,
|
|
389
|
+
includeTools: opts['tools'] !== false,
|
|
390
|
+
includeMatchers: opts['matchers'] !== false,
|
|
391
|
+
timeout,
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// HTTP/SSE — connect directly
|
|
396
|
+
const client = new MCPClient({ name: 'mcp-tester-gen', version: '1.0.0', timeout });
|
|
397
|
+
try {
|
|
398
|
+
await client.start(config);
|
|
399
|
+
// For HTTP/SSE, generate from connected client
|
|
400
|
+
code = await generateFromClient(client, {
|
|
401
|
+
framework: framework,
|
|
402
|
+
description: opts['description'],
|
|
403
|
+
includeResources: opts['resources'] !== false,
|
|
404
|
+
includePrompts: opts['prompts'] !== false,
|
|
405
|
+
includeTools: opts['tools'] !== false,
|
|
406
|
+
includeMatchers: opts['matchers'] !== false,
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
finally {
|
|
410
|
+
await client.stop();
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (opts['output']) {
|
|
414
|
+
const fs = await import('fs');
|
|
415
|
+
const path = await import('path');
|
|
416
|
+
const outputPath = String(opts['output']);
|
|
417
|
+
const dir = path.dirname(outputPath);
|
|
418
|
+
if (dir && dir !== '.') {
|
|
419
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
420
|
+
}
|
|
421
|
+
fs.writeFileSync(outputPath, code, 'utf-8');
|
|
422
|
+
console.error(`✅ Generated test file: ${outputPath}`);
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
process.stdout.write(code);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
430
|
+
process.exit(1);
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
// Generate TypeScript types command
|
|
434
|
+
withTransport(program
|
|
435
|
+
.command('generate-types')
|
|
436
|
+
.alias('gen-types')
|
|
437
|
+
.description('Generate TypeScript type declarations from MCP server tool schemas')
|
|
438
|
+
.argument('[command]', 'Command to run (stdio) or URL (http/sse)')
|
|
439
|
+
.argument('[args...]', 'Arguments for the server command'))
|
|
440
|
+
.option('-o, --output <file>', 'Output file path (prints to stdout if omitted)')
|
|
441
|
+
.option('--module-name <name>', 'Module name for import hints', '@slbdn/mcp-tester')
|
|
442
|
+
.option('--no-resources', 'Skip resource URI types')
|
|
443
|
+
.option('--no-prompts', 'Skip prompt argument types')
|
|
444
|
+
.action(async (command, serverArgs, opts) => {
|
|
445
|
+
try {
|
|
446
|
+
console.error('🔍 Inspecting MCP server for type generation...');
|
|
447
|
+
const config = resolveServerConfig(opts, command, serverArgs);
|
|
448
|
+
const timeout = parseInt(String(opts['timeout'] || '30000'));
|
|
449
|
+
let types;
|
|
450
|
+
if ('command' in config) {
|
|
451
|
+
types = await generateTypes({
|
|
452
|
+
command: config.command,
|
|
453
|
+
args: config.args || [],
|
|
454
|
+
moduleName: opts['moduleName'],
|
|
455
|
+
includeResources: opts['resources'] !== false,
|
|
456
|
+
includePrompts: opts['prompts'] !== false,
|
|
457
|
+
timeout,
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
const client = new MCPClient({ name: 'mcp-tester-gen', version: '1.0.0', timeout });
|
|
462
|
+
try {
|
|
463
|
+
await client.start(config);
|
|
464
|
+
types = await generateTypesFromClient(client, {
|
|
465
|
+
moduleName: opts['moduleName'],
|
|
466
|
+
includeResources: opts['resources'] !== false,
|
|
467
|
+
includePrompts: opts['prompts'] !== false,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
finally {
|
|
471
|
+
await client.stop();
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if (opts['output']) {
|
|
475
|
+
const fs = await import('fs');
|
|
476
|
+
const path = await import('path');
|
|
477
|
+
const outputPath = String(opts['output']);
|
|
478
|
+
const dir = path.dirname(outputPath);
|
|
479
|
+
if (dir && dir !== '.') {
|
|
480
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
481
|
+
}
|
|
482
|
+
fs.writeFileSync(outputPath, types, 'utf-8');
|
|
483
|
+
console.error(`✅ Generated type declarations: ${outputPath}`);
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
process.stdout.write(types);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
catch (error) {
|
|
490
|
+
console.error(`❌ Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
491
|
+
process.exit(1);
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
// ─── Helpers for HTTP/SSE codegen (inline inspection) ─────────────────────
|
|
495
|
+
async function generateFromClient(client, opts) {
|
|
496
|
+
const tools = opts.includeTools ? await client.listTools() : [];
|
|
497
|
+
const resources = opts.includeResources ? await client.listResources() : [];
|
|
498
|
+
const prompts = opts.includePrompts ? await client.listPrompts() : [];
|
|
499
|
+
// Build the test code inline (simplified version for HTTP/SSE)
|
|
500
|
+
const importLine = opts.framework === 'vitest' ? 'vitest' : '@jest/globals';
|
|
501
|
+
const matchersImport = opts.includeMatchers
|
|
502
|
+
? `import { setup${opts.framework === 'vitest' ? 'Vitest' : 'Jest'}Matchers } from '@slbdn/mcp-tester';\n`
|
|
503
|
+
: '';
|
|
504
|
+
let code = `import { describe, it, expect, beforeAll, afterAll } from '${importLine}';\n`;
|
|
505
|
+
code += `import { MCPClient } from '@slbdn/mcp-tester';\n`;
|
|
506
|
+
if (matchersImport)
|
|
507
|
+
code += matchersImport;
|
|
508
|
+
code += '\n';
|
|
509
|
+
const desc = opts.description || 'Generated MCP Server Tests';
|
|
510
|
+
code += `describe('${desc}', () => {\n`;
|
|
511
|
+
code += ` let client: MCPClient;\n\n`;
|
|
512
|
+
code += ` beforeAll(async () => {\n`;
|
|
513
|
+
if (matchersImport) {
|
|
514
|
+
code += ` setup${opts.framework === 'vitest' ? 'Vitest' : 'Jest'}Matchers();\n`;
|
|
515
|
+
}
|
|
516
|
+
code += ` client = new MCPClient({ timeout: 30000 });\n`;
|
|
517
|
+
code += ` // Update the URL/command for your server\n`;
|
|
518
|
+
code += ` await client.start({ command: 'node', args: ['./server.js'] });\n`;
|
|
519
|
+
code += ` });\n\n`;
|
|
520
|
+
code += ` afterAll(async () => {\n if (client.isConnected()) await client.stop();\n });\n\n`;
|
|
521
|
+
if (opts.includeTools) {
|
|
522
|
+
code += ` // ─── Tools (${tools.length}) ───\n`;
|
|
523
|
+
for (const tool of tools) {
|
|
524
|
+
code += ` it('should have tool: ${tool.name}', async () => {\n`;
|
|
525
|
+
code += ` const tools = await client.listTools();\n`;
|
|
526
|
+
code += ` expect(tools.map(t => t.name)).toContain('${tool.name}');\n`;
|
|
527
|
+
code += ` });\n\n`;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
if (opts.includeResources) {
|
|
531
|
+
code += ` // ─── Resources (${resources.length}) ───\n`;
|
|
532
|
+
code += ` it('should list resources', async () => {\n`;
|
|
533
|
+
code += ` const resources = await client.listResources();\n`;
|
|
534
|
+
code += ` expect(resources.length).toBeGreaterThan(0);\n`;
|
|
535
|
+
code += ` });\n\n`;
|
|
536
|
+
}
|
|
537
|
+
if (opts.includePrompts) {
|
|
538
|
+
code += ` // ─── Prompts (${prompts.length}) ───\n`;
|
|
539
|
+
code += ` it('should list prompts', async () => {\n`;
|
|
540
|
+
code += ` const prompts = await client.listPrompts();\n`;
|
|
541
|
+
code += ` expect(prompts.length).toBeGreaterThan(0);\n`;
|
|
542
|
+
code += ` });\n\n`;
|
|
543
|
+
}
|
|
544
|
+
code += `});\n`;
|
|
545
|
+
return code;
|
|
546
|
+
}
|
|
547
|
+
async function generateTypesFromClient(client, opts) {
|
|
548
|
+
const tools = await client.listTools();
|
|
549
|
+
const resources = opts.includeResources ? await client.listResources() : [];
|
|
550
|
+
const prompts = opts.includePrompts ? await client.listPrompts() : [];
|
|
551
|
+
const moduleName = opts.moduleName || '@slbdn/mcp-tester';
|
|
552
|
+
let code = `// Generated by mcp-tester generate-types\n`;
|
|
553
|
+
code += `// Source: MCP server inspection\n\n`;
|
|
554
|
+
code += `// Tool argument types\n`;
|
|
555
|
+
for (const tool of tools) {
|
|
556
|
+
code += `export interface ${toPascalCase(tool.name)}Args {\n`;
|
|
557
|
+
const props = tool.inputSchema?.properties || {};
|
|
558
|
+
const required = tool.inputSchema?.required || [];
|
|
559
|
+
for (const [key, schema] of Object.entries(props)) {
|
|
560
|
+
const s = schema;
|
|
561
|
+
const tsType = jsonSchemaToTs(s);
|
|
562
|
+
const optional = !required.includes(key) ? '?' : '';
|
|
563
|
+
code += ` ${key}${optional}: ${tsType};\n`;
|
|
564
|
+
}
|
|
565
|
+
code += `}\n\n`;
|
|
566
|
+
}
|
|
567
|
+
code += `export type ToolName = ${tools.map((t) => `'${t.name}'`).join(' | ') || 'string'};\n\n`;
|
|
568
|
+
if (resources.length > 0) {
|
|
569
|
+
code += `export type ResourceUri = ${resources.map((r) => `'${r.uri}'`).join(' | ')};\n\n`;
|
|
570
|
+
}
|
|
571
|
+
if (prompts.length > 0) {
|
|
572
|
+
code += `export type PromptName = ${prompts.map((p) => `'${p.name}'`).join(' | ')};\n\n`;
|
|
573
|
+
}
|
|
574
|
+
code += `// Import the client\n`;
|
|
575
|
+
code += `import { MCPClient, type ToolCall } from '${moduleName}';\n`;
|
|
576
|
+
return code;
|
|
577
|
+
}
|
|
578
|
+
function toPascalCase(s) {
|
|
579
|
+
return s.replace(/(^|[-_])(.)/g, (_, __, c) => c.toUpperCase());
|
|
580
|
+
}
|
|
581
|
+
function jsonSchemaToTs(schema) {
|
|
582
|
+
const type = schema.type;
|
|
583
|
+
switch (type) {
|
|
584
|
+
case 'string':
|
|
585
|
+
return 'string';
|
|
586
|
+
case 'number':
|
|
587
|
+
case 'integer':
|
|
588
|
+
return 'number';
|
|
589
|
+
case 'boolean':
|
|
590
|
+
return 'boolean';
|
|
591
|
+
case 'array':
|
|
592
|
+
return 'unknown[]';
|
|
593
|
+
case 'object':
|
|
594
|
+
return 'Record<string, unknown>';
|
|
595
|
+
default:
|
|
596
|
+
return 'unknown';
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
// ─── Help ────────────────────────────────────────────────────────────────
|
|
294
600
|
program.addHelpText('after', `
|
|
295
601
|
Examples:
|
|
602
|
+
# Stdio transport (default)
|
|
296
603
|
mcp-tester test node ./server.js
|
|
297
604
|
mcp-tester list-tools node ./server.js --json
|
|
298
605
|
mcp-tester call-tool echo node ./server.js --params '{"message":"Hello"}'
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
mcp-tester
|
|
302
|
-
mcp-tester
|
|
606
|
+
|
|
607
|
+
# HTTP transport
|
|
608
|
+
mcp-tester test --transport http --url http://localhost:3000/mcp
|
|
609
|
+
mcp-tester list-tools http://localhost:3000/mcp --json
|
|
610
|
+
mcp-tester call-tool echo http://localhost:3000/mcp --params '{"message":"Hi"}'
|
|
611
|
+
|
|
612
|
+
# SSE transport
|
|
613
|
+
mcp-tester test --transport sse --url http://localhost:3000/sse
|
|
614
|
+
|
|
615
|
+
# With custom headers
|
|
616
|
+
mcp-tester test --transport http --url https://api.example.com/mcp --headers '{"Authorization":"Bearer token"}'
|
|
617
|
+
|
|
618
|
+
# Generate tests and types (stdio)
|
|
619
|
+
mcp-tester generate node ./server.js -o server.test.ts
|
|
620
|
+
mcp-tester generate-types node ./server.js -o server.d.ts
|
|
621
|
+
|
|
622
|
+
Short aliases: lt (list-tools), ct (call-tool), rr (read-resource), gp (get-prompt), gen (generate)
|
|
303
623
|
`);
|
|
304
624
|
// Show help when invoked with no arguments
|
|
305
625
|
const args = process.argv.slice(2);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,qDAAqD;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAErC,kEAAkE;AAClE,OAAO;KACJ,MAAM,CAAC,oBAAoB,EAAE,iCAAiC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,uBAAuB,CAAC;KAChD,MAAM,CAAC,yBAAyB,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;AAElF,yDAAyD;AACzD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,QAAQ,CAAC,WAAW,EAAE,wDAAwD,CAAC;KAC/E,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAc,EAAE,IAA6B,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACrD,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,CAI9D;KACZ,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,MAAM,CAAC,KAAK,CAAC;YACjB,OAAO;YACP,IAAI;SACL,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAE1C,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,aAAa,KAAK,CAAC,MAAM,iBAAiB,SAAS,CAAC,MAAM,eAAe,OAAO,CAAC,MAAM,EAAE,CAC1F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,qBAAqB;AACrB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,8CAA8C,CAAC;KAC3D,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACtD,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAc,EAAE,IAA6B,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC7C,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC;YACzD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,oBAAoB;AACpB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACnD,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACtD,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,QAAgB,EAChB,OAAe,EACf,UAAoB,EACpB,IAA6B,EAC7B,EAAE;IACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC7C,CAAC,CAAC;IAEH,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,wBAAwB;AACxB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;KAChD,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACtD,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EAAE,GAAW,EAAE,OAAe,EAAE,UAAoB,EAAE,IAA6B,EAAE,EAAE;IAC1F,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC7C,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC/B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,qBAAqB;AACrB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACxC,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACtD,QAAQ,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACzD,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;KAC1D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,UAAkB,EAClB,OAAe,EACf,UAAoB,EACpB,IAA6B,EAC7B,EAAE;IACF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACrD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAC7C,CAAC,CAAC;IAEH,IAAI,UAAU,GAA2B,EAAE,CAAC;IAE5C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE9D,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChC,IAAI,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,uEAAuE;AACvE,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;CASD,CACA,CAAC;AAEF,2CAA2C;AAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|