@orval/mcp 7.11.2 → 7.12.2
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/dist/index.d.ts +6 -4
- package/dist/index.js +207 -314
- package/dist/index.js.map +1 -1
- package/package.json +25 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { ClientGeneratorsBuilder, ClientHeaderBuilder,
|
|
1
|
+
import { ClientBuilder, ClientExtraFilesBuilder, ClientGeneratorsBuilder, ClientHeaderBuilder, ContextSpecs, GeneratorVerbOptions, NormalizedOutputOptions } from "@orval/core";
|
|
2
2
|
|
|
3
|
+
//#region src/index.d.ts
|
|
3
4
|
declare const getMcpHeader: ClientHeaderBuilder;
|
|
4
5
|
declare const generateMcp: ClientBuilder;
|
|
5
6
|
declare const generateServer: (verbOptions: Record<string, GeneratorVerbOptions>, output: NormalizedOutputOptions, context: ContextSpecs) => Promise<{
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
content: string;
|
|
8
|
+
path: string;
|
|
8
9
|
}[]>;
|
|
9
10
|
declare const generateExtraFiles: ClientExtraFilesBuilder;
|
|
10
11
|
declare const builder: () => () => ClientGeneratorsBuilder;
|
|
11
|
-
|
|
12
|
+
//#endregion
|
|
12
13
|
export { builder, builder as default, generateExtraFiles, generateMcp, generateServer, getMcpHeader };
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,131 +1,90 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
//#region rolldown:runtime
|
|
3
|
+
var __create = Object.create;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
3
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
9
|
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
13
|
+
get: ((k) => from[k]).bind(null, key),
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
17
18
|
};
|
|
18
|
-
var
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
20
|
+
value: mod,
|
|
21
|
+
enumerable: true
|
|
22
|
+
}) : target, mod));
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var getHeader = (option, info) => {
|
|
35
|
-
if (!option) {
|
|
36
|
-
return "";
|
|
37
|
-
}
|
|
38
|
-
const header = option(info);
|
|
39
|
-
return Array.isArray(header) ? (0, import_core.jsDoc)({ description: header }) : header;
|
|
24
|
+
//#endregion
|
|
25
|
+
let __orval_core = require("@orval/core");
|
|
26
|
+
__orval_core = __toESM(__orval_core);
|
|
27
|
+
let __orval_fetch = require("@orval/fetch");
|
|
28
|
+
__orval_fetch = __toESM(__orval_fetch);
|
|
29
|
+
let __orval_zod = require("@orval/zod");
|
|
30
|
+
__orval_zod = __toESM(__orval_zod);
|
|
31
|
+
require("openapi3-ts/oas30");
|
|
32
|
+
|
|
33
|
+
//#region src/index.ts
|
|
34
|
+
const getHeader = (option, info) => {
|
|
35
|
+
if (!option) return "";
|
|
36
|
+
const header = option(info);
|
|
37
|
+
return Array.isArray(header) ? (0, __orval_core.jsDoc)({ description: header }) : header;
|
|
40
38
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (verbOption.body.definition) {
|
|
56
|
-
imports.push(`${pascalOperationName}Body`);
|
|
57
|
-
}
|
|
58
|
-
return imports;
|
|
59
|
-
}).reduce((acc, name) => {
|
|
60
|
-
if (!acc.find((i) => i === name)) {
|
|
61
|
-
acc.push(name);
|
|
62
|
-
}
|
|
63
|
-
return acc;
|
|
64
|
-
}, []);
|
|
65
|
-
const importSchemasImplementation = `import {
|
|
66
|
-
${importSchemaNames.join(
|
|
67
|
-
",\n "
|
|
68
|
-
)}
|
|
69
|
-
} from '${relativeSchemaImportPath}';
|
|
39
|
+
const getMcpHeader = ({ verbOptions, output, clientImplementation }) => {
|
|
40
|
+
const targetInfo = (0, __orval_core.getFileInfo)(output.target);
|
|
41
|
+
const schemaInfo = (0, __orval_core.getFileInfo)(output.schemas);
|
|
42
|
+
const relativeSchemaImportPath = output.schemas ? __orval_core.upath.relativeSafe(targetInfo.dirname, schemaInfo.dirname) : "./" + targetInfo.filename + ".schemas";
|
|
43
|
+
const importSchemasImplementation = `import {\n ${Object.values(verbOptions).flatMap((verbOption) => {
|
|
44
|
+
const imports = [];
|
|
45
|
+
const pascalOperationName = (0, __orval_core.pascal)(verbOption.operationName);
|
|
46
|
+
if (verbOption.queryParams) imports.push(`${pascalOperationName}Params`);
|
|
47
|
+
if (verbOption.body.definition) imports.push(`${pascalOperationName}Body`);
|
|
48
|
+
return imports;
|
|
49
|
+
}).reduce((acc, name) => {
|
|
50
|
+
if (!acc.find((i) => i === name)) acc.push(name);
|
|
51
|
+
return acc;
|
|
52
|
+
}, []).join(",\n ")}\n} from '${relativeSchemaImportPath}';
|
|
70
53
|
`;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
return acc;
|
|
77
|
-
}, []);
|
|
78
|
-
const importFetchClientImplementation = `import {
|
|
79
|
-
${importFetchClientNames.join(
|
|
80
|
-
",\n "
|
|
81
|
-
)}
|
|
82
|
-
} from '${relativeFetchClientPath}';
|
|
54
|
+
const importFetchClientImplementation = `import {\n ${Object.values(verbOptions).flatMap((verbOption) => verbOption.operationName).reduce((acc, name) => {
|
|
55
|
+
if (!acc.find((i) => i === name)) acc.push(name);
|
|
56
|
+
return acc;
|
|
57
|
+
}, []).join(",\n ")}\n} from './http-client';
|
|
83
58
|
`;
|
|
84
|
-
|
|
85
|
-
importSchemasImplementation,
|
|
86
|
-
importFetchClientImplementation
|
|
87
|
-
].join("\n");
|
|
88
|
-
return content + "\n";
|
|
59
|
+
return [importSchemasImplementation, importFetchClientImplementation].join("\n") + "\n";
|
|
89
60
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
${
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (verbOptions.queryParams) {
|
|
103
|
-
handlerArgsTypes.push(
|
|
104
|
-
` queryParams: ${verbOptions.queryParams.schema.name};`
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
if (verbOptions.body.definition) {
|
|
108
|
-
handlerArgsTypes.push(` bodyParams: ${verbOptions.body.definition};`);
|
|
109
|
-
}
|
|
110
|
-
const handlerArgsName = `${verbOptions.operationName}Args`;
|
|
111
|
-
const handlerArgsImplementation = handlerArgsTypes.length ? `
|
|
61
|
+
const generateMcp = async (verbOptions, options) => {
|
|
62
|
+
const handlerArgsTypes = [];
|
|
63
|
+
const pathParamsType = verbOptions.params.map((param) => {
|
|
64
|
+
const paramName = param.name.split(": ")[0];
|
|
65
|
+
const paramType = param.implementation.split(": ")[1];
|
|
66
|
+
return ` ${paramName}: ${paramType}`;
|
|
67
|
+
}).join(",\n");
|
|
68
|
+
if (pathParamsType) handlerArgsTypes.push(` pathParams: {\n${pathParamsType}\n };`);
|
|
69
|
+
if (verbOptions.queryParams) handlerArgsTypes.push(` queryParams: ${verbOptions.queryParams.schema.name};`);
|
|
70
|
+
if (verbOptions.body.definition) handlerArgsTypes.push(` bodyParams: ${verbOptions.body.definition};`);
|
|
71
|
+
const handlerArgsName = `${verbOptions.operationName}Args`;
|
|
72
|
+
const handlerArgsImplementation = handlerArgsTypes.length > 0 ? `
|
|
112
73
|
export type ${handlerArgsName} = {
|
|
113
74
|
${handlerArgsTypes.join("\n")}
|
|
114
75
|
}
|
|
115
76
|
` : "";
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const handlerImplementation = `
|
|
128
|
-
export const ${handlerName} = async (${handlerArgsTypes.length ? `args: ${handlerArgsName}` : ""}) => {
|
|
77
|
+
const fetchParams = [];
|
|
78
|
+
if (verbOptions.params.length > 0) {
|
|
79
|
+
const pathParamsArgs = verbOptions.params.map((param) => {
|
|
80
|
+
return `args.pathParams.${param.name.split(": ")[0]}`;
|
|
81
|
+
}).join(", ");
|
|
82
|
+
fetchParams.push(pathParamsArgs);
|
|
83
|
+
}
|
|
84
|
+
if (verbOptions.body.definition) fetchParams.push(`args.bodyParams`);
|
|
85
|
+
if (verbOptions.queryParams) fetchParams.push(`args.queryParams`);
|
|
86
|
+
const handlerImplementation = `
|
|
87
|
+
export const ${`${verbOptions.operationName}Handler`} = async (${handlerArgsTypes.length > 0 ? `args: ${handlerArgsName}` : ""}) => {
|
|
129
88
|
const res = await ${verbOptions.operationName}(${fetchParams.join(", ")});
|
|
130
89
|
|
|
131
90
|
return {
|
|
@@ -137,68 +96,42 @@ export const ${handlerName} = async (${handlerArgsTypes.length ? `args: ${handle
|
|
|
137
96
|
],
|
|
138
97
|
};
|
|
139
98
|
};`;
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
implementation: handlersImplementation ? `${handlersImplementation}
|
|
146
|
-
` : "",
|
|
147
|
-
imports: []
|
|
148
|
-
};
|
|
99
|
+
const handlersImplementation = [handlerArgsImplementation, handlerImplementation].join("");
|
|
100
|
+
return {
|
|
101
|
+
implementation: handlersImplementation ? `${handlersImplementation}\n` : "",
|
|
102
|
+
imports: []
|
|
103
|
+
};
|
|
149
104
|
};
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (verbOption.queryParams)
|
|
162
|
-
imputSchemaTypes.push(
|
|
163
|
-
` queryParams: ${verbOption.operationName}QueryParams`
|
|
164
|
-
);
|
|
165
|
-
if (verbOption.body.definition)
|
|
166
|
-
imputSchemaTypes.push(` bodyParams: ${verbOption.operationName}Body`);
|
|
167
|
-
const imputSchemaImplementation = imputSchemaTypes.length ? ` {
|
|
105
|
+
const generateServer = async (verbOptions, output, context) => {
|
|
106
|
+
const info = context.specs[context.specKey].info;
|
|
107
|
+
const { extension, dirname } = (0, __orval_core.getFileInfo)(output.target);
|
|
108
|
+
const serverPath = __orval_core.upath.join(dirname, `server${extension}`);
|
|
109
|
+
const header = getHeader(output.override.header, info);
|
|
110
|
+
const toolImplementations = Object.values(verbOptions).map((verbOption) => {
|
|
111
|
+
const imputSchemaTypes = [];
|
|
112
|
+
if (verbOption.params.length > 0) imputSchemaTypes.push(` pathParams: ${verbOption.operationName}Params`);
|
|
113
|
+
if (verbOption.queryParams) imputSchemaTypes.push(` queryParams: ${verbOption.operationName}QueryParams`);
|
|
114
|
+
if (verbOption.body.definition) imputSchemaTypes.push(` bodyParams: ${verbOption.operationName}Body`);
|
|
115
|
+
const imputSchemaImplementation = imputSchemaTypes.length > 0 ? ` {
|
|
168
116
|
${imputSchemaTypes.join(",\n ")}
|
|
169
117
|
},` : "";
|
|
170
|
-
|
|
118
|
+
return `
|
|
171
119
|
server.tool(
|
|
172
120
|
'${verbOption.operationName}',
|
|
173
|
-
'${verbOption.summary}',${imputSchemaImplementation ? `
|
|
174
|
-
${imputSchemaImplementation}` : ""}
|
|
121
|
+
'${verbOption.summary}',${imputSchemaImplementation ? `\n${imputSchemaImplementation}` : ""}
|
|
175
122
|
${verbOption.operationName}Handler
|
|
176
123
|
);`;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
imports.push(` ${verbOption.operationName}Body`);
|
|
189
|
-
return imports;
|
|
190
|
-
}).join(",\n");
|
|
191
|
-
const importToolSchemasImplementation = `import {
|
|
192
|
-
${importToolSchemas}
|
|
193
|
-
} from './tool-schemas.zod';`;
|
|
194
|
-
const importHandlers = Object.values(verbOptions).filter(
|
|
195
|
-
(verbOption) => toolImplementations.includes(`${verbOption.operationName}Handler`)
|
|
196
|
-
).map((verbOption) => ` ${verbOption.operationName}Handler`).join(`,
|
|
197
|
-
`);
|
|
198
|
-
const importHandlersImplementation = `import {
|
|
199
|
-
${importHandlers}
|
|
200
|
-
} from './handlers';`;
|
|
201
|
-
const importDependenciesImplementation = `import {
|
|
124
|
+
}).join("\n");
|
|
125
|
+
const importToolSchemasImplementation = `import {\n${Object.values(verbOptions).flatMap((verbOption) => {
|
|
126
|
+
const imports = [];
|
|
127
|
+
if (verbOption.headers) imports.push(` ${verbOption.operationName}Header`);
|
|
128
|
+
if (verbOption.params.length > 0) imports.push(` ${verbOption.operationName}Params`);
|
|
129
|
+
if (verbOption.queryParams) imports.push(` ${verbOption.operationName}QueryParams`);
|
|
130
|
+
if (verbOption.body.definition) imports.push(` ${verbOption.operationName}Body`);
|
|
131
|
+
return imports;
|
|
132
|
+
}).join(",\n")}\n} from './tool-schemas.zod';`;
|
|
133
|
+
const importHandlersImplementation = `import {\n${Object.values(verbOptions).filter((verbOption) => toolImplementations.includes(`${verbOption.operationName}Handler`)).map((verbOption) => ` ${verbOption.operationName}Handler`).join(`,\n`)}\n} from './handlers';`;
|
|
134
|
+
const importDependenciesImplementation = `import {
|
|
202
135
|
McpServer
|
|
203
136
|
} from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
204
137
|
|
|
@@ -206,164 +139,124 @@ import {
|
|
|
206
139
|
StdioServerTransport
|
|
207
140
|
} from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
208
141
|
`;
|
|
209
|
-
|
|
142
|
+
const newMcpServerImplementation = `
|
|
210
143
|
const server = new McpServer({
|
|
211
|
-
name: '${(0,
|
|
144
|
+
name: '${(0, __orval_core.camel)(info.title)}Server',
|
|
212
145
|
version: '1.0.0',
|
|
213
146
|
});
|
|
214
147
|
`;
|
|
215
|
-
|
|
148
|
+
return [{
|
|
149
|
+
content: [
|
|
150
|
+
header,
|
|
151
|
+
importDependenciesImplementation,
|
|
152
|
+
importHandlersImplementation,
|
|
153
|
+
importToolSchemasImplementation,
|
|
154
|
+
newMcpServerImplementation,
|
|
155
|
+
toolImplementations,
|
|
156
|
+
`
|
|
216
157
|
const transport = new StdioServerTransport();
|
|
217
158
|
|
|
218
159
|
server.connect(transport).then(() => {
|
|
219
160
|
console.error('MCP server running on stdio');
|
|
220
161
|
}).catch(console.error);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
importHandlersImplementation,
|
|
226
|
-
importToolSchemasImplementation,
|
|
227
|
-
newMcpServerImplementation,
|
|
228
|
-
toolImplementations,
|
|
229
|
-
serverConnectImplementation
|
|
230
|
-
].join("\n");
|
|
231
|
-
return [
|
|
232
|
-
{
|
|
233
|
-
content,
|
|
234
|
-
path: serverPath
|
|
235
|
-
}
|
|
236
|
-
];
|
|
162
|
+
`
|
|
163
|
+
].join("\n"),
|
|
164
|
+
path: serverPath
|
|
165
|
+
}];
|
|
237
166
|
};
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
(acc, z) => {
|
|
262
|
-
var _a;
|
|
263
|
-
((_a = z.mutators) != null ? _a : []).forEach((mutator) => {
|
|
264
|
-
acc[mutator.name] = mutator;
|
|
265
|
-
});
|
|
266
|
-
return acc;
|
|
267
|
-
},
|
|
268
|
-
{}
|
|
269
|
-
);
|
|
270
|
-
const mutatorsImports = (0, import_core.generateMutatorImports)({
|
|
271
|
-
mutators: Object.values(allMutators)
|
|
272
|
-
});
|
|
273
|
-
let content = `${header}import { z as zod } from 'zod';
|
|
274
|
-
${mutatorsImports}
|
|
275
|
-
`;
|
|
276
|
-
const zodPath = import_core.upath.join(dirname, `tool-schemas.zod${extension}`);
|
|
277
|
-
content += zods.map((zod) => zod.implementation).join("\n");
|
|
278
|
-
return [
|
|
279
|
-
{
|
|
280
|
-
content,
|
|
281
|
-
path: zodPath
|
|
282
|
-
}
|
|
283
|
-
];
|
|
167
|
+
const generateZodFiles = async (verbOptions, output, context) => {
|
|
168
|
+
const { extension, dirname, filename } = (0, __orval_core.getFileInfo)(output.target);
|
|
169
|
+
const header = getHeader(output.override.header, context.specs[context.specKey].info);
|
|
170
|
+
const zods = await Promise.all(Object.values(verbOptions).map((verbOption) => (0, __orval_zod.generateZod)(verbOption, {
|
|
171
|
+
route: verbOption.route,
|
|
172
|
+
pathRoute: verbOption.pathRoute,
|
|
173
|
+
override: output.override,
|
|
174
|
+
context,
|
|
175
|
+
mock: output.mock,
|
|
176
|
+
output: output.target
|
|
177
|
+
}, output.client)));
|
|
178
|
+
const allMutators = zods.reduce((acc, z) => {
|
|
179
|
+
for (const mutator of z.mutators ?? []) acc[mutator.name] = mutator;
|
|
180
|
+
return acc;
|
|
181
|
+
}, {});
|
|
182
|
+
const mutatorsImports = (0, __orval_core.generateMutatorImports)({ mutators: Object.values(allMutators) });
|
|
183
|
+
let content = `${header}import { z as zod } from 'zod';\n${mutatorsImports}\n`;
|
|
184
|
+
const zodPath = __orval_core.upath.join(dirname, `tool-schemas.zod${extension}`);
|
|
185
|
+
content += zods.map((zod) => zod.implementation).join("\n");
|
|
186
|
+
return [{
|
|
187
|
+
content,
|
|
188
|
+
path: zodPath
|
|
189
|
+
}];
|
|
284
190
|
};
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
output,
|
|
329
|
-
verbOptions,
|
|
330
|
-
clientImplementation
|
|
331
|
-
});
|
|
332
|
-
const content = [
|
|
333
|
-
header,
|
|
334
|
-
importImplementation,
|
|
335
|
-
fetchHeader,
|
|
336
|
-
clientImplementation
|
|
337
|
-
].join("\n");
|
|
338
|
-
const outputPath = import_core.upath.join(dirname, `http-client${extension}`);
|
|
339
|
-
return [
|
|
340
|
-
{
|
|
341
|
-
content,
|
|
342
|
-
path: outputPath
|
|
343
|
-
}
|
|
344
|
-
];
|
|
191
|
+
const generateHttpClinetFiles = async (verbOptions, output, context) => {
|
|
192
|
+
const { extension, dirname, filename } = (0, __orval_core.getFileInfo)(output.target);
|
|
193
|
+
const header = getHeader(output.override.header, context.specs[context.specKey].info);
|
|
194
|
+
const clients = await Promise.all(Object.values(verbOptions).map((verbOption) => {
|
|
195
|
+
const options = {
|
|
196
|
+
route: (0, __orval_core.getFullRoute)(verbOption.route, context.specs[context.specKey].servers, output.baseUrl),
|
|
197
|
+
pathRoute: verbOption.pathRoute,
|
|
198
|
+
override: output.override,
|
|
199
|
+
context,
|
|
200
|
+
mock: output.mock,
|
|
201
|
+
output: output.target
|
|
202
|
+
};
|
|
203
|
+
return (0, __orval_fetch.generateClient)(verbOption, options, output.client, output);
|
|
204
|
+
}));
|
|
205
|
+
const clientImplementation = clients.map((client) => client.implementation).join("\n");
|
|
206
|
+
const relativeSchemasPath = output.schemas ? __orval_core.upath.relativeSafe(dirname, (0, __orval_core.getFileInfo)(output.schemas).dirname) : "./" + filename + ".schemas";
|
|
207
|
+
const importImplementation = `import { ${clients.flatMap((client) => client.imports).reduce((acc, imp) => {
|
|
208
|
+
if (!acc.find((i) => i === imp.name)) acc.push(imp.name);
|
|
209
|
+
return acc;
|
|
210
|
+
}, []).join(",\n")} } from '${relativeSchemasPath}';`;
|
|
211
|
+
const fetchHeader = (0, __orval_fetch.generateFetchHeader)({
|
|
212
|
+
title: "",
|
|
213
|
+
isRequestOptions: false,
|
|
214
|
+
isMutator: false,
|
|
215
|
+
noFunction: false,
|
|
216
|
+
isGlobalMutator: false,
|
|
217
|
+
provideIn: false,
|
|
218
|
+
hasAwaitedType: false,
|
|
219
|
+
output,
|
|
220
|
+
verbOptions,
|
|
221
|
+
clientImplementation
|
|
222
|
+
});
|
|
223
|
+
const content = [
|
|
224
|
+
header,
|
|
225
|
+
importImplementation,
|
|
226
|
+
fetchHeader,
|
|
227
|
+
clientImplementation
|
|
228
|
+
].join("\n");
|
|
229
|
+
const outputPath = __orval_core.upath.join(dirname, `http-client${extension}`);
|
|
230
|
+
return [{
|
|
231
|
+
content,
|
|
232
|
+
path: outputPath
|
|
233
|
+
}];
|
|
345
234
|
};
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
235
|
+
const generateExtraFiles = async (verbOptions, output, context) => {
|
|
236
|
+
const [server, zods, httpClients] = await Promise.all([
|
|
237
|
+
generateServer(verbOptions, output, context),
|
|
238
|
+
generateZodFiles(verbOptions, output, context),
|
|
239
|
+
generateHttpClinetFiles(verbOptions, output, context)
|
|
240
|
+
]);
|
|
241
|
+
return [
|
|
242
|
+
...server,
|
|
243
|
+
...zods,
|
|
244
|
+
...httpClients
|
|
245
|
+
];
|
|
353
246
|
};
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
247
|
+
const mcpClientBuilder = {
|
|
248
|
+
client: generateMcp,
|
|
249
|
+
header: getMcpHeader,
|
|
250
|
+
extraFiles: generateExtraFiles
|
|
358
251
|
};
|
|
359
|
-
|
|
360
|
-
var
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
252
|
+
const builder = () => () => mcpClientBuilder;
|
|
253
|
+
var src_default = builder;
|
|
254
|
+
|
|
255
|
+
//#endregion
|
|
256
|
+
exports.builder = builder;
|
|
257
|
+
exports.default = src_default;
|
|
258
|
+
exports.generateExtraFiles = generateExtraFiles;
|
|
259
|
+
exports.generateMcp = generateMcp;
|
|
260
|
+
exports.generateServer = generateServer;
|
|
261
|
+
exports.getMcpHeader = getMcpHeader;
|
|
369
262
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n generateVerbImports,\n ClientBuilder,\n ClientExtraFilesBuilder,\n ClientGeneratorsBuilder,\n ClientHeaderBuilder,\n ContextSpecs,\n generateMutatorImports,\n GeneratorMutator,\n GeneratorVerbOptions,\n getFileInfo,\n jsDoc,\n NormalizedOutputOptions,\n upath,\n camel,\n pascal,\n getFullRoute,\n} from '@orval/core';\nimport { generateZod } from '@orval/zod';\nimport {\n generateRequestFunction as generateFetchRequestFunction,\n generateClient,\n generateFetchHeader,\n} from '@orval/fetch';\n\nimport { InfoObject } from 'openapi3-ts/oas30';\n\nconst getHeader = (\n option: false | ((info: InfoObject) => string | string[]),\n info: InfoObject,\n): string => {\n if (!option) {\n return '';\n }\n\n const header = option(info);\n\n return Array.isArray(header) ? jsDoc({ description: header }) : header;\n};\n\nexport const getMcpHeader: ClientHeaderBuilder = ({\n verbOptions,\n output,\n clientImplementation,\n}) => {\n const targetInfo = getFileInfo(output.target);\n const schemaInfo = getFileInfo(output.schemas);\n\n const relativeSchemaImportPath = output.schemas\n ? upath.relativeSafe(targetInfo.dirname, schemaInfo.dirname)\n : './' + targetInfo.filename + '.schemas';\n\n const importSchemaNames = Object.values(verbOptions)\n .flatMap((verbOption) => {\n const imports = [];\n const pascalOperationName = pascal(verbOption.operationName);\n\n if (verbOption.queryParams) {\n imports.push(`${pascalOperationName}Params`);\n }\n\n if (verbOption.body.definition) {\n imports.push(`${pascalOperationName}Body`);\n }\n\n return imports;\n })\n .reduce((acc, name) => {\n if (!acc.find((i) => i === name)) {\n acc.push(name);\n }\n return acc;\n }, [] as string[]);\n\n const importSchemasImplementation = `import {\\n ${importSchemaNames.join(\n ',\\n ',\n )}\\n} from '${relativeSchemaImportPath}';\n`;\n\n const relativeFetchClientPath = './http-client';\n const importFetchClientNames = Object.values(verbOptions)\n .flatMap((verbOption) => verbOption.operationName)\n .reduce((acc, name) => {\n if (!acc.find((i) => i === name)) {\n acc.push(name);\n }\n\n return acc;\n }, [] as string[]);\n\n const importFetchClientImplementation = `import {\\n ${importFetchClientNames.join(\n ',\\n ',\n )}\\n} from '${relativeFetchClientPath}';\n `;\n\n const content = [\n importSchemasImplementation,\n importFetchClientImplementation,\n ].join('\\n');\n\n return content + '\\n';\n};\n\nexport const generateMcp: ClientBuilder = async (verbOptions, options) => {\n const handlerArgsTypes = [];\n const pathParamsType = verbOptions.params\n .map((param) => {\n const paramName = param.name.split(': ')[0];\n const paramType = param.implementation.split(': ')[1];\n return ` ${paramName}: ${paramType}`;\n })\n .join(',\\n');\n if (pathParamsType) {\n handlerArgsTypes.push(` pathParams: {\\n${pathParamsType}\\n };`);\n }\n if (verbOptions.queryParams) {\n handlerArgsTypes.push(\n ` queryParams: ${verbOptions.queryParams.schema.name};`,\n );\n }\n if (verbOptions.body.definition) {\n handlerArgsTypes.push(` bodyParams: ${verbOptions.body.definition};`);\n }\n\n const handlerArgsName = `${verbOptions.operationName}Args`;\n const handlerArgsImplementation = handlerArgsTypes.length\n ? `\nexport type ${handlerArgsName} = {\n${handlerArgsTypes.join('\\n')}\n}\n`\n : '';\n\n const fetchParams = [];\n if (verbOptions.params.length) {\n const pathParamsArgs = verbOptions.params\n .map((param) => {\n const paramName = param.name.split(': ')[0];\n\n return `args.pathParams.${paramName}`;\n })\n .join(', ');\n\n fetchParams.push(`${pathParamsArgs}`);\n }\n if (verbOptions.body.definition) fetchParams.push(`args.bodyParams`);\n if (verbOptions.queryParams) fetchParams.push(`args.queryParams`);\n\n const handlerName = `${verbOptions.operationName}Handler`;\n const handlerImplementation = `\nexport const ${handlerName} = async (${handlerArgsTypes.length ? `args: ${handlerArgsName}` : ''}) => {\n const res = await ${verbOptions.operationName}(${fetchParams.join(', ')});\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(res),\n },\n ],\n };\n};`;\n\n const handlersImplementation = [\n handlerArgsImplementation,\n handlerImplementation,\n ].join('');\n\n return {\n implementation: handlersImplementation ? `${handlersImplementation}\\n` : '',\n imports: [],\n };\n};\n\nexport const generateServer = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const info = context.specs[context.specKey].info;\n const { extension, dirname } = getFileInfo(output.target);\n const serverPath = upath.join(dirname, `server${extension}`);\n const header = getHeader(output.override.header, info);\n\n const toolImplementations = Object.values(verbOptions)\n .map((verbOption) => {\n const imputSchemaTypes = [];\n if (verbOption.params.length)\n imputSchemaTypes.push(\n ` pathParams: ${verbOption.operationName}Params`,\n );\n if (verbOption.queryParams)\n imputSchemaTypes.push(\n ` queryParams: ${verbOption.operationName}QueryParams`,\n );\n if (verbOption.body.definition)\n imputSchemaTypes.push(` bodyParams: ${verbOption.operationName}Body`);\n\n const imputSchemaImplementation = imputSchemaTypes.length\n ? ` {\n ${imputSchemaTypes.join(',\\n ')}\n },`\n : '';\n\n const toolImplementation = `\nserver.tool(\n '${verbOption.operationName}',\n '${verbOption.summary}',${imputSchemaImplementation ? `\\n${imputSchemaImplementation}` : ''}\n ${verbOption.operationName}Handler\n);`;\n\n return toolImplementation;\n })\n .join('\\n');\n\n const importToolSchemas = Object.values(verbOptions)\n .flatMap((verbOption) => {\n const imports = [];\n\n if (verbOption.headers)\n imports.push(` ${verbOption.operationName}Header`);\n if (verbOption.params.length)\n imports.push(` ${verbOption.operationName}Params`);\n if (verbOption.queryParams)\n imports.push(` ${verbOption.operationName}QueryParams`);\n if (verbOption.body.definition)\n imports.push(` ${verbOption.operationName}Body`);\n\n return imports;\n })\n .join(',\\n');\n const importToolSchemasImplementation = `import {\\n${importToolSchemas}\\n} from './tool-schemas.zod';`;\n\n const importHandlers = Object.values(verbOptions)\n .filter((verbOption) =>\n toolImplementations.includes(`${verbOption.operationName}Handler`),\n )\n .map((verbOption) => ` ${verbOption.operationName}Handler`)\n .join(`,\\n`);\n const importHandlersImplementation = `import {\\n${importHandlers}\\n} from './handlers';`;\n\n const importDependenciesImplementation = `import {\n McpServer\n} from '@modelcontextprotocol/sdk/server/mcp.js';\n \nimport {\n StdioServerTransport\n} from '@modelcontextprotocol/sdk/server/stdio.js'; \n`;\n const newMcpServerImplementation = `\nconst server = new McpServer({\n name: '${camel(info.title)}Server',\n version: '1.0.0',\n});\n`;\n const serverConnectImplementation = `\nconst transport = new StdioServerTransport();\n\nserver.connect(transport).then(() => {\n console.error('MCP server running on stdio');\n}).catch(console.error);\n`;\n\n const content = [\n header,\n importDependenciesImplementation,\n importHandlersImplementation,\n importToolSchemasImplementation,\n newMcpServerImplementation,\n toolImplementations,\n serverConnectImplementation,\n ].join('\\n');\n\n return [\n {\n content,\n path: serverPath,\n },\n ];\n};\n\nconst generateZodFiles = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const { extension, dirname, filename } = getFileInfo(output.target);\n\n const header = getHeader(\n output.override.header,\n context.specs[context.specKey].info,\n );\n\n const zods = await Promise.all(\n Object.values(verbOptions).map((verbOption) =>\n generateZod(\n verbOption,\n {\n route: verbOption.route,\n pathRoute: verbOption.pathRoute,\n override: output.override,\n context,\n mock: output.mock,\n output: output.target!,\n },\n output.client,\n ),\n ),\n );\n\n const allMutators = zods.reduce(\n (acc, z) => {\n (z.mutators ?? []).forEach((mutator) => {\n acc[mutator.name] = mutator;\n });\n return acc;\n },\n {} as Record<string, GeneratorMutator>,\n );\n\n const mutatorsImports = generateMutatorImports({\n mutators: Object.values(allMutators),\n });\n\n let content = `${header}import { z as zod } from 'zod';\\n${mutatorsImports}\\n`;\n\n const zodPath = upath.join(dirname, `tool-schemas.zod${extension}`);\n\n content += zods.map((zod) => zod.implementation).join('\\n');\n\n return [\n {\n content,\n path: zodPath,\n },\n ];\n};\n\nconst generateHttpClinetFiles = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const { extension, dirname, filename } = getFileInfo(output.target);\n\n const header = getHeader(\n output.override.header,\n context.specs[context.specKey].info,\n );\n\n const clients = await Promise.all(\n Object.values(verbOptions).map((verbOption) => {\n const fullRoute = getFullRoute(\n verbOption.route,\n context.specs[context.specKey].servers,\n output.baseUrl,\n );\n\n const options = {\n route: fullRoute,\n pathRoute: verbOption.pathRoute,\n override: output.override,\n context,\n mock: output.mock,\n output: output.target!,\n };\n\n return generateClient(verbOption, options, output.client, output);\n }),\n );\n\n const clientImplementation = clients\n .map((client) => client.implementation)\n .join('\\n');\n\n const relativeSchemasPath = output.schemas\n ? upath.relativeSafe(dirname, getFileInfo(output.schemas).dirname)\n : './' + filename + '.schemas';\n const importNames = clients\n .flatMap((client) => client.imports)\n .reduce((acc, imp) => {\n if (!acc.find((i) => i === imp.name)) {\n acc.push(imp.name);\n }\n\n return acc;\n }, [] as string[]);\n const importImplementation = `import { ${importNames.join(\n ',\\n',\n )} } from '${relativeSchemasPath}';`;\n\n const fetchHeader = generateFetchHeader({\n title: '',\n isRequestOptions: false,\n isMutator: false,\n noFunction: false,\n isGlobalMutator: false,\n provideIn: false,\n hasAwaitedType: false,\n output,\n verbOptions,\n clientImplementation,\n });\n\n const content = [\n header,\n importImplementation,\n fetchHeader,\n clientImplementation,\n ].join('\\n');\n const outputPath = upath.join(dirname, `http-client${extension}`);\n\n return [\n {\n content,\n path: outputPath,\n },\n ];\n};\n\nexport const generateExtraFiles: ClientExtraFilesBuilder = async (\n verbOptions,\n output,\n context,\n) => {\n const [server, zods, httpClients] = await Promise.all([\n generateServer(verbOptions, output, context),\n generateZodFiles(verbOptions, output, context),\n generateHttpClinetFiles(verbOptions, output, context),\n ]);\n\n return [...server, ...zods, ...httpClients];\n};\n\nconst mcpClientBuilder: ClientGeneratorsBuilder = {\n client: generateMcp,\n header: getMcpHeader,\n extraFiles: generateExtraFiles,\n};\n\nexport const builder = () => () => mcpClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getMcpHeader: ClientHeaderBuilder","upath","generateMcp: ClientBuilder","generateExtraFiles: ClientExtraFilesBuilder","mcpClientBuilder: ClientGeneratorsBuilder"],"sources":["../src/index.ts"],"sourcesContent":["import {\n camel,\n ClientBuilder,\n ClientExtraFilesBuilder,\n ClientGeneratorsBuilder,\n ClientHeaderBuilder,\n ContextSpecs,\n generateMutatorImports,\n generateVerbImports,\n GeneratorMutator,\n GeneratorVerbOptions,\n getFileInfo,\n getFullRoute,\n jsDoc,\n NormalizedOutputOptions,\n pascal,\n upath,\n} from '@orval/core';\nimport {\n generateClient,\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\nimport { generateZod } from '@orval/zod';\nimport { InfoObject } from 'openapi3-ts/oas30';\n\nconst getHeader = (\n option: false | ((info: InfoObject) => string | string[]),\n info: InfoObject,\n): string => {\n if (!option) {\n return '';\n }\n\n const header = option(info);\n\n return Array.isArray(header) ? jsDoc({ description: header }) : header;\n};\n\nexport const getMcpHeader: ClientHeaderBuilder = ({\n verbOptions,\n output,\n clientImplementation,\n}) => {\n const targetInfo = getFileInfo(output.target);\n const schemaInfo = getFileInfo(output.schemas);\n\n const relativeSchemaImportPath = output.schemas\n ? upath.relativeSafe(targetInfo.dirname, schemaInfo.dirname)\n : './' + targetInfo.filename + '.schemas';\n\n const importSchemaNames = Object.values(verbOptions)\n .flatMap((verbOption) => {\n const imports = [];\n const pascalOperationName = pascal(verbOption.operationName);\n\n if (verbOption.queryParams) {\n imports.push(`${pascalOperationName}Params`);\n }\n\n if (verbOption.body.definition) {\n imports.push(`${pascalOperationName}Body`);\n }\n\n return imports;\n })\n .reduce<string[]>((acc, name) => {\n if (!acc.find((i) => i === name)) {\n acc.push(name);\n }\n return acc;\n }, []);\n\n const importSchemasImplementation = `import {\\n ${importSchemaNames.join(\n ',\\n ',\n )}\\n} from '${relativeSchemaImportPath}';\n`;\n\n const relativeFetchClientPath = './http-client';\n const importFetchClientNames = Object.values(verbOptions)\n .flatMap((verbOption) => verbOption.operationName)\n .reduce<string[]>((acc, name) => {\n if (!acc.find((i) => i === name)) {\n acc.push(name);\n }\n\n return acc;\n }, []);\n\n const importFetchClientImplementation = `import {\\n ${importFetchClientNames.join(\n ',\\n ',\n )}\\n} from '${relativeFetchClientPath}';\n `;\n\n const content = [\n importSchemasImplementation,\n importFetchClientImplementation,\n ].join('\\n');\n\n return content + '\\n';\n};\n\nexport const generateMcp: ClientBuilder = async (verbOptions, options) => {\n const handlerArgsTypes = [];\n const pathParamsType = verbOptions.params\n .map((param) => {\n const paramName = param.name.split(': ')[0];\n const paramType = param.implementation.split(': ')[1];\n return ` ${paramName}: ${paramType}`;\n })\n .join(',\\n');\n if (pathParamsType) {\n handlerArgsTypes.push(` pathParams: {\\n${pathParamsType}\\n };`);\n }\n if (verbOptions.queryParams) {\n handlerArgsTypes.push(\n ` queryParams: ${verbOptions.queryParams.schema.name};`,\n );\n }\n if (verbOptions.body.definition) {\n handlerArgsTypes.push(` bodyParams: ${verbOptions.body.definition};`);\n }\n\n const handlerArgsName = `${verbOptions.operationName}Args`;\n const handlerArgsImplementation =\n handlerArgsTypes.length > 0\n ? `\nexport type ${handlerArgsName} = {\n${handlerArgsTypes.join('\\n')}\n}\n`\n : '';\n\n const fetchParams = [];\n if (verbOptions.params.length > 0) {\n const pathParamsArgs = verbOptions.params\n .map((param) => {\n const paramName = param.name.split(': ')[0];\n\n return `args.pathParams.${paramName}`;\n })\n .join(', ');\n\n fetchParams.push(pathParamsArgs);\n }\n if (verbOptions.body.definition) fetchParams.push(`args.bodyParams`);\n if (verbOptions.queryParams) fetchParams.push(`args.queryParams`);\n\n const handlerName = `${verbOptions.operationName}Handler`;\n const handlerImplementation = `\nexport const ${handlerName} = async (${handlerArgsTypes.length > 0 ? `args: ${handlerArgsName}` : ''}) => {\n const res = await ${verbOptions.operationName}(${fetchParams.join(', ')});\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(res),\n },\n ],\n };\n};`;\n\n const handlersImplementation = [\n handlerArgsImplementation,\n handlerImplementation,\n ].join('');\n\n return {\n implementation: handlersImplementation ? `${handlersImplementation}\\n` : '',\n imports: [],\n };\n};\n\nexport const generateServer = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const info = context.specs[context.specKey].info;\n const { extension, dirname } = getFileInfo(output.target);\n const serverPath = upath.join(dirname, `server${extension}`);\n const header = getHeader(output.override.header, info);\n\n const toolImplementations = Object.values(verbOptions)\n .map((verbOption) => {\n const imputSchemaTypes = [];\n if (verbOption.params.length > 0)\n imputSchemaTypes.push(\n ` pathParams: ${verbOption.operationName}Params`,\n );\n if (verbOption.queryParams)\n imputSchemaTypes.push(\n ` queryParams: ${verbOption.operationName}QueryParams`,\n );\n if (verbOption.body.definition)\n imputSchemaTypes.push(` bodyParams: ${verbOption.operationName}Body`);\n\n const imputSchemaImplementation =\n imputSchemaTypes.length > 0\n ? ` {\n ${imputSchemaTypes.join(',\\n ')}\n },`\n : '';\n\n const toolImplementation = `\nserver.tool(\n '${verbOption.operationName}',\n '${verbOption.summary}',${imputSchemaImplementation ? `\\n${imputSchemaImplementation}` : ''}\n ${verbOption.operationName}Handler\n);`;\n\n return toolImplementation;\n })\n .join('\\n');\n\n const importToolSchemas = Object.values(verbOptions)\n .flatMap((verbOption) => {\n const imports = [];\n\n if (verbOption.headers)\n imports.push(` ${verbOption.operationName}Header`);\n if (verbOption.params.length > 0)\n imports.push(` ${verbOption.operationName}Params`);\n if (verbOption.queryParams)\n imports.push(` ${verbOption.operationName}QueryParams`);\n if (verbOption.body.definition)\n imports.push(` ${verbOption.operationName}Body`);\n\n return imports;\n })\n .join(',\\n');\n const importToolSchemasImplementation = `import {\\n${importToolSchemas}\\n} from './tool-schemas.zod';`;\n\n const importHandlers = Object.values(verbOptions)\n .filter((verbOption) =>\n toolImplementations.includes(`${verbOption.operationName}Handler`),\n )\n .map((verbOption) => ` ${verbOption.operationName}Handler`)\n .join(`,\\n`);\n const importHandlersImplementation = `import {\\n${importHandlers}\\n} from './handlers';`;\n\n const importDependenciesImplementation = `import {\n McpServer\n} from '@modelcontextprotocol/sdk/server/mcp.js';\n \nimport {\n StdioServerTransport\n} from '@modelcontextprotocol/sdk/server/stdio.js'; \n`;\n const newMcpServerImplementation = `\nconst server = new McpServer({\n name: '${camel(info.title)}Server',\n version: '1.0.0',\n});\n`;\n const serverConnectImplementation = `\nconst transport = new StdioServerTransport();\n\nserver.connect(transport).then(() => {\n console.error('MCP server running on stdio');\n}).catch(console.error);\n`;\n\n const content = [\n header,\n importDependenciesImplementation,\n importHandlersImplementation,\n importToolSchemasImplementation,\n newMcpServerImplementation,\n toolImplementations,\n serverConnectImplementation,\n ].join('\\n');\n\n return [\n {\n content,\n path: serverPath,\n },\n ];\n};\n\nconst generateZodFiles = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const { extension, dirname, filename } = getFileInfo(output.target);\n\n const header = getHeader(\n output.override.header,\n context.specs[context.specKey].info,\n );\n\n const zods = await Promise.all(\n Object.values(verbOptions).map((verbOption) =>\n generateZod(\n verbOption,\n {\n route: verbOption.route,\n pathRoute: verbOption.pathRoute,\n override: output.override,\n context,\n mock: output.mock,\n output: output.target!,\n },\n output.client,\n ),\n ),\n );\n\n const allMutators = zods.reduce(\n (acc, z) => {\n for (const mutator of z.mutators ?? []) {\n acc[mutator.name] = mutator;\n }\n return acc;\n },\n {} as Record<string, GeneratorMutator>,\n );\n\n const mutatorsImports = generateMutatorImports({\n mutators: Object.values(allMutators),\n });\n\n let content = `${header}import { z as zod } from 'zod';\\n${mutatorsImports}\\n`;\n\n const zodPath = upath.join(dirname, `tool-schemas.zod${extension}`);\n\n content += zods.map((zod) => zod.implementation).join('\\n');\n\n return [\n {\n content,\n path: zodPath,\n },\n ];\n};\n\nconst generateHttpClinetFiles = async (\n verbOptions: Record<string, GeneratorVerbOptions>,\n output: NormalizedOutputOptions,\n context: ContextSpecs,\n) => {\n const { extension, dirname, filename } = getFileInfo(output.target);\n\n const header = getHeader(\n output.override.header,\n context.specs[context.specKey].info,\n );\n\n const clients = await Promise.all(\n Object.values(verbOptions).map((verbOption) => {\n const fullRoute = getFullRoute(\n verbOption.route,\n context.specs[context.specKey].servers,\n output.baseUrl,\n );\n\n const options = {\n route: fullRoute,\n pathRoute: verbOption.pathRoute,\n override: output.override,\n context,\n mock: output.mock,\n output: output.target!,\n };\n\n return generateClient(verbOption, options, output.client, output);\n }),\n );\n\n const clientImplementation = clients\n .map((client) => client.implementation)\n .join('\\n');\n\n const relativeSchemasPath = output.schemas\n ? upath.relativeSafe(dirname, getFileInfo(output.schemas).dirname)\n : './' + filename + '.schemas';\n const importNames = clients\n .flatMap((client) => client.imports)\n .reduce((acc, imp) => {\n if (!acc.find((i) => i === imp.name)) {\n acc.push(imp.name);\n }\n\n return acc;\n }, [] as string[]);\n const importImplementation = `import { ${importNames.join(\n ',\\n',\n )} } from '${relativeSchemasPath}';`;\n\n const fetchHeader = generateFetchHeader({\n title: '',\n isRequestOptions: false,\n isMutator: false,\n noFunction: false,\n isGlobalMutator: false,\n provideIn: false,\n hasAwaitedType: false,\n output,\n verbOptions,\n clientImplementation,\n });\n\n const content = [\n header,\n importImplementation,\n fetchHeader,\n clientImplementation,\n ].join('\\n');\n const outputPath = upath.join(dirname, `http-client${extension}`);\n\n return [\n {\n content,\n path: outputPath,\n },\n ];\n};\n\nexport const generateExtraFiles: ClientExtraFilesBuilder = async (\n verbOptions,\n output,\n context,\n) => {\n const [server, zods, httpClients] = await Promise.all([\n generateServer(verbOptions, output, context),\n generateZodFiles(verbOptions, output, context),\n generateHttpClinetFiles(verbOptions, output, context),\n ]);\n\n return [...server, ...zods, ...httpClients];\n};\n\nconst mcpClientBuilder: ClientGeneratorsBuilder = {\n client: generateMcp,\n header: getMcpHeader,\n extraFiles: generateExtraFiles,\n};\n\nexport const builder = () => () => mcpClientBuilder;\n\nexport default builder;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/mcp",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.12.2",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"
|
|
6
|
-
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"default": "./dist/index.js"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
7
11
|
"files": [
|
|
8
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"!dist/**/*.d.ts.map"
|
|
9
14
|
],
|
|
10
15
|
"scripts": {
|
|
11
|
-
"build": "
|
|
12
|
-
"dev": "
|
|
13
|
-
"lint": "eslint
|
|
16
|
+
"build": "tsdown --config-loader unconfig",
|
|
17
|
+
"dev": "tsdown --config-loader unconfig --watch src",
|
|
18
|
+
"lint": "eslint .",
|
|
19
|
+
"clean": "rimraf .turbo dist",
|
|
20
|
+
"nuke": "rimraf .turbo dist node_modules"
|
|
14
21
|
},
|
|
15
22
|
"dependencies": {
|
|
16
|
-
"@orval/core": "7.
|
|
17
|
-
"@orval/fetch": "7.
|
|
18
|
-
"@orval/zod": "7.
|
|
23
|
+
"@orval/core": "7.12.2",
|
|
24
|
+
"@orval/fetch": "7.12.2",
|
|
25
|
+
"@orval/zod": "7.12.2",
|
|
26
|
+
"openapi3-ts": "4.5.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"eslint": "^9.35.0",
|
|
30
|
+
"rimraf": "^6.0.1",
|
|
31
|
+
"tsdown": "^0.15.2",
|
|
32
|
+
"typescript": "^5.9.2"
|
|
19
33
|
}
|
|
20
|
-
}
|
|
34
|
+
}
|