@kubb/mcp 3.18.3 → 4.0.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.cjs CHANGED
@@ -1,3 +1,3 @@
1
- const require_src = require('./src-jzj3aFS3.cjs');
1
+ const require_src = require('./src-BNwFQNJB.cjs');
2
2
 
3
3
  exports.startServer = require_src.startServer;
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { startServer } from "./src-C54GXQyZ.js";
1
+ import { startServer } from "./src-BWjpwH8V.js";
2
2
 
3
3
  export { startServer };
package/dist/server.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_src = require('./src-jzj3aFS3.cjs');
1
+ const require_src = require('./src-BNwFQNJB.cjs');
2
2
 
3
3
  //#region src/server.ts
4
4
  require_src.startServer();
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs","names":["startServer"],"sources":["../src/server.ts"],"sourcesContent":["import { startServer } from './index.ts'\n\nstartServer()\n"],"mappings":";;;AAEAA"}
1
+ {"version":3,"file":"server.cjs","names":["startServer"],"sources":["../src/server.ts"],"sourcesContent":["import { startServer } from './index.ts'\n\nstartServer()\n"],"mappings":";;;AAEAA,yBAAa"}
package/dist/server.js CHANGED
@@ -1,4 +1,4 @@
1
- import { startServer } from "./src-C54GXQyZ.js";
1
+ import { startServer } from "./src-BWjpwH8V.js";
2
2
 
3
3
  //#region src/server.ts
4
4
  startServer();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["import { startServer } from './index.ts'\n\nstartServer()\n"],"mappings":";;;AAEA"}
1
+ {"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"sourcesContent":["import { startServer } from './index.ts'\n\nstartServer()\n"],"mappings":";;;AAEA,aAAa"}
@@ -21,17 +21,25 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  }) : target, mod));
22
22
 
23
23
  //#endregion
24
- const node_process = __toESM(require("node:process"));
25
- const __modelcontextprotocol_sdk_server_mcp_js = __toESM(require("@modelcontextprotocol/sdk/server/mcp.js"));
26
- const __modelcontextprotocol_sdk_server_stdio_js = __toESM(require("@modelcontextprotocol/sdk/server/stdio.js"));
27
- const zod = __toESM(require("zod"));
28
- const __kubb_plugin_ts = __toESM(require("@kubb/plugin-ts"));
29
- const __kubb_plugin_oas = __toESM(require("@kubb/plugin-oas"));
30
- const __kubb_plugin_react_query = __toESM(require("@kubb/plugin-react-query"));
31
- const __kubb_core = __toESM(require("@kubb/core"));
24
+ let node_process = require("node:process");
25
+ node_process = __toESM(node_process);
26
+ let __modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
27
+ __modelcontextprotocol_sdk_server_mcp_js = __toESM(__modelcontextprotocol_sdk_server_mcp_js);
28
+ let __modelcontextprotocol_sdk_server_stdio_js = require("@modelcontextprotocol/sdk/server/stdio.js");
29
+ __modelcontextprotocol_sdk_server_stdio_js = __toESM(__modelcontextprotocol_sdk_server_stdio_js);
30
+ let zod = require("zod");
31
+ zod = __toESM(zod);
32
+ let __kubb_plugin_ts = require("@kubb/plugin-ts");
33
+ __kubb_plugin_ts = __toESM(__kubb_plugin_ts);
34
+ let __kubb_plugin_oas = require("@kubb/plugin-oas");
35
+ __kubb_plugin_oas = __toESM(__kubb_plugin_oas);
36
+ let __kubb_plugin_react_query = require("@kubb/plugin-react-query");
37
+ __kubb_plugin_react_query = __toESM(__kubb_plugin_react_query);
38
+ let __kubb_core = require("@kubb/core");
39
+ __kubb_core = __toESM(__kubb_core);
32
40
 
33
41
  //#region package.json
34
- var version = "3.18.3";
42
+ var version = "4.0.2";
35
43
 
36
44
  //#endregion
37
45
  //#region src/schemas/generateSchema.ts
@@ -93,11 +101,10 @@ async function generate({ plugin, openApi, operationId }) {
93
101
  text: `Files: ${JSON.stringify(sources, null, 2)}`
94
102
  }] };
95
103
  } catch (e) {
96
- const error = e;
97
104
  return {
98
105
  content: [{
99
106
  type: "text",
100
- text: error.message
107
+ text: e.message
101
108
  }],
102
109
  isError: true
103
110
  };
@@ -128,4 +135,4 @@ Object.defineProperty(exports, 'startServer', {
128
135
  return startServer;
129
136
  }
130
137
  });
131
- //# sourceMappingURL=src-jzj3aFS3.cjs.map
138
+ //# sourceMappingURL=src-BNwFQNJB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-BNwFQNJB.cjs","names":["z","definedConfig: Config","StdioServerTransport","McpServer"],"sources":["../package.json","../src/schemas/generateSchema.ts","../src/tools/generate.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/mcp\",\n \"version\": \"4.0.2\",\n \"description\": \"Generator MCP\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"MCP\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/mcp\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./server\": {\n \"import\": \"./dist/server.js\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"typesVersions\": {\n \"*\": {\n \"server\": [\n \"./dist/server.d.ts\"\n ]\n }\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"start:mcp\": \"bun --watch ./src/server.ts\",\n \"debug:mcp\": \"npx -y @modelcontextprotocol/inspector node ./dist/server.js\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/plugin-client\": \"workspace:*\",\n \"@kubb/plugin-cypress\": \"workspace:*\",\n \"@kubb/plugin-faker\": \"workspace:*\",\n \"@kubb/plugin-mcp\": \"workspace:*\",\n \"@kubb/plugin-msw\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@kubb/plugin-react-query\": \"workspace:*\",\n \"@kubb/plugin-redoc\": \"workspace:*\",\n \"@kubb/plugin-swr\": \"workspace:*\",\n \"@kubb/plugin-ts\": \"workspace:*\",\n \"@kubb/plugin-zod\": \"workspace:*\",\n \"@kubb/react\": \"workspace:*\",\n \"@modelcontextprotocol/sdk\": \"^1.18.1\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/node\": \"catalog:\",\n \"@types/react\": \"catalog:\",\n \"tsdown\": \"catalog:\",\n \"typescript\": \"catalog:\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { z } from 'zod'\n\nexport const generateSchema = z.object({\n openApi: z.string().default('https://petstore.swagger.io/v2/swagger.json').describe('OpenAPI/Swagger spec'),\n plugin: z.enum(['typescript', 'react-query']).describe('Plugin to use'),\n operationId: z.string().nullable().optional().describe('Which operationId should be used'),\n // schemaName: z.string().nullable().optional().describe('Which schema should be used'),\n})\n","import { pluginTs } from '@kubb/plugin-ts'\nimport { type Include, pluginOas } from '@kubb/plugin-oas'\nimport { pluginReactQuery } from '@kubb/plugin-react-query'\n\nimport { type Config, safeBuild, type Plugin, getSource } from '@kubb/core'\nimport type { generateSchema } from '../schemas/generateSchema.ts'\nimport type { z } from 'zod'\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.d.ts'\n\nexport async function generate({ plugin, openApi, operationId }: z.infer<typeof generateSchema>): Promise<CallToolResult> {\n try {\n const include = [\n operationId\n ? {\n type: 'operationId',\n pattern: operationId,\n }\n : undefined,\n ].filter(Boolean) as Include[]\n\n const plugins = [\n pluginOas({ validate: false, generators: [] }),\n pluginTs({\n output: {\n path: 'typescript.ts',\n },\n generators: plugin === 'typescript' ? undefined : [],\n include,\n }),\n pluginReactQuery({\n output: {\n path: 'react-query.ts',\n },\n generators: plugin === 'react-query' ? undefined : [],\n include,\n }),\n ].filter(Boolean) as Plugin[]\n\n const definedConfig: Config = {\n root: process.cwd(),\n input: {\n data: openApi,\n },\n output: {\n path: './',\n write: false,\n barrelType: 'named',\n },\n plugins,\n }\n\n const { files, error } = await safeBuild({\n config: definedConfig,\n })\n\n if (error) {\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n\n const promises = files.map((file) => getSource(file, { extname: '.ts' }))\n\n const sources = await Promise.all(promises)\n\n return {\n content: [\n // {\n // type: 'resource',\n // resource: {}\n // },\n {\n type: 'text',\n text: `Config: ${JSON.stringify(definedConfig, null, 2)}`,\n },\n {\n type: 'text',\n text: `Files: ${JSON.stringify(sources, null, 2)}`,\n },\n ],\n }\n } catch (e) {\n const error = e as Error\n\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n}\n","import process from 'node:process'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { version } from '../package.json'\nimport { generateSchema } from './schemas/generateSchema.ts'\nimport { generate } from './tools/generate.ts'\n\nexport async function startServer() {\n try {\n const transport = new StdioServerTransport()\n const server = new McpServer({\n name: 'Kubb',\n version,\n })\n\n server.tool('generate', 'generate an openAPI spec to a code snippet', generateSchema.shape, generate)\n\n await server.connect(transport)\n } catch (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEa;;;;ACAb,MAAa,iBAAiBA,MAAE,OAAO;CACrC,SAASA,MAAE,QAAQ,CAAC,QAAQ,8CAA8C,CAAC,SAAS,uBAAuB;CAC3G,QAAQA,MAAE,KAAK,CAAC,cAAc,cAAc,CAAC,CAAC,SAAS,gBAAgB;CACvE,aAAaA,MAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,mCAAmC;CAE3F,CAAC;;;;ACEF,eAAsB,SAAS,EAAE,QAAQ,SAAS,eAAwE;AACxH,KAAI;EACF,MAAM,UAAU,CACd,cACI;GACE,MAAM;GACN,SAAS;GACV,GACD,OACL,CAAC,OAAO,QAAQ;EAEjB,MAAM,UAAU;oCACJ;IAAE,UAAU;IAAO,YAAY,EAAE;IAAE,CAAC;kCACrC;IACP,QAAQ,EACN,MAAM,iBACP;IACD,YAAY,WAAW,eAAe,SAAY,EAAE;IACpD;IACD,CAAC;mDACe;IACf,QAAQ,EACN,MAAM,kBACP;IACD,YAAY,WAAW,gBAAgB,SAAY,EAAE;IACrD;IACD,CAAC;GACH,CAAC,OAAO,QAAQ;EAEjB,MAAMC,gBAAwB;GAC5B,MAAM,QAAQ,KAAK;GACnB,OAAO,EACL,MAAM,SACP;GACD,QAAQ;IACN,MAAM;IACN,OAAO;IACP,YAAY;IACb;GACD;GACD;EAED,MAAM,EAAE,OAAO,UAAU,iCAAgB,EACvC,QAAQ,eACT,CAAC;AAEF,MAAI,MACF,QAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;IACb,CACF;GACD,SAAS;GACV;EAGH,MAAM,WAAW,MAAM,KAAK,oCAAmB,MAAM,EAAE,SAAS,OAAO,CAAC,CAAC;EAEzE,MAAM,UAAU,MAAM,QAAQ,IAAI,SAAS;AAE3C,SAAO,EACL,SAAS,CAKP;GACE,MAAM;GACN,MAAM,WAAW,KAAK,UAAU,eAAe,MAAM,EAAE;GACxD,EACD;GACE,MAAM;GACN,MAAM,UAAU,KAAK,UAAU,SAAS,MAAM,EAAE;GACjD,CACF,EACF;UACM,GAAG;AAGV,SAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MANQ,EAMI;IACb,CACF;GACD,SAAS;GACV;;;;;;AC3FL,eAAsB,cAAc;AAClC,KAAI;EACF,MAAM,YAAY,IAAIC,iEAAsB;EAC5C,MAAM,SAAS,IAAIC,mDAAU;GAC3B,MAAM;GACN;GACD,CAAC;AAEF,SAAO,KAAK,YAAY,8CAA8C,eAAe,OAAO,SAAS;AAErG,QAAM,OAAO,QAAQ,UAAU;UACxB,OAAO;AACd,UAAQ,MAAM,2BAA2B,MAAM;AAC/C,uBAAQ,KAAK,EAAE"}
@@ -8,7 +8,7 @@ import { pluginReactQuery } from "@kubb/plugin-react-query";
8
8
  import { getSource, safeBuild } from "@kubb/core";
9
9
 
10
10
  //#region package.json
11
- var version = "3.18.3";
11
+ var version = "4.0.2";
12
12
 
13
13
  //#endregion
14
14
  //#region src/schemas/generateSchema.ts
@@ -70,11 +70,10 @@ async function generate({ plugin, openApi, operationId }) {
70
70
  text: `Files: ${JSON.stringify(sources, null, 2)}`
71
71
  }] };
72
72
  } catch (e) {
73
- const error = e;
74
73
  return {
75
74
  content: [{
76
75
  type: "text",
77
- text: error.message
76
+ text: e.message
78
77
  }],
79
78
  isError: true
80
79
  };
@@ -100,4 +99,4 @@ async function startServer() {
100
99
 
101
100
  //#endregion
102
101
  export { startServer };
103
- //# sourceMappingURL=src-C54GXQyZ.js.map
102
+ //# sourceMappingURL=src-BWjpwH8V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-BWjpwH8V.js","names":["definedConfig: Config"],"sources":["../package.json","../src/schemas/generateSchema.ts","../src/tools/generate.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/mcp\",\n \"version\": \"4.0.2\",\n \"description\": \"Generator MCP\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"MCP\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/mcp\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./server\": {\n \"import\": \"./dist/server.js\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"typesVersions\": {\n \"*\": {\n \"server\": [\n \"./dist/server.d.ts\"\n ]\n }\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"start:mcp\": \"bun --watch ./src/server.ts\",\n \"debug:mcp\": \"npx -y @modelcontextprotocol/inspector node ./dist/server.js\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/plugin-client\": \"workspace:*\",\n \"@kubb/plugin-cypress\": \"workspace:*\",\n \"@kubb/plugin-faker\": \"workspace:*\",\n \"@kubb/plugin-mcp\": \"workspace:*\",\n \"@kubb/plugin-msw\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@kubb/plugin-react-query\": \"workspace:*\",\n \"@kubb/plugin-redoc\": \"workspace:*\",\n \"@kubb/plugin-swr\": \"workspace:*\",\n \"@kubb/plugin-ts\": \"workspace:*\",\n \"@kubb/plugin-zod\": \"workspace:*\",\n \"@kubb/react\": \"workspace:*\",\n \"@modelcontextprotocol/sdk\": \"^1.18.1\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/node\": \"catalog:\",\n \"@types/react\": \"catalog:\",\n \"tsdown\": \"catalog:\",\n \"typescript\": \"catalog:\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { z } from 'zod'\n\nexport const generateSchema = z.object({\n openApi: z.string().default('https://petstore.swagger.io/v2/swagger.json').describe('OpenAPI/Swagger spec'),\n plugin: z.enum(['typescript', 'react-query']).describe('Plugin to use'),\n operationId: z.string().nullable().optional().describe('Which operationId should be used'),\n // schemaName: z.string().nullable().optional().describe('Which schema should be used'),\n})\n","import { pluginTs } from '@kubb/plugin-ts'\nimport { type Include, pluginOas } from '@kubb/plugin-oas'\nimport { pluginReactQuery } from '@kubb/plugin-react-query'\n\nimport { type Config, safeBuild, type Plugin, getSource } from '@kubb/core'\nimport type { generateSchema } from '../schemas/generateSchema.ts'\nimport type { z } from 'zod'\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.d.ts'\n\nexport async function generate({ plugin, openApi, operationId }: z.infer<typeof generateSchema>): Promise<CallToolResult> {\n try {\n const include = [\n operationId\n ? {\n type: 'operationId',\n pattern: operationId,\n }\n : undefined,\n ].filter(Boolean) as Include[]\n\n const plugins = [\n pluginOas({ validate: false, generators: [] }),\n pluginTs({\n output: {\n path: 'typescript.ts',\n },\n generators: plugin === 'typescript' ? undefined : [],\n include,\n }),\n pluginReactQuery({\n output: {\n path: 'react-query.ts',\n },\n generators: plugin === 'react-query' ? undefined : [],\n include,\n }),\n ].filter(Boolean) as Plugin[]\n\n const definedConfig: Config = {\n root: process.cwd(),\n input: {\n data: openApi,\n },\n output: {\n path: './',\n write: false,\n barrelType: 'named',\n },\n plugins,\n }\n\n const { files, error } = await safeBuild({\n config: definedConfig,\n })\n\n if (error) {\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n\n const promises = files.map((file) => getSource(file, { extname: '.ts' }))\n\n const sources = await Promise.all(promises)\n\n return {\n content: [\n // {\n // type: 'resource',\n // resource: {}\n // },\n {\n type: 'text',\n text: `Config: ${JSON.stringify(definedConfig, null, 2)}`,\n },\n {\n type: 'text',\n text: `Files: ${JSON.stringify(sources, null, 2)}`,\n },\n ],\n }\n } catch (e) {\n const error = e as Error\n\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n}\n","import process from 'node:process'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { version } from '../package.json'\nimport { generateSchema } from './schemas/generateSchema.ts'\nimport { generate } from './tools/generate.ts'\n\nexport async function startServer() {\n try {\n const transport = new StdioServerTransport()\n const server = new McpServer({\n name: 'Kubb',\n version,\n })\n\n server.tool('generate', 'generate an openAPI spec to a code snippet', generateSchema.shape, generate)\n\n await server.connect(transport)\n } catch (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;;;;;cAEa;;;;ACAb,MAAa,iBAAiB,EAAE,OAAO;CACrC,SAAS,EAAE,QAAQ,CAAC,QAAQ,8CAA8C,CAAC,SAAS,uBAAuB;CAC3G,QAAQ,EAAE,KAAK,CAAC,cAAc,cAAc,CAAC,CAAC,SAAS,gBAAgB;CACvE,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,mCAAmC;CAE3F,CAAC;;;;ACEF,eAAsB,SAAS,EAAE,QAAQ,SAAS,eAAwE;AACxH,KAAI;EACF,MAAM,UAAU,CACd,cACI;GACE,MAAM;GACN,SAAS;GACV,GACD,OACL,CAAC,OAAO,QAAQ;EAEjB,MAAM,UAAU;GACd,UAAU;IAAE,UAAU;IAAO,YAAY,EAAE;IAAE,CAAC;GAC9C,SAAS;IACP,QAAQ,EACN,MAAM,iBACP;IACD,YAAY,WAAW,eAAe,SAAY,EAAE;IACpD;IACD,CAAC;GACF,iBAAiB;IACf,QAAQ,EACN,MAAM,kBACP;IACD,YAAY,WAAW,gBAAgB,SAAY,EAAE;IACrD;IACD,CAAC;GACH,CAAC,OAAO,QAAQ;EAEjB,MAAMA,gBAAwB;GAC5B,MAAM,QAAQ,KAAK;GACnB,OAAO,EACL,MAAM,SACP;GACD,QAAQ;IACN,MAAM;IACN,OAAO;IACP,YAAY;IACb;GACD;GACD;EAED,MAAM,EAAE,OAAO,UAAU,MAAM,UAAU,EACvC,QAAQ,eACT,CAAC;AAEF,MAAI,MACF,QAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;IACb,CACF;GACD,SAAS;GACV;EAGH,MAAM,WAAW,MAAM,KAAK,SAAS,UAAU,MAAM,EAAE,SAAS,OAAO,CAAC,CAAC;EAEzE,MAAM,UAAU,MAAM,QAAQ,IAAI,SAAS;AAE3C,SAAO,EACL,SAAS,CAKP;GACE,MAAM;GACN,MAAM,WAAW,KAAK,UAAU,eAAe,MAAM,EAAE;GACxD,EACD;GACE,MAAM;GACN,MAAM,UAAU,KAAK,UAAU,SAAS,MAAM,EAAE;GACjD,CACF,EACF;UACM,GAAG;AAGV,SAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MANQ,EAMI;IACb,CACF;GACD,SAAS;GACV;;;;;;AC3FL,eAAsB,cAAc;AAClC,KAAI;EACF,MAAM,YAAY,IAAI,sBAAsB;EAC5C,MAAM,SAAS,IAAI,UAAU;GAC3B,MAAM;GACN;GACD,CAAC;AAEF,SAAO,KAAK,YAAY,8CAA8C,eAAe,OAAO,SAAS;AAErG,QAAM,OAAO,QAAQ,UAAU;UACxB,OAAO;AACd,UAAQ,MAAM,2BAA2B,MAAM;AAC/C,YAAQ,KAAK,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/mcp",
3
- "version": "3.18.3",
3
+ "version": "4.0.2",
4
4
  "description": "Generator MCP",
5
5
  "keywords": [
6
6
  "typescript",
@@ -46,29 +46,28 @@
46
46
  "!/**/__tests__/**"
47
47
  ],
48
48
  "dependencies": {
49
- "@modelcontextprotocol/sdk": "^1.17.4",
49
+ "@modelcontextprotocol/sdk": "^1.18.1",
50
50
  "zod": "^3.25.76",
51
- "@kubb/plugin-client": "3.18.3",
52
- "@kubb/plugin-cypress": "3.18.3",
53
- "@kubb/plugin-faker": "3.18.3",
54
- "@kubb/plugin-mcp": "3.18.3",
55
- "@kubb/plugin-msw": "3.18.3",
56
- "@kubb/plugin-oas": "3.18.3",
57
- "@kubb/plugin-react-query": "3.18.3",
58
- "@kubb/core": "3.18.3",
59
- "@kubb/plugin-redoc": "3.18.3",
60
- "@kubb/plugin-swr": "3.18.3",
61
- "@kubb/plugin-ts": "3.18.3",
62
- "@kubb/plugin-zod": "3.18.3",
63
- "@kubb/react": "3.18.3"
51
+ "@kubb/core": "4.0.2",
52
+ "@kubb/plugin-client": "4.0.2",
53
+ "@kubb/plugin-cypress": "4.0.2",
54
+ "@kubb/plugin-faker": "4.0.2",
55
+ "@kubb/plugin-mcp": "4.0.2",
56
+ "@kubb/plugin-msw": "4.0.2",
57
+ "@kubb/plugin-oas": "4.0.2",
58
+ "@kubb/plugin-react-query": "4.0.2",
59
+ "@kubb/plugin-redoc": "4.0.2",
60
+ "@kubb/plugin-swr": "4.0.2",
61
+ "@kubb/plugin-ts": "4.0.2",
62
+ "@kubb/plugin-zod": "4.0.2",
63
+ "@kubb/react": "4.0.2"
64
64
  },
65
65
  "devDependencies": {
66
- "@types/node": "^20.19.11",
66
+ "@types/node": "^20.19.17",
67
67
  "@types/react": "^18.3.24",
68
68
  "tsdown": "^0.14.2",
69
69
  "typescript": "^5.9.2",
70
- "@kubb/config-ts": "3.18.3",
71
- "@kubb/plugin-oas": "3.18.3"
70
+ "@kubb/plugin-oas": "4.0.2"
72
71
  },
73
72
  "engines": {
74
73
  "node": ">=20"
@@ -1 +0,0 @@
1
- {"version":3,"file":"src-C54GXQyZ.js","names":["definedConfig: Config"],"sources":["../package.json","../src/schemas/generateSchema.ts","../src/tools/generate.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/mcp\",\n \"version\": \"3.18.3\",\n \"description\": \"Generator MCP\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"MCP\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/mcp\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./server\": {\n \"import\": \"./dist/server.js\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"typesVersions\": {\n \"*\": {\n \"server\": [\n \"./dist/server.d.ts\"\n ]\n }\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"start:mcp\": \"bun --watch ./src/server.ts\",\n \"debug:mcp\": \"npx -y @modelcontextprotocol/inspector node ./dist/server.js\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/plugin-client\": \"workspace:*\",\n \"@kubb/plugin-cypress\": \"workspace:*\",\n \"@kubb/plugin-faker\": \"workspace:*\",\n \"@kubb/plugin-mcp\": \"workspace:*\",\n \"@kubb/plugin-msw\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@kubb/plugin-react-query\": \"workspace:*\",\n \"@kubb/plugin-redoc\": \"workspace:*\",\n \"@kubb/plugin-swr\": \"workspace:*\",\n \"@kubb/plugin-ts\": \"workspace:*\",\n \"@kubb/plugin-zod\": \"workspace:*\",\n \"@kubb/react\": \"workspace:*\",\n \"@modelcontextprotocol/sdk\": \"^1.17.4\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@kubb/config-ts\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/node\": \"catalog:\",\n \"@types/react\": \"catalog:\",\n \"tsdown\": \"catalog:\",\n \"typescript\": \"catalog:\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { z } from 'zod'\n\nexport const generateSchema = z.object({\n openApi: z.string().default('https://petstore.swagger.io/v2/swagger.json').describe('OpenAPI/Swagger spec'),\n plugin: z.enum(['typescript', 'react-query']).describe('Plugin to use'),\n operationId: z.string().nullable().optional().describe('Which operationId should be used'),\n // schemaName: z.string().nullable().optional().describe('Which schema should be used'),\n})\n","import { pluginTs } from '@kubb/plugin-ts'\nimport { type Include, pluginOas } from '@kubb/plugin-oas'\nimport { pluginReactQuery } from '@kubb/plugin-react-query'\n\nimport { type Config, safeBuild, type Plugin, getSource } from '@kubb/core'\nimport type { generateSchema } from '../schemas/generateSchema.ts'\nimport type { z } from 'zod'\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.d.ts'\n\nexport async function generate({ plugin, openApi, operationId }: z.infer<typeof generateSchema>): Promise<CallToolResult> {\n try {\n const include = [\n operationId\n ? {\n type: 'operationId',\n pattern: operationId,\n }\n : undefined,\n ].filter(Boolean) as Include[]\n\n const plugins = [\n pluginOas({ validate: false, generators: [] }),\n pluginTs({\n output: {\n path: 'typescript.ts',\n },\n generators: plugin === 'typescript' ? undefined : [],\n include,\n }),\n pluginReactQuery({\n output: {\n path: 'react-query.ts',\n },\n generators: plugin === 'react-query' ? undefined : [],\n include,\n }),\n ].filter(Boolean) as Plugin[]\n\n const definedConfig: Config = {\n root: process.cwd(),\n input: {\n data: openApi,\n },\n output: {\n path: './',\n write: false,\n barrelType: 'named',\n },\n plugins,\n }\n\n const { files, error } = await safeBuild({\n config: definedConfig,\n })\n\n if (error) {\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n\n const promises = files.map((file) => getSource(file, { extname: '.ts' }))\n\n const sources = await Promise.all(promises)\n\n return {\n content: [\n // {\n // type: 'resource',\n // resource: {}\n // },\n {\n type: 'text',\n text: `Config: ${JSON.stringify(definedConfig, null, 2)}`,\n },\n {\n type: 'text',\n text: `Files: ${JSON.stringify(sources, null, 2)}`,\n },\n ],\n }\n } catch (e) {\n const error = e as Error\n\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n}\n","import process from 'node:process'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { version } from '../package.json'\nimport { generateSchema } from './schemas/generateSchema.ts'\nimport { generate } from './tools/generate.ts'\n\nexport async function startServer() {\n try {\n const transport = new StdioServerTransport()\n const server = new McpServer({\n name: 'Kubb',\n version,\n })\n\n server.tool('generate', 'generate an openAPI spec to a code snippet', generateSchema.shape, generate)\n\n await server.connect(transport)\n } catch (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;;;;;cAEa;;;;ACAb,MAAa,iBAAiB,EAAE,OAAO;CACrC,SAAS,EAAE,SAAS,QAAQ,+CAA+C,SAAS;CACpF,QAAQ,EAAE,KAAK,CAAC,cAAc,gBAAgB,SAAS;CACvD,aAAa,EAAE,SAAS,WAAW,WAAW,SAAS;;;;;ACIzD,eAAsB,SAAS,EAAE,QAAQ,SAAS,eAAwE;AACxH,KAAI;EACF,MAAM,UAAU,CACd,cACI;GACE,MAAM;GACN,SAAS;MAEX,QACJ,OAAO;EAET,MAAM,UAAU;GACd,UAAU;IAAE,UAAU;IAAO,YAAY;;GACzC,SAAS;IACP,QAAQ,EACN,MAAM;IAER,YAAY,WAAW,eAAe,SAAY;IAClD;;GAEF,iBAAiB;IACf,QAAQ,EACN,MAAM;IAER,YAAY,WAAW,gBAAgB,SAAY;IACnD;;IAEF,OAAO;EAET,MAAMA,gBAAwB;GAC5B,MAAM,QAAQ;GACd,OAAO,EACL,MAAM;GAER,QAAQ;IACN,MAAM;IACN,OAAO;IACP,YAAY;;GAEd;;EAGF,MAAM,EAAE,OAAO,UAAU,MAAM,UAAU,EACvC,QAAQ;AAGV,MAAI,MACF,QAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;;GAGhB,SAAS;;EAIb,MAAM,WAAW,MAAM,KAAK,SAAS,UAAU,MAAM,EAAE,SAAS;EAEhE,MAAM,UAAU,MAAM,QAAQ,IAAI;AAElC,SAAO,EACL,SAAS,CAKP;GACE,MAAM;GACN,MAAM,WAAW,KAAK,UAAU,eAAe,MAAM;KAEvD;GACE,MAAM;GACN,MAAM,UAAU,KAAK,UAAU,SAAS,MAAM;;UAI7C,GAAG;EACV,MAAM,QAAQ;AAEd,SAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;;GAGhB,SAAS;;;;;;;AC1Ff,eAAsB,cAAc;AAClC,KAAI;EACF,MAAM,YAAY,IAAI;EACtB,MAAM,SAAS,IAAI,UAAU;GAC3B,MAAM;GACN;;AAGF,SAAO,KAAK,YAAY,8CAA8C,eAAe,OAAO;AAE5F,QAAM,OAAO,QAAQ;UACd,OAAO;AACd,UAAQ,MAAM,2BAA2B;AACzC,YAAQ,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"src-jzj3aFS3.cjs","names":["z","definedConfig: Config","StdioServerTransport","McpServer"],"sources":["../package.json","../src/schemas/generateSchema.ts","../src/tools/generate.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/mcp\",\n \"version\": \"3.18.3\",\n \"description\": \"Generator MCP\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"MCP\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/mcp\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./server\": {\n \"import\": \"./dist/server.js\",\n \"require\": \"./dist/server.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"typesVersions\": {\n \"*\": {\n \"server\": [\n \"./dist/server.d.ts\"\n ]\n }\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"start:mcp\": \"bun --watch ./src/server.ts\",\n \"debug:mcp\": \"npx -y @modelcontextprotocol/inspector node ./dist/server.js\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@kubb/plugin-client\": \"workspace:*\",\n \"@kubb/plugin-cypress\": \"workspace:*\",\n \"@kubb/plugin-faker\": \"workspace:*\",\n \"@kubb/plugin-mcp\": \"workspace:*\",\n \"@kubb/plugin-msw\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@kubb/plugin-react-query\": \"workspace:*\",\n \"@kubb/plugin-redoc\": \"workspace:*\",\n \"@kubb/plugin-swr\": \"workspace:*\",\n \"@kubb/plugin-ts\": \"workspace:*\",\n \"@kubb/plugin-zod\": \"workspace:*\",\n \"@kubb/react\": \"workspace:*\",\n \"@modelcontextprotocol/sdk\": \"^1.17.4\",\n \"zod\": \"^3.25.76\"\n },\n \"devDependencies\": {\n \"@kubb/config-ts\": \"workspace:*\",\n \"@kubb/plugin-oas\": \"workspace:*\",\n \"@types/node\": \"catalog:\",\n \"@types/react\": \"catalog:\",\n \"tsdown\": \"catalog:\",\n \"typescript\": \"catalog:\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { z } from 'zod'\n\nexport const generateSchema = z.object({\n openApi: z.string().default('https://petstore.swagger.io/v2/swagger.json').describe('OpenAPI/Swagger spec'),\n plugin: z.enum(['typescript', 'react-query']).describe('Plugin to use'),\n operationId: z.string().nullable().optional().describe('Which operationId should be used'),\n // schemaName: z.string().nullable().optional().describe('Which schema should be used'),\n})\n","import { pluginTs } from '@kubb/plugin-ts'\nimport { type Include, pluginOas } from '@kubb/plugin-oas'\nimport { pluginReactQuery } from '@kubb/plugin-react-query'\n\nimport { type Config, safeBuild, type Plugin, getSource } from '@kubb/core'\nimport type { generateSchema } from '../schemas/generateSchema.ts'\nimport type { z } from 'zod'\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.d.ts'\n\nexport async function generate({ plugin, openApi, operationId }: z.infer<typeof generateSchema>): Promise<CallToolResult> {\n try {\n const include = [\n operationId\n ? {\n type: 'operationId',\n pattern: operationId,\n }\n : undefined,\n ].filter(Boolean) as Include[]\n\n const plugins = [\n pluginOas({ validate: false, generators: [] }),\n pluginTs({\n output: {\n path: 'typescript.ts',\n },\n generators: plugin === 'typescript' ? undefined : [],\n include,\n }),\n pluginReactQuery({\n output: {\n path: 'react-query.ts',\n },\n generators: plugin === 'react-query' ? undefined : [],\n include,\n }),\n ].filter(Boolean) as Plugin[]\n\n const definedConfig: Config = {\n root: process.cwd(),\n input: {\n data: openApi,\n },\n output: {\n path: './',\n write: false,\n barrelType: 'named',\n },\n plugins,\n }\n\n const { files, error } = await safeBuild({\n config: definedConfig,\n })\n\n if (error) {\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n\n const promises = files.map((file) => getSource(file, { extname: '.ts' }))\n\n const sources = await Promise.all(promises)\n\n return {\n content: [\n // {\n // type: 'resource',\n // resource: {}\n // },\n {\n type: 'text',\n text: `Config: ${JSON.stringify(definedConfig, null, 2)}`,\n },\n {\n type: 'text',\n text: `Files: ${JSON.stringify(sources, null, 2)}`,\n },\n ],\n }\n } catch (e) {\n const error = e as Error\n\n return {\n content: [\n {\n type: 'text',\n text: error.message,\n },\n ],\n isError: true,\n }\n }\n}\n","import process from 'node:process'\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { version } from '../package.json'\nimport { generateSchema } from './schemas/generateSchema.ts'\nimport { generate } from './tools/generate.ts'\n\nexport async function startServer() {\n try {\n const transport = new StdioServerTransport()\n const server = new McpServer({\n name: 'Kubb',\n version,\n })\n\n server.tool('generate', 'generate an openAPI spec to a code snippet', generateSchema.shape, generate)\n\n await server.connect(transport)\n } catch (error) {\n console.error('Failed to start server:', error)\n process.exit(1)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEa;;;;ACAb,MAAa,iBAAiBA,MAAE,OAAO;CACrC,SAASA,MAAE,SAAS,QAAQ,+CAA+C,SAAS;CACpF,QAAQA,MAAE,KAAK,CAAC,cAAc,gBAAgB,SAAS;CACvD,aAAaA,MAAE,SAAS,WAAW,WAAW,SAAS;;;;;ACIzD,eAAsB,SAAS,EAAE,QAAQ,SAAS,eAAwE;AACxH,KAAI;EACF,MAAM,UAAU,CACd,cACI;GACE,MAAM;GACN,SAAS;MAEX,QACJ,OAAO;EAET,MAAM,UAAU;oCACJ;IAAE,UAAU;IAAO,YAAY;;kCAChC;IACP,QAAQ,EACN,MAAM;IAER,YAAY,WAAW,eAAe,SAAY;IAClD;;mDAEe;IACf,QAAQ,EACN,MAAM;IAER,YAAY,WAAW,gBAAgB,SAAY;IACnD;;IAEF,OAAO;EAET,MAAMC,gBAAwB;GAC5B,MAAM,QAAQ;GACd,OAAO,EACL,MAAM;GAER,QAAQ;IACN,MAAM;IACN,OAAO;IACP,YAAY;;GAEd;;EAGF,MAAM,EAAE,OAAO,UAAU,iCAAgB,EACvC,QAAQ;AAGV,MAAI,MACF,QAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;;GAGhB,SAAS;;EAIb,MAAM,WAAW,MAAM,KAAK,oCAAmB,MAAM,EAAE,SAAS;EAEhE,MAAM,UAAU,MAAM,QAAQ,IAAI;AAElC,SAAO,EACL,SAAS,CAKP;GACE,MAAM;GACN,MAAM,WAAW,KAAK,UAAU,eAAe,MAAM;KAEvD;GACE,MAAM;GACN,MAAM,UAAU,KAAK,UAAU,SAAS,MAAM;;UAI7C,GAAG;EACV,MAAM,QAAQ;AAEd,SAAO;GACL,SAAS,CACP;IACE,MAAM;IACN,MAAM,MAAM;;GAGhB,SAAS;;;;;;;AC1Ff,eAAsB,cAAc;AAClC,KAAI;EACF,MAAM,YAAY,IAAIC;EACtB,MAAM,SAAS,IAAIC,mDAAU;GAC3B,MAAM;GACN;;AAGF,SAAO,KAAK,YAAY,8CAA8C,eAAe,OAAO;AAE5F,QAAM,OAAO,QAAQ;UACd,OAAO;AACd,UAAQ,MAAM,2BAA2B;AACzC,uBAAQ,KAAK"}