@orval/mcp 7.11.2 → 7.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import { ClientGeneratorsBuilder, ClientHeaderBuilder, ClientBuilder, GeneratorVerbOptions, NormalizedOutputOptions, ContextSpecs, ClientExtraFilesBuilder } from '@orval/core';
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
- content: string;
7
- path: string;
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;cAuCa,cAAc;cA+Dd,aAAa;AA/Db,cAuIA,cAvIc,EAAA,CAAA,WA6D1B,EA2Ec,MA3Ed,CAAA,MAAA,EA2E6B,oBA3E7B,CAAA,EAAA,MAAA,EA4ES,uBA5ET,EAAA,OAAA,EA6EU,YA7EV,EAAA,GA6EsB,OA7EtB,CAAA;EAEY,OAAA,EAAA,MAsEZ;EAEY,IAAA,EAAA,MAAA;CA0GZ,EAAA,CAAA;AAzG6B,cAsPjB,kBAtPiB,EAsPG,uBAtPH;AAAf,cA0QF,OA1QE,EAAA,GAAA,GAAA,GAAA,GA0QK,uBA1QL"}
package/dist/index.js CHANGED
@@ -1,131 +1,90 @@
1
- "use strict";
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
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
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
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- builder: () => builder,
24
- default: () => index_default,
25
- generateExtraFiles: () => generateExtraFiles,
26
- generateMcp: () => generateMcp,
27
- generateServer: () => generateServer,
28
- getMcpHeader: () => getMcpHeader
29
- });
30
- module.exports = __toCommonJS(index_exports);
31
- var import_core = require("@orval/core");
32
- var import_zod = require("@orval/zod");
33
- var import_fetch = require("@orval/fetch");
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
- var getMcpHeader = ({
42
- verbOptions,
43
- output,
44
- clientImplementation
45
- }) => {
46
- const targetInfo = (0, import_core.getFileInfo)(output.target);
47
- const schemaInfo = (0, import_core.getFileInfo)(output.schemas);
48
- const relativeSchemaImportPath = output.schemas ? import_core.upath.relativeSafe(targetInfo.dirname, schemaInfo.dirname) : "./" + targetInfo.filename + ".schemas";
49
- const importSchemaNames = Object.values(verbOptions).flatMap((verbOption) => {
50
- const imports = [];
51
- const pascalOperationName = (0, import_core.pascal)(verbOption.operationName);
52
- if (verbOption.queryParams) {
53
- imports.push(`${pascalOperationName}Params`);
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
- const relativeFetchClientPath = "./http-client";
72
- const importFetchClientNames = Object.values(verbOptions).flatMap((verbOption) => verbOption.operationName).reduce((acc, name) => {
73
- if (!acc.find((i) => i === name)) {
74
- acc.push(name);
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
- const content = [
85
- importSchemasImplementation,
86
- importFetchClientImplementation
87
- ].join("\n");
88
- return content + "\n";
59
+ return [importSchemasImplementation, importFetchClientImplementation].join("\n") + "\n";
89
60
  };
90
- var generateMcp = async (verbOptions, options) => {
91
- const handlerArgsTypes = [];
92
- const pathParamsType = verbOptions.params.map((param) => {
93
- const paramName = param.name.split(": ")[0];
94
- const paramType = param.implementation.split(": ")[1];
95
- return ` ${paramName}: ${paramType}`;
96
- }).join(",\n");
97
- if (pathParamsType) {
98
- handlerArgsTypes.push(` pathParams: {
99
- ${pathParamsType}
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
- const fetchParams = [];
117
- if (verbOptions.params.length) {
118
- const pathParamsArgs = verbOptions.params.map((param) => {
119
- const paramName = param.name.split(": ")[0];
120
- return `args.pathParams.${paramName}`;
121
- }).join(", ");
122
- fetchParams.push(`${pathParamsArgs}`);
123
- }
124
- if (verbOptions.body.definition) fetchParams.push(`args.bodyParams`);
125
- if (verbOptions.queryParams) fetchParams.push(`args.queryParams`);
126
- const handlerName = `${verbOptions.operationName}Handler`;
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
- const handlersImplementation = [
141
- handlerArgsImplementation,
142
- handlerImplementation
143
- ].join("");
144
- return {
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
- var generateServer = async (verbOptions, output, context) => {
151
- const info = context.specs[context.specKey].info;
152
- const { extension, dirname } = (0, import_core.getFileInfo)(output.target);
153
- const serverPath = import_core.upath.join(dirname, `server${extension}`);
154
- const header = getHeader(output.override.header, info);
155
- const toolImplementations = Object.values(verbOptions).map((verbOption) => {
156
- const imputSchemaTypes = [];
157
- if (verbOption.params.length)
158
- imputSchemaTypes.push(
159
- ` pathParams: ${verbOption.operationName}Params`
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
- const toolImplementation = `
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
- return toolImplementation;
178
- }).join("\n");
179
- const importToolSchemas = Object.values(verbOptions).flatMap((verbOption) => {
180
- const imports = [];
181
- if (verbOption.headers)
182
- imports.push(` ${verbOption.operationName}Header`);
183
- if (verbOption.params.length)
184
- imports.push(` ${verbOption.operationName}Params`);
185
- if (verbOption.queryParams)
186
- imports.push(` ${verbOption.operationName}QueryParams`);
187
- if (verbOption.body.definition)
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
- const newMcpServerImplementation = `
142
+ const newMcpServerImplementation = `
210
143
  const server = new McpServer({
211
- name: '${(0, import_core.camel)(info.title)}Server',
144
+ name: '${(0, __orval_core.camel)(info.title)}Server',
212
145
  version: '1.0.0',
213
146
  });
214
147
  `;
215
- const serverConnectImplementation = `
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
- const content = [
223
- header,
224
- importDependenciesImplementation,
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
- var generateZodFiles = async (verbOptions, output, context) => {
239
- const { extension, dirname, filename } = (0, import_core.getFileInfo)(output.target);
240
- const header = getHeader(
241
- output.override.header,
242
- context.specs[context.specKey].info
243
- );
244
- const zods = await Promise.all(
245
- Object.values(verbOptions).map(
246
- (verbOption) => (0, import_zod.generateZod)(
247
- verbOption,
248
- {
249
- route: verbOption.route,
250
- pathRoute: verbOption.pathRoute,
251
- override: output.override,
252
- context,
253
- mock: output.mock,
254
- output: output.target
255
- },
256
- output.client
257
- )
258
- )
259
- );
260
- const allMutators = zods.reduce(
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
- var generateHttpClinetFiles = async (verbOptions, output, context) => {
286
- const { extension, dirname, filename } = (0, import_core.getFileInfo)(output.target);
287
- const header = getHeader(
288
- output.override.header,
289
- context.specs[context.specKey].info
290
- );
291
- const clients = await Promise.all(
292
- Object.values(verbOptions).map((verbOption) => {
293
- const fullRoute = (0, import_core.getFullRoute)(
294
- verbOption.route,
295
- context.specs[context.specKey].servers,
296
- output.baseUrl
297
- );
298
- const options = {
299
- route: fullRoute,
300
- pathRoute: verbOption.pathRoute,
301
- override: output.override,
302
- context,
303
- mock: output.mock,
304
- output: output.target
305
- };
306
- return (0, import_fetch.generateClient)(verbOption, options, output.client, output);
307
- })
308
- );
309
- const clientImplementation = clients.map((client) => client.implementation).join("\n");
310
- const relativeSchemasPath = output.schemas ? import_core.upath.relativeSafe(dirname, (0, import_core.getFileInfo)(output.schemas).dirname) : "./" + filename + ".schemas";
311
- const importNames = clients.flatMap((client) => client.imports).reduce((acc, imp) => {
312
- if (!acc.find((i) => i === imp.name)) {
313
- acc.push(imp.name);
314
- }
315
- return acc;
316
- }, []);
317
- const importImplementation = `import { ${importNames.join(
318
- ",\n"
319
- )} } from '${relativeSchemasPath}';`;
320
- const fetchHeader = (0, import_fetch.generateFetchHeader)({
321
- title: "",
322
- isRequestOptions: false,
323
- isMutator: false,
324
- noFunction: false,
325
- isGlobalMutator: false,
326
- provideIn: false,
327
- hasAwaitedType: false,
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
- var generateExtraFiles = async (verbOptions, output, context) => {
347
- const [server, zods, httpClients] = await Promise.all([
348
- generateServer(verbOptions, output, context),
349
- generateZodFiles(verbOptions, output, context),
350
- generateHttpClinetFiles(verbOptions, output, context)
351
- ]);
352
- return [...server, ...zods, ...httpClients];
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
- var mcpClientBuilder = {
355
- client: generateMcp,
356
- header: getMcpHeader,
357
- extraFiles: generateExtraFiles
247
+ const mcpClientBuilder = {
248
+ client: generateMcp,
249
+ header: getMcpHeader,
250
+ extraFiles: generateExtraFiles
358
251
  };
359
- var builder = () => () => mcpClientBuilder;
360
- var index_default = builder;
361
- // Annotate the CommonJS export names for ESM import in node:
362
- 0 && (module.exports = {
363
- builder,
364
- generateExtraFiles,
365
- generateMcp,
366
- generateServer,
367
- getMcpHeader
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,33 @@
1
1
  {
2
2
  "name": "@orval/mcp",
3
- "version": "7.11.2",
3
+ "version": "7.12.1",
4
4
  "license": "MIT",
5
- "main": "./dist/index.js",
6
- "types": "./dist/index.d.ts",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "default": "./dist/index.js"
9
+ }
10
+ },
7
11
  "files": [
8
12
  "dist"
9
13
  ],
10
14
  "scripts": {
11
- "build": "tsup ./src/index.ts --target node12 --clean --dts --sourcemap",
12
- "dev": "tsup ./src/index.ts --target node12 --clean --watch --sourcemap src",
13
- "lint": "eslint src/**/*.ts"
15
+ "build": "tsdown --config-loader unconfig",
16
+ "dev": "tsdown --config-loader unconfig --watch src",
17
+ "lint": "eslint .",
18
+ "clean": "rimraf .turbo dist",
19
+ "nuke": "rimraf .turbo dist node_modules"
14
20
  },
15
21
  "dependencies": {
16
- "@orval/core": "7.11.2",
17
- "@orval/fetch": "7.11.2",
18
- "@orval/zod": "7.11.2"
22
+ "@orval/core": "workspace:*",
23
+ "@orval/fetch": "workspace:*",
24
+ "@orval/zod": "workspace:*",
25
+ "openapi3-ts": "4.5.0"
26
+ },
27
+ "devDependencies": {
28
+ "eslint": "^9.35.0",
29
+ "rimraf": "^6.0.1",
30
+ "tsdown": "^0.15.2",
31
+ "typescript": "^5.9.2"
19
32
  }
20
33
  }