@kubb/cli 4.32.4 → 4.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-CJ69TqoO.js +87 -0
- package/dist/agent-CJ69TqoO.js.map +1 -0
- package/dist/agent-CduUX7Ye.cjs +91 -0
- package/dist/agent-CduUX7Ye.cjs.map +1 -0
- package/dist/agent-D0A3RQho.js +57 -0
- package/dist/agent-D0A3RQho.js.map +1 -0
- package/dist/agent-DrnwQBZf.cjs +60 -0
- package/dist/agent-DrnwQBZf.cjs.map +1 -0
- package/dist/constants-CEKRremI.js +79 -0
- package/dist/constants-CEKRremI.js.map +1 -0
- package/dist/constants-CnPOlsJq.cjs +126 -0
- package/dist/constants-CnPOlsJq.cjs.map +1 -0
- package/dist/errors-BUjJsNoe.cjs +44 -0
- package/dist/errors-BUjJsNoe.cjs.map +1 -0
- package/dist/errors-bSLTEh4e.js +27 -0
- package/dist/errors-bSLTEh4e.js.map +1 -0
- package/dist/{generate-COj0aMS6.cjs → generate-ByMgAV76.cjs} +423 -577
- package/dist/generate-ByMgAV76.cjs.map +1 -0
- package/dist/generate-CiUPO5ds.cjs +65 -0
- package/dist/generate-CiUPO5ds.cjs.map +1 -0
- package/dist/generate-DIIxtkWT.js +66 -0
- package/dist/generate-DIIxtkWT.js.map +1 -0
- package/dist/{generate-CpWtSc45.js → generate-HP5ySfjV.js} +422 -577
- package/dist/generate-HP5ySfjV.js.map +1 -0
- package/dist/index.cjs +226 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +226 -35
- package/dist/index.js.map +1 -1
- package/dist/init-Cd1hCb7q.cjs +296 -0
- package/dist/init-Cd1hCb7q.cjs.map +1 -0
- package/dist/init-DLNrkDF4.js +25 -0
- package/dist/init-DLNrkDF4.js.map +1 -0
- package/dist/init-Df_aXezV.cjs +24 -0
- package/dist/init-Df_aXezV.cjs.map +1 -0
- package/dist/init-DyKK2fTp.js +291 -0
- package/dist/init-DyKK2fTp.js.map +1 -0
- package/dist/jiti-BdskUHhD.cjs +16 -0
- package/dist/jiti-BdskUHhD.cjs.map +1 -0
- package/dist/jiti-Cl7t20dO.js +11 -0
- package/dist/jiti-Cl7t20dO.js.map +1 -0
- package/dist/mcp-B73FC8dF.cjs +42 -0
- package/dist/mcp-B73FC8dF.cjs.map +1 -0
- package/dist/mcp-Bd9LITaI.js +16 -0
- package/dist/mcp-Bd9LITaI.js.map +1 -0
- package/dist/mcp-Cf-1dsB-.js +41 -0
- package/dist/mcp-Cf-1dsB-.js.map +1 -0
- package/dist/mcp-Clg-Qnkr.cjs +15 -0
- package/dist/mcp-Clg-Qnkr.cjs.map +1 -0
- package/dist/package-681jTtCk.js +6 -0
- package/dist/package-681jTtCk.js.map +1 -0
- package/dist/{package-aNQWvWbS.cjs → package-aKgzEJtp.cjs} +2 -2
- package/dist/package-aKgzEJtp.cjs.map +1 -0
- package/dist/{telemetry-DYWvlxqs.js → telemetry-C4gOKX2x.js} +31 -10
- package/dist/telemetry-C4gOKX2x.js.map +1 -0
- package/dist/{telemetry-BDSSqUiG.cjs → telemetry-T5IA2dWA.cjs} +40 -7
- package/dist/telemetry-T5IA2dWA.cjs.map +1 -0
- package/dist/types-CLtz0jem.js +25 -0
- package/dist/types-CLtz0jem.js.map +1 -0
- package/dist/types-Ck2lzFON.cjs +36 -0
- package/dist/types-Ck2lzFON.cjs.map +1 -0
- package/dist/validate-Chjg23AE.js +41 -0
- package/dist/validate-Chjg23AE.js.map +1 -0
- package/dist/validate-Cr26q5xX.js +25 -0
- package/dist/validate-Cr26q5xX.js.map +1 -0
- package/dist/validate-DURmg-2Q.cjs +24 -0
- package/dist/validate-DURmg-2Q.cjs.map +1 -0
- package/dist/validate-Dqi9T_c4.cjs +42 -0
- package/dist/validate-Dqi9T_c4.cjs.map +1 -0
- package/package.json +5 -6
- package/src/cli/adapters/nodeAdapter.ts +159 -0
- package/src/cli/help.ts +36 -0
- package/src/cli/index.ts +16 -0
- package/src/cli/parse.ts +18 -0
- package/src/cli/schema.ts +38 -0
- package/src/cli/types.ts +95 -0
- package/src/commands/agent/start.ts +27 -136
- package/src/commands/agent.ts +6 -25
- package/src/commands/generate.ts +26 -158
- package/src/commands/init.ts +9 -360
- package/src/commands/mcp.ts +7 -52
- package/src/commands/validate.ts +9 -60
- package/src/constants.ts +77 -0
- package/src/index.ts +36 -42
- package/src/loggers/clackLogger.ts +42 -140
- package/src/loggers/fileSystemLogger.ts +1 -12
- package/src/loggers/githubActionsLogger.ts +36 -101
- package/src/loggers/plainLogger.ts +23 -70
- package/src/loggers/utils.ts +66 -2
- package/src/runners/agent.ts +100 -0
- package/src/runners/generate.ts +208 -100
- package/src/runners/init.ts +322 -0
- package/src/runners/mcp.ts +32 -0
- package/src/runners/validate.ts +35 -0
- package/src/utils/Writables.ts +2 -2
- package/src/utils/envDetection.ts +34 -0
- package/src/utils/errors.ts +23 -0
- package/src/utils/executeHooks.ts +18 -6
- package/src/utils/getCosmiConfig.ts +10 -11
- package/src/utils/getIntro.ts +17 -18
- package/src/utils/getSummary.ts +11 -15
- package/src/utils/jiti.ts +9 -0
- package/src/utils/packageManager.ts +3 -3
- package/src/utils/randomColor.ts +3 -12
- package/src/utils/runHook.ts +75 -0
- package/src/utils/spawnAsync.ts +47 -0
- package/src/utils/telemetry.ts +8 -25
- package/src/utils/watcher.ts +2 -4
- package/dist/agent-6COck3B9.cjs +0 -20
- package/dist/agent-6COck3B9.cjs.map +0 -1
- package/dist/agent-DMm6c5Vg.js +0 -20
- package/dist/agent-DMm6c5Vg.js.map +0 -1
- package/dist/generate-COj0aMS6.cjs.map +0 -1
- package/dist/generate-CpWtSc45.js.map +0 -1
- package/dist/init-Bdn3_qir.js +0 -304
- package/dist/init-Bdn3_qir.js.map +0 -1
- package/dist/init-CFW2kWY8.cjs +0 -308
- package/dist/init-CFW2kWY8.cjs.map +0 -1
- package/dist/mcp-DkwtARfo.cjs +0 -57
- package/dist/mcp-DkwtARfo.cjs.map +0 -1
- package/dist/mcp-DrH93Vq4.js +0 -57
- package/dist/mcp-DrH93Vq4.js.map +0 -1
- package/dist/package-BnJbGmLm.js +0 -6
- package/dist/package-BnJbGmLm.js.map +0 -1
- package/dist/package-aNQWvWbS.cjs.map +0 -1
- package/dist/start-CqTUu14n.js +0 -131
- package/dist/start-CqTUu14n.js.map +0 -1
- package/dist/start-D-rsIJGo.cjs +0 -134
- package/dist/start-D-rsIJGo.cjs.map +0 -1
- package/dist/telemetry-BDSSqUiG.cjs.map +0 -1
- package/dist/telemetry-DYWvlxqs.js.map +0 -1
- package/dist/validate-BlV8L8gC.js +0 -66
- package/dist/validate-BlV8L8gC.js.map +0 -1
- package/dist/validate-COhZUXF8.cjs +0 -66
- package/dist/validate-COhZUXF8.cjs.map +0 -1
- package/src/loggers/envDetection.ts +0 -28
- package/src/loggers/index.ts +0 -5
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import "./chunk--u3MIqq1.js";
|
|
2
|
+
import { t as version } from "./package-681jTtCk.js";
|
|
3
|
+
import { n as defineCommand } from "./types-CLtz0jem.js";
|
|
4
|
+
//#region src/commands/init.ts
|
|
5
|
+
const command = defineCommand({
|
|
6
|
+
name: "init",
|
|
7
|
+
description: "Initialize a new Kubb project with interactive setup",
|
|
8
|
+
options: { yes: {
|
|
9
|
+
type: "boolean",
|
|
10
|
+
description: "Skip prompts and use default options",
|
|
11
|
+
short: "y",
|
|
12
|
+
default: false
|
|
13
|
+
} },
|
|
14
|
+
async run({ values }) {
|
|
15
|
+
const { runInit } = await import("./init-DyKK2fTp.js");
|
|
16
|
+
await runInit({
|
|
17
|
+
yes: values.yes,
|
|
18
|
+
version
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
//#endregion
|
|
23
|
+
export { command };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=init-DLNrkDF4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-DLNrkDF4.js","names":[],"sources":["../src/commands/init.ts"],"sourcesContent":["import { version } from '../../package.json'\nimport { defineCommand } from '../cli/index.ts'\n\nexport const command = defineCommand({\n name: 'init',\n description: 'Initialize a new Kubb project with interactive setup',\n options: {\n yes: { type: 'boolean', description: 'Skip prompts and use default options', short: 'y', default: false },\n },\n async run({ values }) {\n const { runInit } = await import('../runners/init.ts')\n\n await runInit({ yes: values.yes, version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAU,cAAc;CACnC,MAAM;CACN,aAAa;CACb,SAAS,EACP,KAAK;EAAE,MAAM;EAAW,aAAa;EAAwC,OAAO;EAAK,SAAS;EAAO,EAC1G;CACD,MAAM,IAAI,EAAE,UAAU;EACpB,MAAM,EAAE,YAAY,MAAM,OAAO;AAEjC,QAAM,QAAQ;GAAE,KAAK,OAAO;GAAK;GAAS,CAAC;;CAE9C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require("./chunk-ByKO4r7w.cjs");
|
|
2
|
+
const require_package = require("./package-aKgzEJtp.cjs");
|
|
3
|
+
//#region src/commands/init.ts
|
|
4
|
+
const command = require("./types-Ck2lzFON.cjs").defineCommand({
|
|
5
|
+
name: "init",
|
|
6
|
+
description: "Initialize a new Kubb project with interactive setup",
|
|
7
|
+
options: { yes: {
|
|
8
|
+
type: "boolean",
|
|
9
|
+
description: "Skip prompts and use default options",
|
|
10
|
+
short: "y",
|
|
11
|
+
default: false
|
|
12
|
+
} },
|
|
13
|
+
async run({ values }) {
|
|
14
|
+
const { runInit } = await Promise.resolve().then(() => require("./init-Cd1hCb7q.cjs"));
|
|
15
|
+
await runInit({
|
|
16
|
+
yes: values.yes,
|
|
17
|
+
version: require_package.version
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.command = command;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=init-Df_aXezV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-Df_aXezV.cjs","names":["defineCommand"],"sources":["../src/commands/init.ts"],"sourcesContent":["import { version } from '../../package.json'\nimport { defineCommand } from '../cli/index.ts'\n\nexport const command = defineCommand({\n name: 'init',\n description: 'Initialize a new Kubb project with interactive setup',\n options: {\n yes: { type: 'boolean', description: 'Skip prompts and use default options', short: 'y', default: false },\n },\n async run({ values }) {\n const { runInit } = await import('../runners/init.ts')\n\n await runInit({ yes: values.yes, version })\n },\n})\n"],"mappings":";;;AAGA,MAAa,0CAAUA,cAAc;CACnC,MAAM;CACN,aAAa;CACb,SAAS,EACP,KAAK;EAAE,MAAM;EAAW,aAAa;EAAwC,OAAO;EAAK,SAAS;EAAO,EAC1G;CACD,MAAM,IAAI,EAAE,UAAU;EACpB,MAAM,EAAE,YAAY,MAAA,QAAA,SAAA,CAAA,WAAA,QAAM,sBAAA,CAAA;AAE1B,QAAM,QAAQ;GAAE,KAAK,OAAO;GAAK,SAAA,gBAAA;GAAS,CAAC;;CAE9C,CAAC"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import "./chunk--u3MIqq1.js";
|
|
2
|
+
import { o as initDefaults, s as pluginDefaultConfigs } from "./constants-CEKRremI.js";
|
|
3
|
+
import { styleText } from "node:util";
|
|
4
|
+
import process$1 from "node:process";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import * as clack from "@clack/prompts";
|
|
7
|
+
import { spawn } from "node:child_process";
|
|
8
|
+
import { detectPackageManager } from "@kubb/core";
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
//#region src/utils/spawnAsync.ts
|
|
11
|
+
/**
|
|
12
|
+
* Spawns `cmd args` and returns a promise.
|
|
13
|
+
* - Foreground (default): inherits stdio and resolves when the process exits successfully.
|
|
14
|
+
* - Detached: spawns in its own process group, un-refs the child, and resolves immediately.
|
|
15
|
+
*/
|
|
16
|
+
function spawnAsync(cmd, args, options = {}) {
|
|
17
|
+
const { cwd = process.cwd(), env, detached = false } = options;
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const child = spawn(cmd, args, {
|
|
20
|
+
stdio: detached ? "ignore" : "inherit",
|
|
21
|
+
cwd,
|
|
22
|
+
env,
|
|
23
|
+
detached
|
|
24
|
+
});
|
|
25
|
+
if (detached) {
|
|
26
|
+
child.unref();
|
|
27
|
+
resolve();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
child.on("close", (code, signal) => {
|
|
31
|
+
if (code === 0) resolve();
|
|
32
|
+
else if (signal !== null) reject(/* @__PURE__ */ new Error(`"${cmd} ${args.join(" ")}" was terminated by signal ${signal}`));
|
|
33
|
+
else reject(/* @__PURE__ */ new Error(`"${cmd} ${args.join(" ")}" exited with code ${code}`));
|
|
34
|
+
});
|
|
35
|
+
child.on("error", reject);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/utils/packageManager.ts
|
|
40
|
+
function hasPackageJson(cwd = process.cwd()) {
|
|
41
|
+
return fs.existsSync(path.join(cwd, "package.json"));
|
|
42
|
+
}
|
|
43
|
+
async function initPackageJson(cwd, packageManager) {
|
|
44
|
+
await spawnAsync(packageManager.name, {
|
|
45
|
+
npm: ["init", "-y"],
|
|
46
|
+
pnpm: ["init"],
|
|
47
|
+
yarn: ["init", "-y"],
|
|
48
|
+
bun: ["init", "-y"]
|
|
49
|
+
}[packageManager.name], { cwd });
|
|
50
|
+
}
|
|
51
|
+
async function installPackages(packages, packageManager, cwd = process.cwd()) {
|
|
52
|
+
await spawnAsync(packageManager.name, [...packageManager.installCommand, ...packages], { cwd });
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
//#region src/runners/init.ts
|
|
56
|
+
const availablePlugins = [
|
|
57
|
+
{
|
|
58
|
+
value: "plugin-oas",
|
|
59
|
+
label: "OpenAPI Parser",
|
|
60
|
+
hint: "Required",
|
|
61
|
+
packageName: "@kubb/plugin-oas",
|
|
62
|
+
importName: "pluginOas",
|
|
63
|
+
category: "core"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
value: "plugin-ts",
|
|
67
|
+
label: "TypeScript",
|
|
68
|
+
hint: "Recommended",
|
|
69
|
+
packageName: "@kubb/plugin-ts",
|
|
70
|
+
importName: "pluginTs",
|
|
71
|
+
category: "typescript"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
value: "plugin-client",
|
|
75
|
+
label: "Client (Fetch/Axios)",
|
|
76
|
+
packageName: "@kubb/plugin-client",
|
|
77
|
+
importName: "pluginClient",
|
|
78
|
+
category: "typescript"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
value: "plugin-react-query",
|
|
82
|
+
label: "React Query / TanStack Query",
|
|
83
|
+
packageName: "@kubb/plugin-react-query",
|
|
84
|
+
importName: "pluginReactQuery",
|
|
85
|
+
category: "query"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
value: "plugin-solid-query",
|
|
89
|
+
label: "Solid Query",
|
|
90
|
+
packageName: "@kubb/plugin-solid-query",
|
|
91
|
+
importName: "pluginSolidQuery",
|
|
92
|
+
category: "query"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
value: "plugin-svelte-query",
|
|
96
|
+
label: "Svelte Query",
|
|
97
|
+
packageName: "@kubb/plugin-svelte-query",
|
|
98
|
+
importName: "pluginSvelteQuery",
|
|
99
|
+
category: "query"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
value: "plugin-vue-query",
|
|
103
|
+
label: "Vue Query",
|
|
104
|
+
packageName: "@kubb/plugin-vue-query",
|
|
105
|
+
importName: "pluginVueQuery",
|
|
106
|
+
category: "query"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
value: "plugin-swr",
|
|
110
|
+
label: "SWR",
|
|
111
|
+
packageName: "@kubb/plugin-swr",
|
|
112
|
+
importName: "pluginSwr",
|
|
113
|
+
category: "query"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
value: "plugin-zod",
|
|
117
|
+
label: "Zod Schemas",
|
|
118
|
+
packageName: "@kubb/plugin-zod",
|
|
119
|
+
importName: "pluginZod",
|
|
120
|
+
category: "validation"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
value: "plugin-faker",
|
|
124
|
+
label: "Faker.js Mocks",
|
|
125
|
+
packageName: "@kubb/plugin-faker",
|
|
126
|
+
importName: "pluginFaker",
|
|
127
|
+
category: "mocking"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
value: "plugin-msw",
|
|
131
|
+
label: "MSW Handlers",
|
|
132
|
+
packageName: "@kubb/plugin-msw",
|
|
133
|
+
importName: "pluginMsw",
|
|
134
|
+
category: "mocking"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
value: "plugin-cypress",
|
|
138
|
+
label: "Cypress Tests",
|
|
139
|
+
packageName: "@kubb/plugin-cypress",
|
|
140
|
+
importName: "pluginCypress",
|
|
141
|
+
category: "testing"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
value: "plugin-redoc",
|
|
145
|
+
label: "ReDoc Documentation",
|
|
146
|
+
packageName: "@kubb/plugin-redoc",
|
|
147
|
+
importName: "pluginRedoc",
|
|
148
|
+
category: "docs"
|
|
149
|
+
}
|
|
150
|
+
];
|
|
151
|
+
function generateConfigFile(selectedPlugins, inputPath, outputPath) {
|
|
152
|
+
return `import { defineConfig } from '@kubb/core'
|
|
153
|
+
${selectedPlugins.map((plugin) => `import { ${plugin.importName} } from '${plugin.packageName}'`).join("\n")}
|
|
154
|
+
|
|
155
|
+
export default defineConfig({
|
|
156
|
+
root: '.',
|
|
157
|
+
input: {
|
|
158
|
+
path: '${inputPath}',
|
|
159
|
+
},
|
|
160
|
+
output: {
|
|
161
|
+
path: '${outputPath}',
|
|
162
|
+
clean: true,
|
|
163
|
+
},
|
|
164
|
+
plugins: [
|
|
165
|
+
${selectedPlugins.map((plugin) => {
|
|
166
|
+
return ` ${pluginDefaultConfigs[plugin.value] ?? `${plugin.importName}()`},`;
|
|
167
|
+
}).join("\n")}
|
|
168
|
+
],
|
|
169
|
+
})
|
|
170
|
+
`;
|
|
171
|
+
}
|
|
172
|
+
function cancelAndExit(message = "Operation cancelled.") {
|
|
173
|
+
clack.cancel(message);
|
|
174
|
+
process$1.exit(0);
|
|
175
|
+
}
|
|
176
|
+
async function runInit({ yes, version }) {
|
|
177
|
+
const cwd = process$1.cwd();
|
|
178
|
+
clack.intro(styleText("bgCyan", styleText("black", " Kubb Init ")));
|
|
179
|
+
try {
|
|
180
|
+
let packageManager;
|
|
181
|
+
if (!hasPackageJson(cwd)) {
|
|
182
|
+
if (!yes) {
|
|
183
|
+
const shouldInit = await clack.confirm({
|
|
184
|
+
message: "No package.json found. Would you like to create one?",
|
|
185
|
+
initialValue: true
|
|
186
|
+
});
|
|
187
|
+
if (clack.isCancel(shouldInit) || !shouldInit) cancelAndExit();
|
|
188
|
+
}
|
|
189
|
+
packageManager = detectPackageManager(cwd);
|
|
190
|
+
const spinner = clack.spinner();
|
|
191
|
+
spinner.start(`Initializing package.json with ${packageManager.name}`);
|
|
192
|
+
await initPackageJson(cwd, packageManager);
|
|
193
|
+
spinner.stop(`Created package.json with ${packageManager.name}`);
|
|
194
|
+
} else {
|
|
195
|
+
packageManager = detectPackageManager(cwd);
|
|
196
|
+
clack.log.info(`Detected package manager: ${styleText("cyan", packageManager.name)}`);
|
|
197
|
+
}
|
|
198
|
+
let inputPath;
|
|
199
|
+
if (yes) {
|
|
200
|
+
inputPath = initDefaults.inputPath;
|
|
201
|
+
clack.log.info(`Using input path: ${styleText("cyan", inputPath)}`);
|
|
202
|
+
} else {
|
|
203
|
+
const inputPathResult = await clack.text({
|
|
204
|
+
message: "Where is your OpenAPI specification located?",
|
|
205
|
+
placeholder: initDefaults.inputPath,
|
|
206
|
+
defaultValue: initDefaults.inputPath,
|
|
207
|
+
validate: (value) => {
|
|
208
|
+
if (!value) return "Input path is required";
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
if (clack.isCancel(inputPathResult)) cancelAndExit();
|
|
212
|
+
inputPath = inputPathResult;
|
|
213
|
+
}
|
|
214
|
+
let outputPath;
|
|
215
|
+
if (yes) {
|
|
216
|
+
outputPath = initDefaults.outputPath;
|
|
217
|
+
clack.log.info(`Using output path: ${styleText("cyan", outputPath)}`);
|
|
218
|
+
} else {
|
|
219
|
+
const outputPathResult = await clack.text({
|
|
220
|
+
message: "Where should the generated files be output?",
|
|
221
|
+
placeholder: initDefaults.outputPath,
|
|
222
|
+
defaultValue: initDefaults.outputPath,
|
|
223
|
+
validate: (value) => {
|
|
224
|
+
if (!value) return "Output path is required";
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
if (clack.isCancel(outputPathResult)) cancelAndExit();
|
|
228
|
+
outputPath = outputPathResult;
|
|
229
|
+
}
|
|
230
|
+
let selectedPlugins;
|
|
231
|
+
if (yes) {
|
|
232
|
+
selectedPlugins = availablePlugins.filter((plugin) => initDefaults.plugins.includes(plugin.value));
|
|
233
|
+
clack.log.info(`Using plugins: ${styleText("cyan", selectedPlugins.map((p) => p.label).join(", "))}`);
|
|
234
|
+
} else {
|
|
235
|
+
const selectedPluginValues = await clack.multiselect({
|
|
236
|
+
message: "Select plugins to use:",
|
|
237
|
+
options: availablePlugins.map((plugin) => ({
|
|
238
|
+
value: plugin.value,
|
|
239
|
+
label: plugin.label,
|
|
240
|
+
hint: plugin.hint
|
|
241
|
+
})),
|
|
242
|
+
initialValues: [...initDefaults.plugins],
|
|
243
|
+
required: true
|
|
244
|
+
});
|
|
245
|
+
if (clack.isCancel(selectedPluginValues)) cancelAndExit();
|
|
246
|
+
selectedPlugins = availablePlugins.filter((plugin) => selectedPluginValues.includes(plugin.value));
|
|
247
|
+
}
|
|
248
|
+
if (!selectedPlugins.find((p) => p.value === "plugin-oas")) selectedPlugins.unshift(availablePlugins.find((p) => p.value === "plugin-oas"));
|
|
249
|
+
const packagesToInstall = [
|
|
250
|
+
"@kubb/core",
|
|
251
|
+
"@kubb/cli",
|
|
252
|
+
"@kubb/agent",
|
|
253
|
+
...selectedPlugins.map((p) => p.packageName)
|
|
254
|
+
];
|
|
255
|
+
const spinner = clack.spinner();
|
|
256
|
+
spinner.start(`Installing ${packagesToInstall.length} packages with ${packageManager.name}`);
|
|
257
|
+
try {
|
|
258
|
+
await installPackages(packagesToInstall, packageManager, cwd);
|
|
259
|
+
spinner.stop(`Installed ${packagesToInstall.length} packages`);
|
|
260
|
+
} catch (error) {
|
|
261
|
+
spinner.stop("Installation failed");
|
|
262
|
+
throw error;
|
|
263
|
+
}
|
|
264
|
+
const configSpinner = clack.spinner();
|
|
265
|
+
configSpinner.start("Creating kubb.config.ts");
|
|
266
|
+
const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath);
|
|
267
|
+
const configPath = path.join(cwd, "kubb.config.ts");
|
|
268
|
+
if (fs.existsSync(configPath)) {
|
|
269
|
+
configSpinner.stop("kubb.config.ts already exists");
|
|
270
|
+
if (!yes) {
|
|
271
|
+
const shouldOverwrite = await clack.confirm({
|
|
272
|
+
message: "kubb.config.ts already exists. Overwrite?",
|
|
273
|
+
initialValue: false
|
|
274
|
+
});
|
|
275
|
+
if (clack.isCancel(shouldOverwrite) || !shouldOverwrite) cancelAndExit("Keeping existing configuration. Packages have been installed.");
|
|
276
|
+
}
|
|
277
|
+
configSpinner.start("Overwriting kubb.config.ts");
|
|
278
|
+
}
|
|
279
|
+
fs.writeFileSync(configPath, configContent, "utf-8");
|
|
280
|
+
configSpinner.stop("Created kubb.config.ts");
|
|
281
|
+
clack.outro(styleText("green", "✓ All set!") + "\n\n" + styleText("dim", "Next steps:") + "\n" + styleText("cyan", ` 1. Make sure your OpenAPI spec is at: ${inputPath}`) + "\n" + styleText("cyan", " 2. Generate code with: npx kubb generate") + "\n" + styleText("cyan", " Or start a stream server with: npx kubb start") + "\n" + styleText("cyan", ` 3. Find generated files in: ${outputPath}`) + "\n\n" + styleText("dim", `Using ${packageManager.name} • Kubb v${version}`));
|
|
282
|
+
} catch (error) {
|
|
283
|
+
clack.log.error(styleText("red", "An error occurred during initialization"));
|
|
284
|
+
if (error instanceof Error) clack.log.error(error.message);
|
|
285
|
+
process$1.exit(1);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//#endregion
|
|
289
|
+
export { runInit, spawnAsync as t };
|
|
290
|
+
|
|
291
|
+
//# sourceMappingURL=init-DyKK2fTp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-DyKK2fTp.js","names":["process"],"sources":["../src/utils/spawnAsync.ts","../src/utils/packageManager.ts","../src/runners/init.ts"],"sourcesContent":["import { spawn } from 'node:child_process'\n\ntype SpawnOptions = {\n cwd?: string\n env?: NodeJS.ProcessEnv\n /**\n * When `true`, spawns a detached background process and resolves immediately.\n * The child is unref'd so the parent process can exit independently.\n * Defaults to `false` (foreground — inherits stdio and waits for exit).\n */\n detached?: boolean\n}\n\n/**\n * Spawns `cmd args` and returns a promise.\n * - Foreground (default): inherits stdio and resolves when the process exits successfully.\n * - Detached: spawns in its own process group, un-refs the child, and resolves immediately.\n */\nexport function spawnAsync(cmd: string, args: string[], options: SpawnOptions = {}): Promise<void> {\n const { cwd = process.cwd(), env, detached = false } = options\n\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, {\n stdio: detached ? 'ignore' : 'inherit',\n cwd,\n env,\n detached,\n })\n\n if (detached) {\n child.unref()\n resolve()\n return\n }\n\n child.on('close', (code, signal) => {\n if (code === 0) {\n resolve()\n } else if (signal !== null) {\n reject(new Error(`\"${cmd} ${args.join(' ')}\" was terminated by signal ${signal}`))\n } else {\n reject(new Error(`\"${cmd} ${args.join(' ')}\" exited with code ${code}`))\n }\n })\n child.on('error', reject)\n })\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport type { PackageManagerInfo, PackageManagerName } from '@kubb/core'\nimport { spawnAsync } from './spawnAsync.ts'\n\nexport function hasPackageJson(cwd: string = process.cwd()): boolean {\n return fs.existsSync(path.join(cwd, 'package.json'))\n}\n\nexport async function initPackageJson(cwd: string, packageManager: PackageManagerInfo): Promise<void> {\n const commands: Record<PackageManagerName, string[]> = {\n npm: ['init', '-y'],\n pnpm: ['init'],\n yarn: ['init', '-y'],\n bun: ['init', '-y'],\n }\n\n await spawnAsync(packageManager.name, commands[packageManager.name], { cwd })\n}\n\nexport async function installPackages(packages: string[], packageManager: PackageManagerInfo, cwd: string = process.cwd()): Promise<void> {\n await spawnAsync(packageManager.name, [...packageManager.installCommand, ...packages], { cwd })\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport process from 'node:process'\nimport { styleText } from 'node:util'\nimport * as clack from '@clack/prompts'\nimport { detectPackageManager, type PackageManagerInfo } from '@kubb/core'\nimport { initDefaults, pluginDefaultConfigs } from '../constants.ts'\nimport { hasPackageJson, initPackageJson, installPackages } from '../utils/packageManager.ts'\n\ntype PluginOption = {\n value: string\n label: string\n hint?: string\n packageName: string\n importName: string\n category: 'core' | 'typescript' | 'query' | 'validation' | 'testing' | 'mocking' | 'docs'\n}\n\nconst availablePlugins: PluginOption[] = [\n {\n value: 'plugin-oas',\n label: 'OpenAPI Parser',\n hint: 'Required',\n packageName: '@kubb/plugin-oas',\n importName: 'pluginOas',\n category: 'core',\n },\n {\n value: 'plugin-ts',\n label: 'TypeScript',\n hint: 'Recommended',\n packageName: '@kubb/plugin-ts',\n importName: 'pluginTs',\n category: 'typescript',\n },\n {\n value: 'plugin-client',\n label: 'Client (Fetch/Axios)',\n packageName: '@kubb/plugin-client',\n importName: 'pluginClient',\n category: 'typescript',\n },\n {\n value: 'plugin-react-query',\n label: 'React Query / TanStack Query',\n packageName: '@kubb/plugin-react-query',\n importName: 'pluginReactQuery',\n category: 'query',\n },\n {\n value: 'plugin-solid-query',\n label: 'Solid Query',\n packageName: '@kubb/plugin-solid-query',\n importName: 'pluginSolidQuery',\n category: 'query',\n },\n {\n value: 'plugin-svelte-query',\n label: 'Svelte Query',\n packageName: '@kubb/plugin-svelte-query',\n importName: 'pluginSvelteQuery',\n category: 'query',\n },\n {\n value: 'plugin-vue-query',\n label: 'Vue Query',\n packageName: '@kubb/plugin-vue-query',\n importName: 'pluginVueQuery',\n category: 'query',\n },\n {\n value: 'plugin-swr',\n label: 'SWR',\n packageName: '@kubb/plugin-swr',\n importName: 'pluginSwr',\n category: 'query',\n },\n {\n value: 'plugin-zod',\n label: 'Zod Schemas',\n packageName: '@kubb/plugin-zod',\n importName: 'pluginZod',\n category: 'validation',\n },\n {\n value: 'plugin-faker',\n label: 'Faker.js Mocks',\n packageName: '@kubb/plugin-faker',\n importName: 'pluginFaker',\n category: 'mocking',\n },\n {\n value: 'plugin-msw',\n label: 'MSW Handlers',\n packageName: '@kubb/plugin-msw',\n importName: 'pluginMsw',\n category: 'mocking',\n },\n {\n value: 'plugin-cypress',\n label: 'Cypress Tests',\n packageName: '@kubb/plugin-cypress',\n importName: 'pluginCypress',\n category: 'testing',\n },\n {\n value: 'plugin-redoc',\n label: 'ReDoc Documentation',\n packageName: '@kubb/plugin-redoc',\n importName: 'pluginRedoc',\n category: 'docs',\n },\n]\n\nfunction generateConfigFile(selectedPlugins: PluginOption[], inputPath: string, outputPath: string): string {\n const imports = selectedPlugins.map((plugin) => `import { ${plugin.importName} } from '${plugin.packageName}'`).join('\\n')\n\n const pluginConfigs = selectedPlugins\n .map((plugin) => {\n const config = (pluginDefaultConfigs as Record<string, string>)[plugin.value] ?? `${plugin.importName}()`\n return ` ${config},`\n })\n .join('\\n')\n\n return `import { defineConfig } from '@kubb/core'\n${imports}\n\nexport default defineConfig({\n root: '.',\n input: {\n path: '${inputPath}',\n },\n output: {\n path: '${outputPath}',\n clean: true,\n },\n plugins: [\n${pluginConfigs}\n ],\n})\n`\n}\n\nfunction cancelAndExit(message = 'Operation cancelled.'): never {\n clack.cancel(message)\n process.exit(0)\n}\n\ntype InitOptions = {\n yes: boolean\n version: string\n}\n\nexport async function runInit({ yes, version }: InitOptions): Promise<void> {\n const cwd = process.cwd()\n\n clack.intro(styleText('bgCyan', styleText('black', ' Kubb Init ')))\n\n try {\n // Check/create package.json\n let packageManager: PackageManagerInfo\n if (!hasPackageJson(cwd)) {\n if (!yes) {\n const shouldInit = await clack.confirm({\n message: 'No package.json found. Would you like to create one?',\n initialValue: true,\n })\n\n if (clack.isCancel(shouldInit) || !shouldInit) {\n cancelAndExit()\n }\n }\n\n packageManager = detectPackageManager(cwd)\n\n const spinner = clack.spinner()\n spinner.start(`Initializing package.json with ${packageManager.name}`)\n\n await initPackageJson(cwd, packageManager)\n\n spinner.stop(`Created package.json with ${packageManager.name}`)\n } else {\n packageManager = detectPackageManager(cwd)\n clack.log.info(`Detected package manager: ${styleText('cyan', packageManager.name)}`)\n }\n\n // Prompt for OpenAPI spec path\n let inputPath: string\n if (yes) {\n inputPath = initDefaults.inputPath\n clack.log.info(`Using input path: ${styleText('cyan', inputPath)}`)\n } else {\n const inputPathResult = await clack.text({\n message: 'Where is your OpenAPI specification located?',\n placeholder: initDefaults.inputPath,\n defaultValue: initDefaults.inputPath,\n validate: (value) => {\n if (!value) return 'Input path is required'\n },\n })\n\n if (clack.isCancel(inputPathResult)) {\n cancelAndExit()\n }\n inputPath = inputPathResult as string\n }\n\n // Prompt for output directory\n let outputPath: string\n if (yes) {\n outputPath = initDefaults.outputPath\n clack.log.info(`Using output path: ${styleText('cyan', outputPath)}`)\n } else {\n const outputPathResult = await clack.text({\n message: 'Where should the generated files be output?',\n placeholder: initDefaults.outputPath,\n defaultValue: initDefaults.outputPath,\n validate: (value) => {\n if (!value) return 'Output path is required'\n },\n })\n\n if (clack.isCancel(outputPathResult)) {\n cancelAndExit()\n }\n outputPath = outputPathResult as string\n }\n\n // Plugin selection\n let selectedPlugins: PluginOption[]\n if (yes) {\n selectedPlugins = availablePlugins.filter((plugin) => (initDefaults.plugins as readonly string[]).includes(plugin.value))\n clack.log.info(`Using plugins: ${styleText('cyan', selectedPlugins.map((p) => p.label).join(', '))}`)\n } else {\n const selectedPluginValues = await clack.multiselect({\n message: 'Select plugins to use:',\n options: availablePlugins.map((plugin) => ({\n value: plugin.value,\n label: plugin.label,\n hint: plugin.hint,\n })),\n initialValues: [...initDefaults.plugins],\n required: true,\n })\n\n if (clack.isCancel(selectedPluginValues)) {\n cancelAndExit()\n }\n\n selectedPlugins = availablePlugins.filter((plugin) => (selectedPluginValues as string[]).includes(plugin.value))\n }\n\n // Ensure plugin-oas is always included\n if (!selectedPlugins.find((p) => p.value === 'plugin-oas')) {\n selectedPlugins.unshift(availablePlugins.find((p) => p.value === 'plugin-oas')!)\n }\n\n // Install packages\n const packagesToInstall = ['@kubb/core', '@kubb/cli', '@kubb/agent', ...selectedPlugins.map((p) => p.packageName)]\n\n const spinner = clack.spinner()\n spinner.start(`Installing ${packagesToInstall.length} packages with ${packageManager.name}`)\n\n try {\n await installPackages(packagesToInstall, packageManager, cwd)\n spinner.stop(`Installed ${packagesToInstall.length} packages`)\n } catch (error) {\n spinner.stop('Installation failed')\n throw error\n }\n\n // Generate config file\n const configSpinner = clack.spinner()\n configSpinner.start('Creating kubb.config.ts')\n\n const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath)\n const configPath = path.join(cwd, 'kubb.config.ts')\n\n if (fs.existsSync(configPath)) {\n configSpinner.stop('kubb.config.ts already exists')\n\n if (!yes) {\n const shouldOverwrite = await clack.confirm({\n message: 'kubb.config.ts already exists. Overwrite?',\n initialValue: false,\n })\n\n if (clack.isCancel(shouldOverwrite) || !shouldOverwrite) {\n cancelAndExit('Keeping existing configuration. Packages have been installed.')\n }\n }\n\n configSpinner.start('Overwriting kubb.config.ts')\n }\n\n fs.writeFileSync(configPath, configContent, 'utf-8')\n\n configSpinner.stop('Created kubb.config.ts')\n\n clack.outro(\n styleText('green', '✓ All set!') +\n '\\n\\n' +\n styleText('dim', 'Next steps:') +\n '\\n' +\n styleText('cyan', ` 1. Make sure your OpenAPI spec is at: ${inputPath}`) +\n '\\n' +\n styleText('cyan', ' 2. Generate code with: npx kubb generate') +\n '\\n' +\n styleText('cyan', ' Or start a stream server with: npx kubb start') +\n '\\n' +\n styleText('cyan', ` 3. Find generated files in: ${outputPath}`) +\n '\\n\\n' +\n styleText('dim', `Using ${packageManager.name} • Kubb v${version}`),\n )\n } catch (error) {\n clack.log.error(styleText('red', 'An error occurred during initialization'))\n if (error instanceof Error) {\n clack.log.error(error.message)\n }\n process.exit(1)\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require("./chunk-ByKO4r7w.cjs");
|
|
2
|
+
//#region src/utils/jiti.ts
|
|
3
|
+
/**
|
|
4
|
+
* Shared jiti instance for dynamic ESM/TS imports across CLI commands.
|
|
5
|
+
* Created once at module scope to avoid the overhead of repeated instantiation.
|
|
6
|
+
*/
|
|
7
|
+
const jiti$1 = (0, require("jiti").createJiti)(require("url").pathToFileURL(__filename).href, { sourceMaps: true });
|
|
8
|
+
//#endregion
|
|
9
|
+
Object.defineProperty(exports, "jiti", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return jiti$1;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=jiti-BdskUHhD.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiti-BdskUHhD.cjs","names":["jiti"],"sources":["../src/utils/jiti.ts"],"sourcesContent":["import { createJiti } from 'jiti'\n\n/**\n * Shared jiti instance for dynamic ESM/TS imports across CLI commands.\n * Created once at module scope to avoid the overhead of repeated instantiation.\n */\nexport const jiti = createJiti(import.meta.url, {\n sourceMaps: true,\n})\n"],"mappings":";;;;;;AAMA,MAAaA,UAAAA,mBAAAA,YAAAA,QAAAA,MAAAA,CAAAA,cAAAA,WAAAA,CAAAA,MAAmC,EAC9C,YAAY,MACb,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createJiti } from "jiti";
|
|
2
|
+
//#region src/utils/jiti.ts
|
|
3
|
+
/**
|
|
4
|
+
* Shared jiti instance for dynamic ESM/TS imports across CLI commands.
|
|
5
|
+
* Created once at module scope to avoid the overhead of repeated instantiation.
|
|
6
|
+
*/
|
|
7
|
+
const jiti = createJiti(import.meta.url, { sourceMaps: true });
|
|
8
|
+
//#endregion
|
|
9
|
+
export { jiti as t };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=jiti-Cl7t20dO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiti-Cl7t20dO.js","names":[],"sources":["../src/utils/jiti.ts"],"sourcesContent":["import { createJiti } from 'jiti'\n\n/**\n * Shared jiti instance for dynamic ESM/TS imports across CLI commands.\n * Created once at module scope to avoid the overhead of repeated instantiation.\n */\nexport const jiti = createJiti(import.meta.url, {\n sourceMaps: true,\n})\n"],"mappings":";;;;;;AAMA,MAAa,OAAO,WAAW,OAAO,KAAK,KAAK,EAC9C,YAAY,MACb,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
|
+
const require_telemetry = require("./telemetry-T5IA2dWA.cjs");
|
|
3
|
+
const require_errors = require("./errors-BUjJsNoe.cjs");
|
|
4
|
+
const require_jiti = require("./jiti-BdskUHhD.cjs");
|
|
5
|
+
let node_util = require("node:util");
|
|
6
|
+
let node_process = require("node:process");
|
|
7
|
+
node_process = require_chunk.__toESM(node_process);
|
|
8
|
+
//#region src/runners/mcp.ts
|
|
9
|
+
async function runMcp({ version }) {
|
|
10
|
+
let mod;
|
|
11
|
+
try {
|
|
12
|
+
mod = await require_jiti.jiti.import("@kubb/mcp", { default: true });
|
|
13
|
+
} catch (_e) {
|
|
14
|
+
console.error(`Import of '@kubb/mcp' is required to start the MCP server`);
|
|
15
|
+
node_process.default.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const { run } = mod;
|
|
18
|
+
const hrStart = node_process.default.hrtime();
|
|
19
|
+
try {
|
|
20
|
+
console.log("⏳ Starting MCP server...");
|
|
21
|
+
console.warn((0, node_util.styleText)("yellow", "This feature is still under development — use with caution"));
|
|
22
|
+
run();
|
|
23
|
+
await require_telemetry.sendTelemetry(require_telemetry.buildTelemetryEvent({
|
|
24
|
+
command: "mcp",
|
|
25
|
+
kubbVersion: version,
|
|
26
|
+
hrStart,
|
|
27
|
+
status: "success"
|
|
28
|
+
}));
|
|
29
|
+
} catch (error) {
|
|
30
|
+
await require_telemetry.sendTelemetry(require_telemetry.buildTelemetryEvent({
|
|
31
|
+
command: "mcp",
|
|
32
|
+
kubbVersion: version,
|
|
33
|
+
hrStart,
|
|
34
|
+
status: "failed"
|
|
35
|
+
}));
|
|
36
|
+
console.error(require_errors.getErrorMessage(error));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.runMcp = runMcp;
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=mcp-B73FC8dF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-B73FC8dF.cjs","names":["jiti","process","sendTelemetry","buildTelemetryEvent","getErrorMessage"],"sources":["../src/runners/mcp.ts"],"sourcesContent":["import process from 'node:process'\nimport { styleText } from 'node:util'\nimport type * as McpModule from '@kubb/mcp'\nimport { getErrorMessage } from '../utils/errors.ts'\nimport { jiti } from '../utils/jiti.ts'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype McpOptions = {\n version: string\n}\n\nexport async function runMcp({ version }: McpOptions): Promise<void> {\n let mod: typeof McpModule\n try {\n mod = (await jiti.import('@kubb/mcp', { default: true })) as typeof McpModule\n } catch (_e) {\n console.error(`Import of '@kubb/mcp' is required to start the MCP server`)\n process.exit(1)\n }\n\n const { run } = mod\n const hrStart = process.hrtime()\n try {\n console.log('⏳ Starting MCP server...')\n console.warn(styleText('yellow', 'This feature is still under development — use with caution'))\n run()\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'success' }))\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'failed' }))\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;;;AAWA,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAMA,aAAAA,KAAK,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;UACjD,IAAI;AACX,UAAQ,MAAM,4DAA4D;AAC1E,eAAA,QAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,QAAQ;CAChB,MAAM,UAAUC,aAAAA,QAAQ,QAAQ;AAChC,KAAI;AACF,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,MAAA,GAAA,UAAA,WAAe,UAAU,6DAA6D,CAAC;AAC/F,OAAK;AACL,QAAMC,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;UACvG,OAAO;AACd,QAAMD,kBAAAA,cAAcC,kBAAAA,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAC7G,UAAQ,MAAMC,eAAAA,gBAAgB,MAAM,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "./chunk--u3MIqq1.js";
|
|
2
|
+
import { t as version } from "./package-681jTtCk.js";
|
|
3
|
+
import { n as defineCommand } from "./types-CLtz0jem.js";
|
|
4
|
+
//#region src/commands/mcp.ts
|
|
5
|
+
const command = defineCommand({
|
|
6
|
+
name: "mcp",
|
|
7
|
+
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
8
|
+
async run() {
|
|
9
|
+
const { runMcp } = await import("./mcp-Cf-1dsB-.js");
|
|
10
|
+
await runMcp({ version });
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { command };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=mcp-Bd9LITaI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-Bd9LITaI.js","names":[],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { version } from '../../package.json'\nimport { defineCommand } from '../cli/index.ts'\n\nexport const command = defineCommand({\n name: 'mcp',\n description: 'Start the server to enable the MCP client to interact with the LLM.',\n async run() {\n const { runMcp } = await import('../runners/mcp.ts')\n\n await runMcp({ version })\n },\n})\n"],"mappings":";;;;AAGA,MAAa,UAAU,cAAc;CACnC,MAAM;CACN,aAAa;CACb,MAAM,MAAM;EACV,MAAM,EAAE,WAAW,MAAM,OAAO;AAEhC,QAAM,OAAO,EAAE,SAAS,CAAC;;CAE5B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import "./chunk--u3MIqq1.js";
|
|
2
|
+
import { r as sendTelemetry, t as buildTelemetryEvent } from "./telemetry-C4gOKX2x.js";
|
|
3
|
+
import { t as getErrorMessage } from "./errors-bSLTEh4e.js";
|
|
4
|
+
import { t as jiti } from "./jiti-Cl7t20dO.js";
|
|
5
|
+
import { styleText } from "node:util";
|
|
6
|
+
import process from "node:process";
|
|
7
|
+
//#region src/runners/mcp.ts
|
|
8
|
+
async function runMcp({ version }) {
|
|
9
|
+
let mod;
|
|
10
|
+
try {
|
|
11
|
+
mod = await jiti.import("@kubb/mcp", { default: true });
|
|
12
|
+
} catch (_e) {
|
|
13
|
+
console.error(`Import of '@kubb/mcp' is required to start the MCP server`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const { run } = mod;
|
|
17
|
+
const hrStart = process.hrtime();
|
|
18
|
+
try {
|
|
19
|
+
console.log("⏳ Starting MCP server...");
|
|
20
|
+
console.warn(styleText("yellow", "This feature is still under development — use with caution"));
|
|
21
|
+
run();
|
|
22
|
+
await sendTelemetry(buildTelemetryEvent({
|
|
23
|
+
command: "mcp",
|
|
24
|
+
kubbVersion: version,
|
|
25
|
+
hrStart,
|
|
26
|
+
status: "success"
|
|
27
|
+
}));
|
|
28
|
+
} catch (error) {
|
|
29
|
+
await sendTelemetry(buildTelemetryEvent({
|
|
30
|
+
command: "mcp",
|
|
31
|
+
kubbVersion: version,
|
|
32
|
+
hrStart,
|
|
33
|
+
status: "failed"
|
|
34
|
+
}));
|
|
35
|
+
console.error(getErrorMessage(error));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
export { runMcp };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=mcp-Cf-1dsB-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-Cf-1dsB-.js","names":[],"sources":["../src/runners/mcp.ts"],"sourcesContent":["import process from 'node:process'\nimport { styleText } from 'node:util'\nimport type * as McpModule from '@kubb/mcp'\nimport { getErrorMessage } from '../utils/errors.ts'\nimport { jiti } from '../utils/jiti.ts'\nimport { buildTelemetryEvent, sendTelemetry } from '../utils/telemetry.ts'\n\ntype McpOptions = {\n version: string\n}\n\nexport async function runMcp({ version }: McpOptions): Promise<void> {\n let mod: typeof McpModule\n try {\n mod = (await jiti.import('@kubb/mcp', { default: true })) as typeof McpModule\n } catch (_e) {\n console.error(`Import of '@kubb/mcp' is required to start the MCP server`)\n process.exit(1)\n }\n\n const { run } = mod\n const hrStart = process.hrtime()\n try {\n console.log('⏳ Starting MCP server...')\n console.warn(styleText('yellow', 'This feature is still under development — use with caution'))\n run()\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'success' }))\n } catch (error) {\n await sendTelemetry(buildTelemetryEvent({ command: 'mcp', kubbVersion: version, hrStart, status: 'failed' }))\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;;AAWA,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAM,KAAK,OAAO,aAAa,EAAE,SAAS,MAAM,CAAC;UACjD,IAAI;AACX,UAAQ,MAAM,4DAA4D;AAC1E,UAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,QAAQ;CAChB,MAAM,UAAU,QAAQ,QAAQ;AAChC,KAAI;AACF,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,KAAK,UAAU,UAAU,6DAA6D,CAAC;AAC/F,OAAK;AACL,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAW,CAAC,CAAC;UACvG,OAAO;AACd,QAAM,cAAc,oBAAoB;GAAE,SAAS;GAAO,aAAa;GAAS;GAAS,QAAQ;GAAU,CAAC,CAAC;AAC7G,UAAQ,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require("./chunk-ByKO4r7w.cjs");
|
|
2
|
+
const require_package = require("./package-aKgzEJtp.cjs");
|
|
3
|
+
//#region src/commands/mcp.ts
|
|
4
|
+
const command = require("./types-Ck2lzFON.cjs").defineCommand({
|
|
5
|
+
name: "mcp",
|
|
6
|
+
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
7
|
+
async run() {
|
|
8
|
+
const { runMcp } = await Promise.resolve().then(() => require("./mcp-B73FC8dF.cjs"));
|
|
9
|
+
await runMcp({ version: require_package.version });
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.command = command;
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=mcp-Clg-Qnkr.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-Clg-Qnkr.cjs","names":["defineCommand"],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { version } from '../../package.json'\nimport { defineCommand } from '../cli/index.ts'\n\nexport const command = defineCommand({\n name: 'mcp',\n description: 'Start the server to enable the MCP client to interact with the LLM.',\n async run() {\n const { runMcp } = await import('../runners/mcp.ts')\n\n await runMcp({ version })\n },\n})\n"],"mappings":";;;AAGA,MAAa,0CAAUA,cAAc;CACnC,MAAM;CACN,aAAa;CACb,MAAM,MAAM;EACV,MAAM,EAAE,WAAW,MAAA,QAAA,SAAA,CAAA,WAAA,QAAM,qBAAA,CAAA;AAEzB,QAAM,OAAO,EAAE,SAAA,gBAAA,SAAS,CAAC;;CAE5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-681jTtCk.js","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region package.json
|
|
2
|
-
var version = "4.
|
|
2
|
+
var version = "4.33.0";
|
|
3
3
|
//#endregion
|
|
4
4
|
Object.defineProperty(exports, "version", {
|
|
5
5
|
enumerable: true,
|
|
@@ -8,4 +8,4 @@ Object.defineProperty(exports, "version", {
|
|
|
8
8
|
}
|
|
9
9
|
});
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=package-
|
|
11
|
+
//# sourceMappingURL=package-aKgzEJtp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-aKgzEJtp.cjs","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|