@slbdn/mcp-tester 1.4.0 → 1.4.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-tests.js","sourceRoot":"","sources":["../src/generate-tests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * TypeScript type generator — connects to an MCP server, reads tool schemas,
3
+ * and generates a `.d.ts` TypeScript declaration file with typed interfaces.
4
+ *
5
+ * @module generate-types
6
+ */
7
+ import { MCPClient } from './client/MCPClient.js';
8
+ /**
9
+ * Options for type generation.
10
+ */
11
+ export interface GenerateTypesOptions {
12
+ /** Command to run the MCP server. */
13
+ command: string;
14
+ /** Arguments for the server command. */
15
+ args?: string[];
16
+ /** Timeout in ms for connecting to the server. @defaultValue 30000 */
17
+ timeout?: number;
18
+ /** Include resource URI types. @defaultValue true */
19
+ includeResources?: boolean;
20
+ /** Include prompt argument types. @defaultValue true */
21
+ includePrompts?: boolean;
22
+ /** Module name for the import type. @defaultValue '@slbdn/mcp-tester' */
23
+ moduleName?: string;
24
+ }
25
+ type JsonSchema = Record<string, unknown>;
26
+ /**
27
+ * Convert a JSON Schema type to a TypeScript type string.
28
+ * Handles primitives, arrays, objects, enums, nullable, and compositions.
29
+ * Exported for unit testing.
30
+ */
31
+ export declare function schemaToType(schema: JsonSchema, indent?: number): string;
32
+ /**
33
+ * Emit TypeScript aliases for every `$ref`-referenced schema, resolved from the
34
+ * schema's `$defs` / `definitions`. Unresolved refs fall back to `unknown` so the
35
+ * generated file always type-checks instead of referencing undefined types.
36
+ */
37
+ export declare function generateRefTypes(schema: JsonSchema): string;
38
+ /** Escape a property name for use in TypeScript (quote if needed). Exported for testing. */
39
+ export declare function escapePropertyName(name: string): string;
40
+ /** Sanitize a tool/prompt name into a valid TypeScript identifier. Exported for testing. */
41
+ export declare function toTypeName(name: string): string;
42
+ /**
43
+ * Options for {@link generateTypesFromClient}.
44
+ */
45
+ export interface GenerateTypesFromClientOptions {
46
+ /** Module name for the import hint. @defaultValue '@slbdn/mcp-tester' */
47
+ moduleName?: string;
48
+ /** Include resource URI types. @defaultValue true */
49
+ includeResources?: boolean;
50
+ /** Include prompt argument types. @defaultValue true */
51
+ includePrompts?: boolean;
52
+ /** Human-readable label for the server, used only in the generated header. */
53
+ serverLabel?: string;
54
+ }
55
+ /**
56
+ * Generate TypeScript type declarations from an already-connected client.
57
+ *
58
+ * Unlike {@link generateTypes}, this supports any transport (stdio, HTTP, SSE)
59
+ * because the caller owns the connection.
60
+ *
61
+ * @param client - A connected MCPClient instance
62
+ * @param options - Generation options
63
+ * @returns The generated `.d.ts` file content
64
+ */
65
+ export declare function generateTypesFromClient(client: MCPClient, options?: GenerateTypesFromClientOptions): Promise<string>;
66
+ /**
67
+ * Connect to an MCP server, inspect tool schemas, and generate TypeScript type declarations.
68
+ *
69
+ * @returns The generated `.d.ts` file content
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * import { generateTypes } from '@slbdn/mcp-tester';
74
+ * import { writeFileSync } from 'fs';
75
+ *
76
+ * const types = await generateTypes({
77
+ * command: 'node',
78
+ * args: ['./my-server.js'],
79
+ * });
80
+ *
81
+ * writeFileSync('my-server-types.d.ts', types);
82
+ * ```
83
+ */
84
+ export declare function generateTypes(options: GenerateTypesOptions): Promise<string>;
85
+ export {};
86
+ //# sourceMappingURL=generate-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-types.d.ts","sourceRoot":"","sources":["../src/generate-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAMlD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAwE3E;AAmHD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA+B3D;AASD,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS/C;AA0ND;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBlF"}
@@ -0,0 +1,484 @@
1
+ /**
2
+ * TypeScript type generator — connects to an MCP server, reads tool schemas,
3
+ * and generates a `.d.ts` TypeScript declaration file with typed interfaces.
4
+ *
5
+ * @module generate-types
6
+ */
7
+ import { MCPClient } from './client/MCPClient.js';
8
+ import { getPackageVersion } from './utils/version.js';
9
+ /**
10
+ * Convert a JSON Schema type to a TypeScript type string.
11
+ * Handles primitives, arrays, objects, enums, nullable, and compositions.
12
+ * Exported for unit testing.
13
+ */
14
+ export function schemaToType(schema, indent = 0) {
15
+ // Handle enum
16
+ if (schema['enum'] && Array.isArray(schema['enum']) && schema['enum'].length > 0) {
17
+ return schema['enum']
18
+ .map((v) => (typeof v === 'string' ? `'${escapeString(v)}'` : String(v)))
19
+ .join(' | ');
20
+ }
21
+ // Handle oneOf / anyOf → union type
22
+ if (schema.oneOf && Array.isArray(schema.oneOf)) {
23
+ return schema.oneOf
24
+ .map((s) => wrapNullable(schemaToType(s, indent), s))
25
+ .join(' | ');
26
+ }
27
+ if (schema.anyOf && Array.isArray(schema.anyOf)) {
28
+ return schema.anyOf
29
+ .map((s) => wrapNullable(schemaToType(s, indent), s))
30
+ .join(' | ');
31
+ }
32
+ // Handle allOf → intersection
33
+ if (schema.allOf && Array.isArray(schema.allOf)) {
34
+ return schema.allOf.map((s) => schemaToType(s, indent)).join(' & ');
35
+ }
36
+ // Handle $ref
37
+ if (schema.$ref && typeof schema.$ref === 'string') {
38
+ return refToTypeName(schema.$ref);
39
+ }
40
+ const type = schema.type;
41
+ // Handle const
42
+ if (schema.const !== undefined) {
43
+ if (typeof schema.const === 'string')
44
+ return `'${escapeString(schema.const)}'`;
45
+ if (typeof schema.const === 'number' || typeof schema.const === 'boolean')
46
+ return String(schema.const);
47
+ return JSON.stringify(schema.const);
48
+ }
49
+ // No type — check if it has properties (implicit object)
50
+ if (!type) {
51
+ if (schema.properties)
52
+ return objectToType(schema, indent);
53
+ if (schema.additionalProperties) {
54
+ const valType = schemaToType(typeof schema.additionalProperties === 'object'
55
+ ? schema.additionalProperties
56
+ : {}, indent);
57
+ return `Record<string, ${valType}>`;
58
+ }
59
+ return 'unknown';
60
+ }
61
+ switch (type) {
62
+ case 'string':
63
+ return 'string';
64
+ case 'number':
65
+ case 'integer':
66
+ return 'number';
67
+ case 'boolean':
68
+ return 'boolean';
69
+ case 'null':
70
+ return 'null';
71
+ case 'array':
72
+ return arrayToType(schema, indent);
73
+ case 'object':
74
+ return objectToType(schema, indent);
75
+ default:
76
+ return 'unknown';
77
+ }
78
+ }
79
+ /**
80
+ * Generate an array type from a schema.
81
+ */
82
+ function arrayToType(schema, indent) {
83
+ if (schema.items && typeof schema.items === 'object' && !Array.isArray(schema.items)) {
84
+ const itemType = schemaToType(schema.items, indent);
85
+ // Wrap complex types in parens
86
+ if (itemType.includes('|') || itemType.includes('&') || itemType.includes('{')) {
87
+ return `Array<${itemType}>`;
88
+ }
89
+ return `${itemType}[]`;
90
+ }
91
+ if (Array.isArray(schema.items)) {
92
+ const types = schema.items.map((s) => schemaToType(s, indent));
93
+ return `[${types.join(', ')}]`;
94
+ }
95
+ return 'unknown[]';
96
+ }
97
+ /**
98
+ * Generate an object type from a schema.
99
+ */
100
+ function objectToType(schema, indent) {
101
+ const props = schema.properties;
102
+ const required = new Set(schema.required || []);
103
+ const pad = ' '.repeat(indent + 1);
104
+ const closePad = ' '.repeat(indent);
105
+ if (!props || Object.keys(props).length === 0) {
106
+ // Check additionalProperties
107
+ if (schema.additionalProperties) {
108
+ const valType = typeof schema.additionalProperties === 'object'
109
+ ? schemaToType(schema.additionalProperties, indent)
110
+ : 'unknown';
111
+ return `Record<string, ${valType}>`;
112
+ }
113
+ return 'Record<string, unknown>';
114
+ }
115
+ const lines = ['{'];
116
+ for (const [name, propSchema] of Object.entries(props)) {
117
+ const isRequired = required.has(name);
118
+ const tsType = schemaToType(propSchema, indent + 1);
119
+ const opt = isRequired ? '' : '?';
120
+ const desc = propSchema.description
121
+ ? `${pad}/** ${safeDoc(String(propSchema.description))} */\n`
122
+ : '';
123
+ lines.push(`${desc}${pad}${escapePropertyName(name)}${opt}: ${tsType};`);
124
+ }
125
+ lines.push(`${closePad}}`);
126
+ return lines.join('\n');
127
+ }
128
+ /**
129
+ * Wrap a type in `null` union if the schema is nullable.
130
+ */
131
+ function wrapNullable(tsType, schema) {
132
+ if (schema.type && schema.type !== 'null')
133
+ return tsType;
134
+ // JSON Schema nullable conventions
135
+ if (schema.nullable === true)
136
+ return `${tsType} | null`;
137
+ return tsType;
138
+ }
139
+ /**
140
+ * Convert a $ref path like "#/definitions/MyType" to "MyType".
141
+ */
142
+ function refToTypeName(ref) {
143
+ const parts = ref.split('/');
144
+ return parts[parts.length - 1];
145
+ }
146
+ /** Neutralise comment terminators inside generated JSDoc blocks. */
147
+ function safeDoc(text) {
148
+ return text.replace(/\*\//g, '*\\/');
149
+ }
150
+ /**
151
+ * Collect JSON Schema definitions from `$defs` / `definitions`.
152
+ */
153
+ function collectDefinitions(schema) {
154
+ const defs = new Map();
155
+ for (const key of ['$defs', 'definitions']) {
156
+ const bag = schema[key];
157
+ if (bag && typeof bag === 'object' && !Array.isArray(bag)) {
158
+ for (const [name, def] of Object.entries(bag)) {
159
+ if (def && typeof def === 'object')
160
+ defs.set(name, def);
161
+ }
162
+ }
163
+ }
164
+ return defs;
165
+ }
166
+ /**
167
+ * Recursively collect every `$ref` target name found in a schema.
168
+ */
169
+ function collectRefs(schema, refs, seen) {
170
+ if (!schema || typeof schema !== 'object')
171
+ return;
172
+ if (seen.has(schema))
173
+ return;
174
+ seen.add(schema);
175
+ if (Array.isArray(schema)) {
176
+ for (const item of schema)
177
+ collectRefs(item, refs, seen);
178
+ return;
179
+ }
180
+ const obj = schema;
181
+ if (typeof obj.$ref === 'string')
182
+ refs.add(refToTypeName(obj.$ref));
183
+ for (const value of Object.values(obj))
184
+ collectRefs(value, refs, seen);
185
+ }
186
+ /**
187
+ * Emit TypeScript aliases for every `$ref`-referenced schema, resolved from the
188
+ * schema's `$defs` / `definitions`. Unresolved refs fall back to `unknown` so the
189
+ * generated file always type-checks instead of referencing undefined types.
190
+ */
191
+ export function generateRefTypes(schema) {
192
+ const defs = collectDefinitions(schema);
193
+ const queue = [];
194
+ const seenRefs = new Set();
195
+ const enqueueFrom = (source) => {
196
+ const refs = new Set();
197
+ collectRefs(source, refs, new WeakSet());
198
+ for (const name of refs) {
199
+ if (!seenRefs.has(name)) {
200
+ seenRefs.add(name);
201
+ queue.push(name);
202
+ }
203
+ }
204
+ };
205
+ enqueueFrom(schema);
206
+ const lines = [];
207
+ while (queue.length > 0) {
208
+ const name = queue.shift();
209
+ const def = defs.get(name);
210
+ if (def) {
211
+ lines.push(`export type ${name} = ${schemaToType(def, 0)};`);
212
+ enqueueFrom(def);
213
+ }
214
+ else {
215
+ lines.push(`export type ${name} = unknown; // unresolved $ref`);
216
+ }
217
+ }
218
+ return lines.join('\n');
219
+ }
220
+ /**
221
+ * Escape a string for use in a TypeScript string literal.
222
+ */
223
+ function escapeString(s) {
224
+ return s.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
225
+ }
226
+ /** Escape a property name for use in TypeScript (quote if needed). Exported for testing. */
227
+ export function escapePropertyName(name) {
228
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name))
229
+ return name;
230
+ return `'${escapeString(name)}'`;
231
+ }
232
+ /** Sanitize a tool/prompt name into a valid TypeScript identifier. Exported for testing. */
233
+ export function toTypeName(name) {
234
+ // Split on non-alphanumeric, capitalize each segment
235
+ const parts = name.split(/[^a-zA-Z0-9]+/).filter(Boolean);
236
+ return parts
237
+ .map((p) => {
238
+ const lower = p.toLowerCase();
239
+ return lower.charAt(0).toUpperCase() + lower.slice(1);
240
+ })
241
+ .join('');
242
+ }
243
+ // ─── Type File Generation ───────────────────────────────────────────
244
+ /**
245
+ * Generate TypeScript interfaces for a single tool.
246
+ */
247
+ function generateToolInterface(tool) {
248
+ const typeName = toTypeName(tool.name);
249
+ const desc = tool.description ? `/** ${safeDoc(tool.description)} */\n` : '';
250
+ const schema = tool.inputSchema;
251
+ // If the schema has properties, generate an interface; otherwise unknown
252
+ if (schema && schema.properties && typeof schema.properties === 'object') {
253
+ const tsType = schemaToType(schema, 0);
254
+ const refTypes = generateRefTypes(schema);
255
+ const suffix = refTypes ? `\n${refTypes}` : '';
256
+ return `${desc}export interface ${typeName}Args ${tsType}${suffix}`;
257
+ }
258
+ return `${desc}export type ${typeName}Args = Record<string, unknown>`;
259
+ }
260
+ /**
261
+ * Generate a ToolInfo interface for a tool (name + arguments type).
262
+ */
263
+ function generateToolInfoType(tool) {
264
+ const typeName = toTypeName(tool.name);
265
+ return ` | { name: '${escapeString(tool.name)}'; arguments: ${typeName}Args }`;
266
+ }
267
+ /**
268
+ * Generate type for a resource.
269
+ */
270
+ function generateResourceType(resource) {
271
+ const desc = resource.description ? ` /** ${safeDoc(resource.description)} */` : '';
272
+ return ` | '${escapeString(resource.uri)}'${desc}`;
273
+ }
274
+ /**
275
+ * Generate type for a prompt's arguments.
276
+ */
277
+ function generatePromptType(prompt) {
278
+ const typeName = toTypeName(prompt.name);
279
+ const desc = prompt.description ? `/** ${safeDoc(prompt.description)} */\n` : '';
280
+ if (!prompt.arguments || !Array.isArray(prompt.arguments) || prompt.arguments.length === 0) {
281
+ return `${desc}export type ${typeName}Args = Record<string, never>`;
282
+ }
283
+ const lines = ['{'];
284
+ for (const arg of prompt.arguments) {
285
+ const opt = arg.required ? '' : '?';
286
+ const argDesc = arg.description ? ` /** ${safeDoc(arg.description)} */` : '';
287
+ lines.push(` ${escapePropertyName(arg.name)}${opt}: string;${argDesc}`);
288
+ }
289
+ lines.push('}');
290
+ return `${desc}export interface ${typeName}Args ${lines.join('\n')}`;
291
+ }
292
+ /**
293
+ * Generate prompt info type.
294
+ */
295
+ function generatePromptInfoType(prompt) {
296
+ const typeName = toTypeName(prompt.name);
297
+ return ` | { name: '${escapeString(prompt.name)}'; arguments: ${typeName}Args }`;
298
+ }
299
+ /**
300
+ * Build the complete type declaration file.
301
+ */
302
+ function buildTypeFile(tools, resources, prompts, options) {
303
+ const moduleName = options.moduleName || '@slbdn/mcp-tester';
304
+ const includeResources = options.includeResources !== false;
305
+ const includePrompts = options.includePrompts !== false;
306
+ const includeTools = tools.length > 0;
307
+ const sections = [];
308
+ // Header
309
+ sections.push('/**');
310
+ sections.push(` * TypeScript types generated from MCP server.`);
311
+ sections.push(` *`);
312
+ sections.push(` * Server: ${options.command}${options.args ? ' ' + options.args.join(' ') : ''}`);
313
+ sections.push(` * Tools: ${tools.length} | Resources: ${resources.length} | Prompts: ${prompts.length}`);
314
+ sections.push(` *`);
315
+ sections.push(` * Generated by @slbdn/mcp-tester v${getPackageVersion()}`);
316
+ sections.push(` * Re-generate: npx mcp-tester generate-types -- ${options.command}${options.args ? ' ' + options.args.join(' ') : ''}`);
317
+ sections.push(' */');
318
+ sections.push('');
319
+ // Tool argument interfaces
320
+ if (includeTools) {
321
+ sections.push('// ─── Tool Argument Types ─────────────────────────────────────────');
322
+ sections.push('');
323
+ for (const tool of tools) {
324
+ sections.push(generateToolInterface(tool));
325
+ sections.push('');
326
+ }
327
+ // Tool name union
328
+ sections.push('/** Union of all tool names */');
329
+ sections.push(`export type ToolName = ${tools.map((t) => `'${escapeString(t.name)}'`).join(' | ')};`);
330
+ sections.push('');
331
+ // Arguments lookup type
332
+ sections.push('/** Look up the argument type for a tool by name */');
333
+ sections.push('export interface ToolArgsMap {');
334
+ for (const tool of tools) {
335
+ sections.push(` '${escapeString(tool.name)}': ${toTypeName(tool.name)}Args;`);
336
+ }
337
+ sections.push('}');
338
+ sections.push('');
339
+ // Typed callTool overload helper
340
+ sections.push('/**');
341
+ sections.push(' * Typed tool call — use with callTool():');
342
+ sections.push(' *');
343
+ sections.push(` * import { MCPClient } from '${moduleName}';`);
344
+ sections.push(` * import type { ToolArgsMap, ToolName } from './server-types.js';`);
345
+ sections.push(' *');
346
+ sections.push(' * const result = await client.callTool({');
347
+ sections.push(" * name: 'add',");
348
+ sections.push(" * arguments: { a: 1, b: 2 } as ToolArgsMap['add'],");
349
+ sections.push(' * });');
350
+ sections.push(' */');
351
+ // ToolInfo discriminated union
352
+ sections.push('export type ToolCall =');
353
+ for (const tool of tools) {
354
+ sections.push(generateToolInfoType(tool));
355
+ }
356
+ sections.push(';');
357
+ sections.push('');
358
+ }
359
+ // Resource URI types
360
+ if (includeResources && resources.length > 0) {
361
+ sections.push('// ─── Resource URI Types ─────────────────────────────────────────');
362
+ sections.push('');
363
+ sections.push('/** Union of all resource URIs */');
364
+ sections.push('export type ResourceUri =');
365
+ for (const resource of resources) {
366
+ sections.push(generateResourceType(resource));
367
+ }
368
+ sections.push(';');
369
+ sections.push('');
370
+ }
371
+ // Prompt argument types
372
+ if (includePrompts && prompts.length > 0) {
373
+ sections.push('// ─── Prompt Argument Types ────────────────────────────────────────');
374
+ sections.push('');
375
+ for (const prompt of prompts) {
376
+ sections.push(generatePromptType(prompt));
377
+ sections.push('');
378
+ }
379
+ // Prompt name union
380
+ sections.push('/** Union of all prompt names */');
381
+ sections.push(`export type PromptName = ${prompts.map((p) => `'${escapeString(p.name)}'`).join(' | ')};`);
382
+ sections.push('');
383
+ // Prompt args lookup
384
+ sections.push('/** Look up the argument type for a prompt by name */');
385
+ sections.push('export interface PromptArgsMap {');
386
+ for (const prompt of prompts) {
387
+ sections.push(` '${escapeString(prompt.name)}': ${toTypeName(prompt.name)}Args;`);
388
+ }
389
+ sections.push('}');
390
+ sections.push('');
391
+ // PromptCall discriminated union
392
+ sections.push('export type PromptCall =');
393
+ for (const prompt of prompts) {
394
+ sections.push(generatePromptInfoType(prompt));
395
+ }
396
+ sections.push(';');
397
+ sections.push('');
398
+ }
399
+ // Server overview interface
400
+ sections.push('// ─── Server Overview ─────────────────────────────────────────────');
401
+ sections.push('');
402
+ sections.push('/**');
403
+ sections.push(' * Typed overview of the MCP server capabilities.');
404
+ sections.push(' * Useful for runtime type checking and IDE autocomplete.');
405
+ sections.push(' */');
406
+ sections.push('export interface ServerCapabilities {');
407
+ if (includeTools) {
408
+ sections.push(` tools: ToolName[];`);
409
+ }
410
+ if (includeResources && resources.length > 0) {
411
+ sections.push(` resources: ResourceUri[];`);
412
+ }
413
+ if (includePrompts && prompts.length > 0) {
414
+ sections.push(` prompts: PromptName[];`);
415
+ }
416
+ sections.push('}');
417
+ sections.push('');
418
+ return sections.join('\n');
419
+ }
420
+ /**
421
+ * Generate TypeScript type declarations from an already-connected client.
422
+ *
423
+ * Unlike {@link generateTypes}, this supports any transport (stdio, HTTP, SSE)
424
+ * because the caller owns the connection.
425
+ *
426
+ * @param client - A connected MCPClient instance
427
+ * @param options - Generation options
428
+ * @returns The generated `.d.ts` file content
429
+ */
430
+ export async function generateTypesFromClient(client, options = {}) {
431
+ const [tools, resources, prompts] = await Promise.all([
432
+ client.listTools(),
433
+ options.includeResources === false ? Promise.resolve([]) : client.listResources(),
434
+ options.includePrompts === false ? Promise.resolve([]) : client.listPrompts(),
435
+ ]);
436
+ return buildTypeFile(tools, resources, prompts, {
437
+ command: options.serverLabel || 'remote server',
438
+ moduleName: options.moduleName,
439
+ includeResources: options.includeResources,
440
+ includePrompts: options.includePrompts,
441
+ });
442
+ }
443
+ /**
444
+ * Connect to an MCP server, inspect tool schemas, and generate TypeScript type declarations.
445
+ *
446
+ * @returns The generated `.d.ts` file content
447
+ *
448
+ * @example
449
+ * ```typescript
450
+ * import { generateTypes } from '@slbdn/mcp-tester';
451
+ * import { writeFileSync } from 'fs';
452
+ *
453
+ * const types = await generateTypes({
454
+ * command: 'node',
455
+ * args: ['./my-server.js'],
456
+ * });
457
+ *
458
+ * writeFileSync('my-server-types.d.ts', types);
459
+ * ```
460
+ */
461
+ export async function generateTypes(options) {
462
+ const client = new MCPClient({
463
+ name: 'mcp-tester-gen-types',
464
+ version: '1.0.0',
465
+ timeout: options.timeout || 30000,
466
+ logLevel: 'none',
467
+ });
468
+ try {
469
+ await client.start({
470
+ command: options.command,
471
+ args: options.args,
472
+ });
473
+ return await generateTypesFromClient(client, {
474
+ moduleName: options.moduleName,
475
+ includeResources: options.includeResources,
476
+ includePrompts: options.includePrompts,
477
+ serverLabel: `${options.command}${options.args ? ' ' + options.args.join(' ') : ''}`,
478
+ });
479
+ }
480
+ finally {
481
+ await client.stop();
482
+ }
483
+ }
484
+ //# sourceMappingURL=generate-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-types.js","sourceRoot":"","sources":["../src/generate-types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -29,6 +29,7 @@
29
29
  export { MCPClient, type ServerConfig, type StdioServerConfig, type StreamableHttpServerConfig, type SseServerConfig,
30
30
  /** @deprecated Use StdioServerConfig */
31
31
  type MCPServerConfig, type MCPClientOptions, type ToolCallOptions, type NotificationHandler, type RetryOptions, type HealthStatus, type HealthMonitorOptions, } from './client/index.js';
32
+ export type { TransportType } from './utils/validation.js';
32
33
  export { MCPClientError, MCPTimeoutError, MCPConnectionError, MCPNotStartedError, MCPAlreadyStartedError, MCPServerError, } from './utils/errors.js';
33
34
  export type { Logger, LoggerOptions, LogLevel } from './utils/logger.js';
34
35
  export { startTimer, prettyPrint } from './utils/logger.js';
@@ -37,8 +38,9 @@ export type { SecretPattern } from './utils/masking.js';
37
38
  export * as assert from './assert.js';
38
39
  export { AssertionError } from './assert.js';
39
40
  export { toHaveTool, toHaveResource, toHavePrompt, toHaveToolWithSchema, toHaveToolCount, toHaveResourceCount, toHavePromptCount, toHaveResourceByName, toHavePromptWithArgs, toReturnText, toReturnTextContaining, toReturnError, toReturnOk, toReturnJson, toReturnContentCount, toReturnImage, toReturnResourceText, toReturnResourceTextContaining, toReturnPromptTextContaining, toReturnPromptMessageCount, setupJestMatchers, setupVitestMatchers, setupCustomMatchers, assertToolText, assertToolTextContains, assertHasTool, assertHasResource, assertHasPrompt, } from './matchers.js';
40
- export { generateTests } from './generate-tests.js';
41
- export type { GenerateTestOptions } from './generate-tests.js';
42
- export { generateTypes } from './generate-types.js';
43
- export type { GenerateTypesOptions } from './generate-types.js';
41
+ export { generateTests, generateTestsFromClient } from './generate-tests.js';
42
+ export type { GenerateTestOptions, GenerateTestsFromClientOptions } from './generate-tests.js';
43
+ export { generateTypes, generateTypesFromClient } from './generate-types.js';
44
+ export type { GenerateTypesOptions, GenerateTypesFromClientOptions } from './generate-types.js';
45
+ export { getPackageVersion } from './utils/version.js';
44
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,eAAe;AACpB,wCAAwC;AACxC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,eAAe;AACpB,wCAAwC;AACxC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,YAAY,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}