@kubb/cli 5.0.0-alpha.71 → 5.0.0-alpha.73
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-Zo8CQwxZ.cjs → agent-B_pirbeB.cjs} +3 -3
- package/dist/{agent-Zo8CQwxZ.cjs.map → agent-B_pirbeB.cjs.map} +1 -1
- package/dist/{agent-DypvJBwO.js → agent-DzyWaKG0.js} +4 -4
- package/dist/{agent-DypvJBwO.js.map → agent-DzyWaKG0.js.map} +1 -1
- package/dist/{agent-CouS-H2S.js → agent-Ev5hU5hH.js} +3 -3
- package/dist/{agent-CouS-H2S.js.map → agent-Ev5hU5hH.js.map} +1 -1
- package/dist/{agent-D5OIwM0z.cjs → agent-P1QZUV6I.cjs} +4 -4
- package/dist/{agent-D5OIwM0z.cjs.map → agent-P1QZUV6I.cjs.map} +1 -1
- package/dist/{constants-BgLUQ1nx.cjs → constants-CnDXa1R6.cjs} +11 -12
- package/dist/constants-CnDXa1R6.cjs.map +1 -0
- package/dist/{constants-mIdg9ls2.js → constants-aL3CP_Wq.js} +11 -12
- package/dist/constants-aL3CP_Wq.js.map +1 -0
- package/dist/{generate-Cy11Ra5n.js → generate-6noJc3hb.js} +2 -2
- package/dist/{generate-Cy11Ra5n.js.map → generate-6noJc3hb.js.map} +1 -1
- package/dist/{generate-DfhKa1mG.js → generate-C3BT_B5R.js} +4 -4
- package/dist/{generate-DfhKa1mG.js.map → generate-C3BT_B5R.js.map} +1 -1
- package/dist/{generate-BW0J1wvg.cjs → generate-JkDkUzqp.cjs} +2 -2
- package/dist/{generate-BW0J1wvg.cjs.map → generate-JkDkUzqp.cjs.map} +1 -1
- package/dist/{generate-CLYhWYY1.cjs → generate-uOU0OLip.cjs} +4 -4
- package/dist/{generate-CLYhWYY1.cjs.map → generate-uOU0OLip.cjs.map} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.js +8 -8
- package/dist/{init-C_EgqqO4.cjs → init-B05zuRAc.cjs} +3 -3
- package/dist/{init-C_EgqqO4.cjs.map → init-B05zuRAc.cjs.map} +1 -1
- package/dist/{init-CmrUd26x.cjs → init-CZ5Xq2Hd.cjs} +16 -39
- package/dist/init-CZ5Xq2Hd.cjs.map +1 -0
- package/dist/{init-CaQZcAvy.js → init-DpGOoN4S.js} +3 -3
- package/dist/{init-CaQZcAvy.js.map → init-DpGOoN4S.js.map} +1 -1
- package/dist/{init-DEC1gCsk.js → init-eNRlotJK.js} +16 -39
- package/dist/init-eNRlotJK.js.map +1 -0
- package/dist/{mcp-vi8t2Rkb.cjs → mcp-CLcDV4Jm.cjs} +2 -2
- package/dist/{mcp-vi8t2Rkb.cjs.map → mcp-CLcDV4Jm.cjs.map} +1 -1
- package/dist/{mcp-nlFo36z0.js → mcp-D7EIR9fR.js} +2 -2
- package/dist/{mcp-nlFo36z0.js.map → mcp-D7EIR9fR.js.map} +1 -1
- package/dist/{mcp-CmXrXzDF.cjs → mcp-D7lDoJU3.cjs} +3 -3
- package/dist/{mcp-CmXrXzDF.cjs.map → mcp-D7lDoJU3.cjs.map} +1 -1
- package/dist/{mcp-7rBVhoQz.js → mcp-HPxyFVbA.js} +3 -3
- package/dist/{mcp-7rBVhoQz.js.map → mcp-HPxyFVbA.js.map} +1 -1
- package/dist/package-C_5uVutq.js +6 -0
- package/dist/package-C_5uVutq.js.map +1 -0
- package/dist/{package-DsKVMEXO.cjs → package-D5we_8TP.cjs} +2 -2
- package/dist/package-D5we_8TP.cjs.map +1 -0
- package/dist/{telemetry-kmnc5OAT.cjs → telemetry-DN95_2pF.cjs} +2 -2
- package/dist/{telemetry-kmnc5OAT.cjs.map → telemetry-DN95_2pF.cjs.map} +1 -1
- package/dist/{telemetry-CS5ZE0cN.js → telemetry-LgT_sdPe.js} +2 -2
- package/dist/{telemetry-CS5ZE0cN.js.map → telemetry-LgT_sdPe.js.map} +1 -1
- package/dist/{validate-RG85Fqjh.js → validate-DFQ7k4xH.js} +3 -3
- package/dist/{validate-RG85Fqjh.js.map → validate-DFQ7k4xH.js.map} +1 -1
- package/dist/{validate-BR_0eveE.js → validate-kLJoT_hi.js} +2 -2
- package/dist/{validate-BR_0eveE.js.map → validate-kLJoT_hi.js.map} +1 -1
- package/dist/{validate-BZKRjT0Y.cjs → validate-x0Uyvvvo.cjs} +3 -3
- package/dist/{validate-BZKRjT0Y.cjs.map → validate-x0Uyvvvo.cjs.map} +1 -1
- package/dist/{validate-Db7vfaU9.cjs → validate-yKKzqEZ5.cjs} +2 -2
- package/dist/{validate-Db7vfaU9.cjs.map → validate-yKKzqEZ5.cjs.map} +1 -1
- package/package.json +5 -5
- package/src/constants.ts +10 -11
- package/src/runners/init.ts +15 -42
- package/dist/constants-BgLUQ1nx.cjs.map +0 -1
- package/dist/constants-mIdg9ls2.js.map +0 -1
- package/dist/init-CmrUd26x.cjs.map +0 -1
- package/dist/init-DEC1gCsk.js.map +0 -1
- package/dist/package-BD90dOVc.js +0 -6
- package/dist/package-BD90dOVc.js.map +0 -1
- package/dist/package-DsKVMEXO.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("./chunk-ByKO4r7w.cjs");
|
|
3
3
|
const require_define = require("./define-Bdn8j5VM.cjs");
|
|
4
|
-
const require_telemetry = require("./telemetry-
|
|
5
|
-
const require_package = require("./package-
|
|
6
|
-
const require_constants = require("./constants-
|
|
4
|
+
const require_telemetry = require("./telemetry-DN95_2pF.cjs");
|
|
5
|
+
const require_package = require("./package-D5we_8TP.cjs");
|
|
6
|
+
const require_constants = require("./constants-CnDXa1R6.cjs");
|
|
7
7
|
let node_util = require("node:util");
|
|
8
8
|
//#region ../../internals/utils/src/cli/schema.ts
|
|
9
9
|
/**
|
|
@@ -246,11 +246,11 @@ function shouldShowTelemetryNotice(argv) {
|
|
|
246
246
|
}
|
|
247
247
|
async function run(argv = process.argv) {
|
|
248
248
|
if (shouldShowTelemetryNotice(argv)) console.log(`${(0, node_util.styleText)("yellow", "Notice:")} Kubb collects anonymous telemetry data to help improve the tool. No personal data or file contents are collected. \nTo disable, set ${(0, node_util.styleText)("cyan", "KUBB_DISABLE_TELEMETRY=1")}.\n`);
|
|
249
|
-
const { command: generateCommand } = await Promise.resolve().then(() => require("./generate-
|
|
250
|
-
const { command: validateCommand } = await Promise.resolve().then(() => require("./validate-
|
|
251
|
-
const { command: mcpCommand } = await Promise.resolve().then(() => require("./mcp-
|
|
252
|
-
const { command: agentCommand } = await Promise.resolve().then(() => require("./agent-
|
|
253
|
-
const { command: initCommand } = await Promise.resolve().then(() => require("./init-
|
|
249
|
+
const { command: generateCommand } = await Promise.resolve().then(() => require("./generate-JkDkUzqp.cjs"));
|
|
250
|
+
const { command: validateCommand } = await Promise.resolve().then(() => require("./validate-x0Uyvvvo.cjs"));
|
|
251
|
+
const { command: mcpCommand } = await Promise.resolve().then(() => require("./mcp-D7lDoJU3.cjs"));
|
|
252
|
+
const { command: agentCommand } = await Promise.resolve().then(() => require("./agent-P1QZUV6I.cjs"));
|
|
253
|
+
const { command: initCommand } = await Promise.resolve().then(() => require("./init-B05zuRAc.cjs"));
|
|
254
254
|
await cli.run([
|
|
255
255
|
generateCommand,
|
|
256
256
|
validateCommand,
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { t as defineCLIAdapter } from "./define-Ctii4bel.js";
|
|
3
|
-
import { n as isTelemetryDisabled } from "./telemetry-
|
|
4
|
-
import { t as version } from "./package-
|
|
5
|
-
import { i as QUIET_FLAGS } from "./constants-
|
|
3
|
+
import { n as isTelemetryDisabled } from "./telemetry-LgT_sdPe.js";
|
|
4
|
+
import { t as version } from "./package-C_5uVutq.js";
|
|
5
|
+
import { i as QUIET_FLAGS } from "./constants-aL3CP_Wq.js";
|
|
6
6
|
import { parseArgs, styleText } from "node:util";
|
|
7
7
|
//#region ../../internals/utils/src/cli/schema.ts
|
|
8
8
|
/**
|
|
@@ -245,11 +245,11 @@ function shouldShowTelemetryNotice(argv) {
|
|
|
245
245
|
}
|
|
246
246
|
async function run(argv = process.argv) {
|
|
247
247
|
if (shouldShowTelemetryNotice(argv)) console.log(`${styleText("yellow", "Notice:")} Kubb collects anonymous telemetry data to help improve the tool. No personal data or file contents are collected. \nTo disable, set ${styleText("cyan", "KUBB_DISABLE_TELEMETRY=1")}.\n`);
|
|
248
|
-
const { command: generateCommand } = await import("./generate-
|
|
249
|
-
const { command: validateCommand } = await import("./validate-
|
|
250
|
-
const { command: mcpCommand } = await import("./mcp-
|
|
251
|
-
const { command: agentCommand } = await import("./agent-
|
|
252
|
-
const { command: initCommand } = await import("./init-
|
|
248
|
+
const { command: generateCommand } = await import("./generate-6noJc3hb.js");
|
|
249
|
+
const { command: validateCommand } = await import("./validate-DFQ7k4xH.js");
|
|
250
|
+
const { command: mcpCommand } = await import("./mcp-HPxyFVbA.js");
|
|
251
|
+
const { command: agentCommand } = await import("./agent-DzyWaKG0.js");
|
|
252
|
+
const { command: initCommand } = await import("./init-DpGOoN4S.js");
|
|
253
253
|
await cli.run([
|
|
254
254
|
generateCommand,
|
|
255
255
|
validateCommand,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_define = require("./define-Bdn8j5VM.cjs");
|
|
3
|
-
const require_package = require("./package-
|
|
3
|
+
const require_package = require("./package-D5we_8TP.cjs");
|
|
4
4
|
//#region src/commands/init.ts
|
|
5
5
|
const command = require_define.defineCommand({
|
|
6
6
|
name: "init",
|
|
@@ -12,7 +12,7 @@ const command = require_define.defineCommand({
|
|
|
12
12
|
default: false
|
|
13
13
|
} },
|
|
14
14
|
async run({ values }) {
|
|
15
|
-
const { runInit } = await Promise.resolve().then(() => require("./init-
|
|
15
|
+
const { runInit } = await Promise.resolve().then(() => require("./init-CZ5Xq2Hd.cjs"));
|
|
16
16
|
await runInit({
|
|
17
17
|
yes: values.yes,
|
|
18
18
|
version: require_package.version
|
|
@@ -22,4 +22,4 @@ const command = require_define.defineCommand({
|
|
|
22
22
|
//#endregion
|
|
23
23
|
exports.command = command;
|
|
24
24
|
|
|
25
|
-
//# sourceMappingURL=init-
|
|
25
|
+
//# sourceMappingURL=init-B05zuRAc.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-
|
|
1
|
+
{"version":3,"file":"init-B05zuRAc.cjs","names":["defineCommand"],"sources":["../src/commands/init.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'init',\n description: 'Initialize a new Kubb project with interactive setup',\n options: {\n yes: {\n type: 'boolean',\n description: 'Skip prompts and use default options',\n short: 'y',\n default: false,\n },\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,UAAUA,eAAAA,cAAc;CACnC,MAAM;CACN,aAAa;CACb,SAAS,EACP,KAAK;EACH,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;EACV,EACF;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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_shell = require("./shell-475fQKaX.cjs");
|
|
3
|
-
const require_constants = require("./constants-
|
|
3
|
+
const require_constants = require("./constants-CnDXa1R6.cjs");
|
|
4
4
|
let node_util = require("node:util");
|
|
5
5
|
let node_fs = require("node:fs");
|
|
6
6
|
node_fs = require_chunk.__toESM(node_fs, 1);
|
|
@@ -84,63 +84,34 @@ async function installPackages(packages, packageManager, cwd = process.cwd()) {
|
|
|
84
84
|
//#endregion
|
|
85
85
|
//#region src/runners/init.ts
|
|
86
86
|
const availablePlugins = [
|
|
87
|
-
{
|
|
88
|
-
value: "plugin-oas",
|
|
89
|
-
label: "OpenAPI Parser",
|
|
90
|
-
hint: "Required",
|
|
91
|
-
packageName: "@kubb/plugin-oas",
|
|
92
|
-
importName: "pluginOas",
|
|
93
|
-
category: "core"
|
|
94
|
-
},
|
|
95
87
|
{
|
|
96
88
|
value: "plugin-ts",
|
|
97
89
|
label: "TypeScript",
|
|
98
90
|
hint: "Recommended",
|
|
99
91
|
packageName: "@kubb/plugin-ts",
|
|
100
92
|
importName: "pluginTs",
|
|
101
|
-
category: "
|
|
93
|
+
category: "types"
|
|
102
94
|
},
|
|
103
95
|
{
|
|
104
96
|
value: "plugin-client",
|
|
105
97
|
label: "Client (Fetch/Axios)",
|
|
106
98
|
packageName: "@kubb/plugin-client",
|
|
107
99
|
importName: "pluginClient",
|
|
108
|
-
category: "
|
|
100
|
+
category: "client"
|
|
109
101
|
},
|
|
110
102
|
{
|
|
111
103
|
value: "plugin-react-query",
|
|
112
104
|
label: "React Query / TanStack Query",
|
|
113
105
|
packageName: "@kubb/plugin-react-query",
|
|
114
106
|
importName: "pluginReactQuery",
|
|
115
|
-
category: "
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
value: "plugin-solid-query",
|
|
119
|
-
label: "Solid Query",
|
|
120
|
-
packageName: "@kubb/plugin-solid-query",
|
|
121
|
-
importName: "pluginSolidQuery",
|
|
122
|
-
category: "query"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
value: "plugin-svelte-query",
|
|
126
|
-
label: "Svelte Query",
|
|
127
|
-
packageName: "@kubb/plugin-svelte-query",
|
|
128
|
-
importName: "pluginSvelteQuery",
|
|
129
|
-
category: "query"
|
|
107
|
+
category: "framework"
|
|
130
108
|
},
|
|
131
109
|
{
|
|
132
110
|
value: "plugin-vue-query",
|
|
133
111
|
label: "Vue Query",
|
|
134
112
|
packageName: "@kubb/plugin-vue-query",
|
|
135
113
|
importName: "pluginVueQuery",
|
|
136
|
-
category: "
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
value: "plugin-swr",
|
|
140
|
-
label: "SWR",
|
|
141
|
-
packageName: "@kubb/plugin-swr",
|
|
142
|
-
importName: "pluginSwr",
|
|
143
|
-
category: "query"
|
|
114
|
+
category: "framework"
|
|
144
115
|
},
|
|
145
116
|
{
|
|
146
117
|
value: "plugin-zod",
|
|
@@ -154,14 +125,14 @@ const availablePlugins = [
|
|
|
154
125
|
label: "Faker.js Mocks",
|
|
155
126
|
packageName: "@kubb/plugin-faker",
|
|
156
127
|
importName: "pluginFaker",
|
|
157
|
-
category: "
|
|
128
|
+
category: "mocks"
|
|
158
129
|
},
|
|
159
130
|
{
|
|
160
131
|
value: "plugin-msw",
|
|
161
132
|
label: "MSW Handlers",
|
|
162
133
|
packageName: "@kubb/plugin-msw",
|
|
163
134
|
importName: "pluginMsw",
|
|
164
|
-
category: "
|
|
135
|
+
category: "mocks"
|
|
165
136
|
},
|
|
166
137
|
{
|
|
167
138
|
value: "plugin-cypress",
|
|
@@ -170,12 +141,19 @@ const availablePlugins = [
|
|
|
170
141
|
importName: "pluginCypress",
|
|
171
142
|
category: "testing"
|
|
172
143
|
},
|
|
144
|
+
{
|
|
145
|
+
value: "plugin-mcp",
|
|
146
|
+
label: "MCP Server (AI / Model Context Protocol)",
|
|
147
|
+
packageName: "@kubb/plugin-mcp",
|
|
148
|
+
importName: "pluginMcp",
|
|
149
|
+
category: "ai"
|
|
150
|
+
},
|
|
173
151
|
{
|
|
174
152
|
value: "plugin-redoc",
|
|
175
153
|
label: "ReDoc Documentation",
|
|
176
154
|
packageName: "@kubb/plugin-redoc",
|
|
177
155
|
importName: "pluginRedoc",
|
|
178
|
-
category: "
|
|
156
|
+
category: "documentation"
|
|
179
157
|
}
|
|
180
158
|
];
|
|
181
159
|
function generateConfigFile(selectedPlugins, inputPath, outputPath) {
|
|
@@ -275,7 +253,6 @@ async function runInit({ yes, version }) {
|
|
|
275
253
|
if (_clack_prompts.isCancel(selectedPluginValues)) cancelAndExit();
|
|
276
254
|
selectedPlugins = availablePlugins.filter((plugin) => selectedPluginValues.includes(plugin.value));
|
|
277
255
|
}
|
|
278
|
-
if (!selectedPlugins.find((p) => p.value === "plugin-oas")) selectedPlugins.unshift(availablePlugins.find((p) => p.value === "plugin-oas"));
|
|
279
256
|
const packagesToInstall = ["kubb", ...selectedPlugins.map((p) => p.packageName)];
|
|
280
257
|
const spinner = _clack_prompts.spinner();
|
|
281
258
|
spinner.start(`Installing ${packagesToInstall.length} packages with ${packageManager.name}`);
|
|
@@ -313,4 +290,4 @@ async function runInit({ yes, version }) {
|
|
|
313
290
|
//#endregion
|
|
314
291
|
exports.runInit = runInit;
|
|
315
292
|
|
|
316
|
-
//# sourceMappingURL=init-
|
|
293
|
+
//# sourceMappingURL=init-CZ5Xq2Hd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-CZ5Xq2Hd.cjs","names":["fs","path","spawnAsync","pluginDefaultConfigs","process","clack","initDefaults","KUBB_CONFIG_FILENAME","path","fs"],"sources":["../../../internals/utils/src/packageManager.ts","../src/utils/packageManager.ts","../src/runners/init.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\n/**\n * Supported package manager identifiers.\n *\n * @example\n * ```ts\n * const pm: PackageManagerName = 'pnpm'\n * ```\n */\nexport type PackageManagerName = 'npm' | 'pnpm' | 'yarn' | 'bun'\n\n/**\n * Metadata describing a package manager's lock file and install command.\n */\nexport interface PackageManagerInfo {\n /**\n * Identifier used in CLI commands, e.g. `pnpm`, `yarn`.\n */\n name: PackageManagerName\n /**\n * Lock file name that uniquely identifies this package manager in a project root.\n */\n lockFile: string\n /**\n * Subcommands passed to the package manager binary to install a dev dependency.\n */\n installCommand: ReadonlyArray<string>\n}\n/**\n * Metadata for each supported package manager, keyed by its short name.\n *\n * @example\n * ```ts\n * packageManagers.pnpm.installCommand // ['add', '-D']\n * packageManagers.npm.lockFile // 'package-lock.json'\n * ```\n */\nconst packageManagers: Record<PackageManagerName, PackageManagerInfo> = {\n pnpm: {\n name: 'pnpm',\n lockFile: 'pnpm-lock.yaml',\n installCommand: ['add', '-D'],\n },\n yarn: {\n name: 'yarn',\n lockFile: 'yarn.lock',\n installCommand: ['add', '-D'],\n },\n bun: {\n name: 'bun',\n lockFile: 'bun.lockb',\n installCommand: ['add', '-d'],\n },\n npm: {\n name: 'npm',\n lockFile: 'package-lock.json',\n installCommand: ['install', '--save-dev'],\n },\n}\n\n/**\n * Minimal shape of `package.json` fields read during detection.\n */\ntype PackageJson = {\n /**\n * The `packageManager` field from `package.json` (e.g. `\"pnpm@9.0.0\"`).\n */\n packageManager?: string\n}\n\n/**\n * Detects the active package manager for the given directory.\n * Resolution order: `packageManager` field in `package.json`, then presence of a lock file.\n * Falls back to `npm` when no signal is found.\n *\n * @example\n * ```ts\n * detectPackageManager('/my/project') // { name: 'pnpm', lockFile: 'pnpm-lock.yaml', ... }\n * detectPackageManager() // falls back to npm when no lock file is found\n * ```\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManagerInfo {\n const packageJsonPath = join(cwd, 'package.json')\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as PackageJson\n const pmField = packageJson.packageManager\n if (typeof pmField === 'string') {\n const name = pmField.split('@')[0]\n if (name && name in packageManagers) {\n return packageManagers[name as PackageManagerName]\n }\n }\n } catch {\n // Continue to lock file detection\n }\n }\n\n for (const pm of Object.values(packageManagers)) {\n if (existsSync(join(cwd, pm.lockFile))) {\n return pm\n }\n }\n\n return packageManagers.npm\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport type { PackageManagerInfo, PackageManagerName } from '@internals/utils'\nimport { spawnAsync } from '@internals/utils'\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 type { PackageManagerInfo } from '@internals/utils'\nimport { detectPackageManager } from '@internals/utils'\nimport { initDefaults, KUBB_CONFIG_FILENAME, 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: 'types' | 'client' | 'framework' | 'validation' | 'testing' | 'mocks' | 'documentation' | 'ai'\n}\n\nconst availablePlugins: PluginOption[] = [\n {\n value: 'plugin-ts',\n label: 'TypeScript',\n hint: 'Recommended',\n packageName: '@kubb/plugin-ts',\n importName: 'pluginTs',\n category: 'types',\n },\n {\n value: 'plugin-client',\n label: 'Client (Fetch/Axios)',\n packageName: '@kubb/plugin-client',\n importName: 'pluginClient',\n category: 'client',\n },\n {\n value: 'plugin-react-query',\n label: 'React Query / TanStack Query',\n packageName: '@kubb/plugin-react-query',\n importName: 'pluginReactQuery',\n category: 'framework',\n },\n {\n value: 'plugin-vue-query',\n label: 'Vue Query',\n packageName: '@kubb/plugin-vue-query',\n importName: 'pluginVueQuery',\n category: 'framework',\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: 'mocks',\n },\n {\n value: 'plugin-msw',\n label: 'MSW Handlers',\n packageName: '@kubb/plugin-msw',\n importName: 'pluginMsw',\n category: 'mocks',\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-mcp',\n label: 'MCP Server (AI / Model Context Protocol)',\n packageName: '@kubb/plugin-mcp',\n importName: 'pluginMcp',\n category: 'ai',\n },\n {\n value: 'plugin-redoc',\n label: 'ReDoc Documentation',\n packageName: '@kubb/plugin-redoc',\n importName: 'pluginRedoc',\n category: 'documentation',\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'\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 // Install packages\n const packagesToInstall = ['kubb', ...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_FILENAME}`)\n\n const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath)\n const configPath = path.join(cwd, KUBB_CONFIG_FILENAME)\n\n if (fs.existsSync(configPath)) {\n configSpinner.stop(`${KUBB_CONFIG_FILENAME} already exists`)\n\n if (!yes) {\n const shouldOverwrite = await clack.confirm({\n message: `${KUBB_CONFIG_FILENAME} 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_FILENAME}`)\n }\n\n fs.writeFileSync(configPath, configContent, 'utf-8')\n\n configSpinner.stop(`Created ${KUBB_CONFIG_FILENAME}`)\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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { n as defineCommand } from "./define-Ctii4bel.js";
|
|
3
|
-
import { t as version } from "./package-
|
|
3
|
+
import { t as version } from "./package-C_5uVutq.js";
|
|
4
4
|
//#region src/commands/init.ts
|
|
5
5
|
const command = defineCommand({
|
|
6
6
|
name: "init",
|
|
@@ -12,7 +12,7 @@ const command = defineCommand({
|
|
|
12
12
|
default: false
|
|
13
13
|
} },
|
|
14
14
|
async run({ values }) {
|
|
15
|
-
const { runInit } = await import("./init-
|
|
15
|
+
const { runInit } = await import("./init-eNRlotJK.js");
|
|
16
16
|
await runInit({
|
|
17
17
|
yes: values.yes,
|
|
18
18
|
version
|
|
@@ -22,4 +22,4 @@ const command = defineCommand({
|
|
|
22
22
|
//#endregion
|
|
23
23
|
export { command };
|
|
24
24
|
|
|
25
|
-
//# sourceMappingURL=init-
|
|
25
|
+
//# sourceMappingURL=init-DpGOoN4S.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-
|
|
1
|
+
{"version":3,"file":"init-DpGOoN4S.js","names":[],"sources":["../src/commands/init.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\n\nexport const command = defineCommand({\n name: 'init',\n description: 'Initialize a new Kubb project with interactive setup',\n options: {\n yes: {\n type: 'boolean',\n description: 'Skip prompts and use default options',\n short: 'y',\n default: false,\n },\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;EACH,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;EACV,EACF;CACD,MAAM,IAAI,EAAE,UAAU;EACpB,MAAM,EAAE,YAAY,MAAM,OAAO;AAEjC,QAAM,QAAQ;GAAE,KAAK,OAAO;GAAK;GAAS,CAAC;;CAE9C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { t as spawnAsync } from "./shell-DLzN4fRo.js";
|
|
3
|
-
import { c as initDefaults, l as pluginDefaultConfigs, t as KUBB_CONFIG_FILENAME } from "./constants-
|
|
3
|
+
import { c as initDefaults, l as pluginDefaultConfigs, t as KUBB_CONFIG_FILENAME } from "./constants-aL3CP_Wq.js";
|
|
4
4
|
import { styleText } from "node:util";
|
|
5
5
|
import fs, { existsSync, readFileSync } from "node:fs";
|
|
6
6
|
import path, { join } from "node:path";
|
|
@@ -80,63 +80,34 @@ async function installPackages(packages, packageManager, cwd = process.cwd()) {
|
|
|
80
80
|
//#endregion
|
|
81
81
|
//#region src/runners/init.ts
|
|
82
82
|
const availablePlugins = [
|
|
83
|
-
{
|
|
84
|
-
value: "plugin-oas",
|
|
85
|
-
label: "OpenAPI Parser",
|
|
86
|
-
hint: "Required",
|
|
87
|
-
packageName: "@kubb/plugin-oas",
|
|
88
|
-
importName: "pluginOas",
|
|
89
|
-
category: "core"
|
|
90
|
-
},
|
|
91
83
|
{
|
|
92
84
|
value: "plugin-ts",
|
|
93
85
|
label: "TypeScript",
|
|
94
86
|
hint: "Recommended",
|
|
95
87
|
packageName: "@kubb/plugin-ts",
|
|
96
88
|
importName: "pluginTs",
|
|
97
|
-
category: "
|
|
89
|
+
category: "types"
|
|
98
90
|
},
|
|
99
91
|
{
|
|
100
92
|
value: "plugin-client",
|
|
101
93
|
label: "Client (Fetch/Axios)",
|
|
102
94
|
packageName: "@kubb/plugin-client",
|
|
103
95
|
importName: "pluginClient",
|
|
104
|
-
category: "
|
|
96
|
+
category: "client"
|
|
105
97
|
},
|
|
106
98
|
{
|
|
107
99
|
value: "plugin-react-query",
|
|
108
100
|
label: "React Query / TanStack Query",
|
|
109
101
|
packageName: "@kubb/plugin-react-query",
|
|
110
102
|
importName: "pluginReactQuery",
|
|
111
|
-
category: "
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
value: "plugin-solid-query",
|
|
115
|
-
label: "Solid Query",
|
|
116
|
-
packageName: "@kubb/plugin-solid-query",
|
|
117
|
-
importName: "pluginSolidQuery",
|
|
118
|
-
category: "query"
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
value: "plugin-svelte-query",
|
|
122
|
-
label: "Svelte Query",
|
|
123
|
-
packageName: "@kubb/plugin-svelte-query",
|
|
124
|
-
importName: "pluginSvelteQuery",
|
|
125
|
-
category: "query"
|
|
103
|
+
category: "framework"
|
|
126
104
|
},
|
|
127
105
|
{
|
|
128
106
|
value: "plugin-vue-query",
|
|
129
107
|
label: "Vue Query",
|
|
130
108
|
packageName: "@kubb/plugin-vue-query",
|
|
131
109
|
importName: "pluginVueQuery",
|
|
132
|
-
category: "
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
value: "plugin-swr",
|
|
136
|
-
label: "SWR",
|
|
137
|
-
packageName: "@kubb/plugin-swr",
|
|
138
|
-
importName: "pluginSwr",
|
|
139
|
-
category: "query"
|
|
110
|
+
category: "framework"
|
|
140
111
|
},
|
|
141
112
|
{
|
|
142
113
|
value: "plugin-zod",
|
|
@@ -150,14 +121,14 @@ const availablePlugins = [
|
|
|
150
121
|
label: "Faker.js Mocks",
|
|
151
122
|
packageName: "@kubb/plugin-faker",
|
|
152
123
|
importName: "pluginFaker",
|
|
153
|
-
category: "
|
|
124
|
+
category: "mocks"
|
|
154
125
|
},
|
|
155
126
|
{
|
|
156
127
|
value: "plugin-msw",
|
|
157
128
|
label: "MSW Handlers",
|
|
158
129
|
packageName: "@kubb/plugin-msw",
|
|
159
130
|
importName: "pluginMsw",
|
|
160
|
-
category: "
|
|
131
|
+
category: "mocks"
|
|
161
132
|
},
|
|
162
133
|
{
|
|
163
134
|
value: "plugin-cypress",
|
|
@@ -166,12 +137,19 @@ const availablePlugins = [
|
|
|
166
137
|
importName: "pluginCypress",
|
|
167
138
|
category: "testing"
|
|
168
139
|
},
|
|
140
|
+
{
|
|
141
|
+
value: "plugin-mcp",
|
|
142
|
+
label: "MCP Server (AI / Model Context Protocol)",
|
|
143
|
+
packageName: "@kubb/plugin-mcp",
|
|
144
|
+
importName: "pluginMcp",
|
|
145
|
+
category: "ai"
|
|
146
|
+
},
|
|
169
147
|
{
|
|
170
148
|
value: "plugin-redoc",
|
|
171
149
|
label: "ReDoc Documentation",
|
|
172
150
|
packageName: "@kubb/plugin-redoc",
|
|
173
151
|
importName: "pluginRedoc",
|
|
174
|
-
category: "
|
|
152
|
+
category: "documentation"
|
|
175
153
|
}
|
|
176
154
|
];
|
|
177
155
|
function generateConfigFile(selectedPlugins, inputPath, outputPath) {
|
|
@@ -271,7 +249,6 @@ async function runInit({ yes, version }) {
|
|
|
271
249
|
if (clack.isCancel(selectedPluginValues)) cancelAndExit();
|
|
272
250
|
selectedPlugins = availablePlugins.filter((plugin) => selectedPluginValues.includes(plugin.value));
|
|
273
251
|
}
|
|
274
|
-
if (!selectedPlugins.find((p) => p.value === "plugin-oas")) selectedPlugins.unshift(availablePlugins.find((p) => p.value === "plugin-oas"));
|
|
275
252
|
const packagesToInstall = ["kubb", ...selectedPlugins.map((p) => p.packageName)];
|
|
276
253
|
const spinner = clack.spinner();
|
|
277
254
|
spinner.start(`Installing ${packagesToInstall.length} packages with ${packageManager.name}`);
|
|
@@ -309,4 +286,4 @@ async function runInit({ yes, version }) {
|
|
|
309
286
|
//#endregion
|
|
310
287
|
export { runInit };
|
|
311
288
|
|
|
312
|
-
//# sourceMappingURL=init-
|
|
289
|
+
//# sourceMappingURL=init-eNRlotJK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-eNRlotJK.js","names":["process"],"sources":["../../../internals/utils/src/packageManager.ts","../src/utils/packageManager.ts","../src/runners/init.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs'\nimport { join } from 'node:path'\n\n/**\n * Supported package manager identifiers.\n *\n * @example\n * ```ts\n * const pm: PackageManagerName = 'pnpm'\n * ```\n */\nexport type PackageManagerName = 'npm' | 'pnpm' | 'yarn' | 'bun'\n\n/**\n * Metadata describing a package manager's lock file and install command.\n */\nexport interface PackageManagerInfo {\n /**\n * Identifier used in CLI commands, e.g. `pnpm`, `yarn`.\n */\n name: PackageManagerName\n /**\n * Lock file name that uniquely identifies this package manager in a project root.\n */\n lockFile: string\n /**\n * Subcommands passed to the package manager binary to install a dev dependency.\n */\n installCommand: ReadonlyArray<string>\n}\n/**\n * Metadata for each supported package manager, keyed by its short name.\n *\n * @example\n * ```ts\n * packageManagers.pnpm.installCommand // ['add', '-D']\n * packageManagers.npm.lockFile // 'package-lock.json'\n * ```\n */\nconst packageManagers: Record<PackageManagerName, PackageManagerInfo> = {\n pnpm: {\n name: 'pnpm',\n lockFile: 'pnpm-lock.yaml',\n installCommand: ['add', '-D'],\n },\n yarn: {\n name: 'yarn',\n lockFile: 'yarn.lock',\n installCommand: ['add', '-D'],\n },\n bun: {\n name: 'bun',\n lockFile: 'bun.lockb',\n installCommand: ['add', '-d'],\n },\n npm: {\n name: 'npm',\n lockFile: 'package-lock.json',\n installCommand: ['install', '--save-dev'],\n },\n}\n\n/**\n * Minimal shape of `package.json` fields read during detection.\n */\ntype PackageJson = {\n /**\n * The `packageManager` field from `package.json` (e.g. `\"pnpm@9.0.0\"`).\n */\n packageManager?: string\n}\n\n/**\n * Detects the active package manager for the given directory.\n * Resolution order: `packageManager` field in `package.json`, then presence of a lock file.\n * Falls back to `npm` when no signal is found.\n *\n * @example\n * ```ts\n * detectPackageManager('/my/project') // { name: 'pnpm', lockFile: 'pnpm-lock.yaml', ... }\n * detectPackageManager() // falls back to npm when no lock file is found\n * ```\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManagerInfo {\n const packageJsonPath = join(cwd, 'package.json')\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8')) as PackageJson\n const pmField = packageJson.packageManager\n if (typeof pmField === 'string') {\n const name = pmField.split('@')[0]\n if (name && name in packageManagers) {\n return packageManagers[name as PackageManagerName]\n }\n }\n } catch {\n // Continue to lock file detection\n }\n }\n\n for (const pm of Object.values(packageManagers)) {\n if (existsSync(join(cwd, pm.lockFile))) {\n return pm\n }\n }\n\n return packageManagers.npm\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport type { PackageManagerInfo, PackageManagerName } from '@internals/utils'\nimport { spawnAsync } from '@internals/utils'\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 type { PackageManagerInfo } from '@internals/utils'\nimport { detectPackageManager } from '@internals/utils'\nimport { initDefaults, KUBB_CONFIG_FILENAME, 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: 'types' | 'client' | 'framework' | 'validation' | 'testing' | 'mocks' | 'documentation' | 'ai'\n}\n\nconst availablePlugins: PluginOption[] = [\n {\n value: 'plugin-ts',\n label: 'TypeScript',\n hint: 'Recommended',\n packageName: '@kubb/plugin-ts',\n importName: 'pluginTs',\n category: 'types',\n },\n {\n value: 'plugin-client',\n label: 'Client (Fetch/Axios)',\n packageName: '@kubb/plugin-client',\n importName: 'pluginClient',\n category: 'client',\n },\n {\n value: 'plugin-react-query',\n label: 'React Query / TanStack Query',\n packageName: '@kubb/plugin-react-query',\n importName: 'pluginReactQuery',\n category: 'framework',\n },\n {\n value: 'plugin-vue-query',\n label: 'Vue Query',\n packageName: '@kubb/plugin-vue-query',\n importName: 'pluginVueQuery',\n category: 'framework',\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: 'mocks',\n },\n {\n value: 'plugin-msw',\n label: 'MSW Handlers',\n packageName: '@kubb/plugin-msw',\n importName: 'pluginMsw',\n category: 'mocks',\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-mcp',\n label: 'MCP Server (AI / Model Context Protocol)',\n packageName: '@kubb/plugin-mcp',\n importName: 'pluginMcp',\n category: 'ai',\n },\n {\n value: 'plugin-redoc',\n label: 'ReDoc Documentation',\n packageName: '@kubb/plugin-redoc',\n importName: 'pluginRedoc',\n category: 'documentation',\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'\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 // Install packages\n const packagesToInstall = ['kubb', ...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_FILENAME}`)\n\n const configContent = generateConfigFile(selectedPlugins, inputPath, outputPath)\n const configPath = path.join(cwd, KUBB_CONFIG_FILENAME)\n\n if (fs.existsSync(configPath)) {\n configSpinner.stop(`${KUBB_CONFIG_FILENAME} already exists`)\n\n if (!yes) {\n const shouldOverwrite = await clack.confirm({\n message: `${KUBB_CONFIG_FILENAME} 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_FILENAME}`)\n }\n\n fs.writeFileSync(configPath, configContent, 'utf-8')\n\n configSpinner.stop(`Created ${KUBB_CONFIG_FILENAME}`)\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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_errors = require("./errors-CLCjoSg0.cjs");
|
|
3
|
-
const require_telemetry = require("./telemetry-
|
|
3
|
+
const require_telemetry = require("./telemetry-DN95_2pF.cjs");
|
|
4
4
|
let node_util = require("node:util");
|
|
5
5
|
let node_process = require("node:process");
|
|
6
6
|
node_process = require_chunk.__toESM(node_process, 1);
|
|
@@ -38,4 +38,4 @@ async function runMcp({ version }) {
|
|
|
38
38
|
//#endregion
|
|
39
39
|
exports.runMcp = runMcp;
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=mcp-
|
|
41
|
+
//# sourceMappingURL=mcp-CLcDV4Jm.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-CLcDV4Jm.cjs","names":["process","sendTelemetry","buildTelemetryEvent","getErrorMessage"],"sources":["../src/runners/mcp.ts"],"sourcesContent":["import process from 'node:process'\nimport { styleText } from 'node:util'\nimport { getErrorMessage } from '@internals/utils'\nimport type * as McpModule from '@kubb/mcp'\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 import('@kubb/mcp')) 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(\n buildTelemetryEvent({\n command: 'mcp',\n kubbVersion: version,\n hrStart,\n status: 'success',\n }),\n )\n } catch (error) {\n await sendTelemetry(\n buildTelemetryEvent({\n command: 'mcp',\n kubbVersion: version,\n hrStart,\n status: 'failed',\n }),\n )\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;;AAUA,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAM,OAAO;UACb,IAAI;AACX,UAAQ,MAAM,4DAA4D;AAC1E,eAAA,QAAQ,KAAK,EAAE;;CAGjB,MAAM,EAAE,QAAQ;CAChB,MAAM,UAAUA,aAAAA,QAAQ,QAAQ;AAChC,KAAI;AACF,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,MAAA,GAAA,UAAA,WAAe,UAAU,6DAA6D,CAAC;AAC/F,OAAK;AACL,QAAMC,kBAAAA,cACJC,kBAAAA,oBAAoB;GAClB,SAAS;GACT,aAAa;GACb;GACA,QAAQ;GACT,CAAC,CACH;UACM,OAAO;AACd,QAAMD,kBAAAA,cACJC,kBAAAA,oBAAoB;GAClB,SAAS;GACT,aAAa;GACb;GACA,QAAQ;GACT,CAAC,CACH;AACD,UAAQ,MAAMC,eAAAA,gBAAgB,MAAM,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { t as getErrorMessage } from "./errors-CjPmyZHy.js";
|
|
3
|
-
import { r as sendTelemetry, t as buildTelemetryEvent } from "./telemetry-
|
|
3
|
+
import { r as sendTelemetry, t as buildTelemetryEvent } from "./telemetry-LgT_sdPe.js";
|
|
4
4
|
import { styleText } from "node:util";
|
|
5
5
|
import process from "node:process";
|
|
6
6
|
//#region src/runners/mcp.ts
|
|
@@ -37,4 +37,4 @@ async function runMcp({ version }) {
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { runMcp };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=mcp-
|
|
40
|
+
//# sourceMappingURL=mcp-D7EIR9fR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-D7EIR9fR.js","names":[],"sources":["../src/runners/mcp.ts"],"sourcesContent":["import process from 'node:process'\nimport { styleText } from 'node:util'\nimport { getErrorMessage } from '@internals/utils'\nimport type * as McpModule from '@kubb/mcp'\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 import('@kubb/mcp')) 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(\n buildTelemetryEvent({\n command: 'mcp',\n kubbVersion: version,\n hrStart,\n status: 'success',\n }),\n )\n } catch (error) {\n await sendTelemetry(\n buildTelemetryEvent({\n command: 'mcp',\n kubbVersion: version,\n hrStart,\n status: 'failed',\n }),\n )\n console.error(getErrorMessage(error))\n }\n}\n"],"mappings":";;;;;;AAUA,eAAsB,OAAO,EAAE,WAAsC;CACnE,IAAI;AACJ,KAAI;AACF,QAAO,MAAM,OAAO;UACb,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,cACJ,oBAAoB;GAClB,SAAS;GACT,aAAa;GACb;GACA,QAAQ;GACT,CAAC,CACH;UACM,OAAO;AACd,QAAM,cACJ,oBAAoB;GAClB,SAAS;GACT,aAAa;GACb;GACA,QAAQ;GACT,CAAC,CACH;AACD,UAAQ,MAAM,gBAAgB,MAAM,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
require("./chunk-ByKO4r7w.cjs");
|
|
2
2
|
const require_define = require("./define-Bdn8j5VM.cjs");
|
|
3
|
-
const require_package = require("./package-
|
|
3
|
+
const require_package = require("./package-D5we_8TP.cjs");
|
|
4
4
|
//#region src/commands/mcp.ts
|
|
5
5
|
const command = require_define.defineCommand({
|
|
6
6
|
name: "mcp",
|
|
7
7
|
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
8
8
|
async run() {
|
|
9
|
-
const { runMcp } = await Promise.resolve().then(() => require("./mcp-
|
|
9
|
+
const { runMcp } = await Promise.resolve().then(() => require("./mcp-CLcDV4Jm.cjs"));
|
|
10
10
|
await runMcp({ version: require_package.version });
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
13
|
//#endregion
|
|
14
14
|
exports.command = command;
|
|
15
15
|
|
|
16
|
-
//# sourceMappingURL=mcp-
|
|
16
|
+
//# sourceMappingURL=mcp-D7lDoJU3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-D7lDoJU3.cjs","names":["defineCommand"],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\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,UAAUA,eAAAA,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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "./chunk--u3MIqq1.js";
|
|
2
2
|
import { n as defineCommand } from "./define-Ctii4bel.js";
|
|
3
|
-
import { t as version } from "./package-
|
|
3
|
+
import { t as version } from "./package-C_5uVutq.js";
|
|
4
4
|
//#region src/commands/mcp.ts
|
|
5
5
|
const command = defineCommand({
|
|
6
6
|
name: "mcp",
|
|
7
7
|
description: "Start the server to enable the MCP client to interact with the LLM.",
|
|
8
8
|
async run() {
|
|
9
|
-
const { runMcp } = await import("./mcp-
|
|
9
|
+
const { runMcp } = await import("./mcp-D7EIR9fR.js");
|
|
10
10
|
await runMcp({ version });
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
13
|
//#endregion
|
|
14
14
|
export { command };
|
|
15
15
|
|
|
16
|
-
//# sourceMappingURL=mcp-
|
|
16
|
+
//# sourceMappingURL=mcp-HPxyFVbA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-
|
|
1
|
+
{"version":3,"file":"mcp-HPxyFVbA.js","names":[],"sources":["../src/commands/mcp.ts"],"sourcesContent":["import { defineCommand } from '@internals/utils'\nimport { version } from '../../package.json'\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 @@
|
|
|
1
|
+
{"version":3,"file":"package-C_5uVutq.js","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region package.json
|
|
2
|
-
var version = "5.0.0-alpha.
|
|
2
|
+
var version = "5.0.0-alpha.73";
|
|
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-D5we_8TP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-D5we_8TP.cjs","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
2
|
-
const require_constants = require("./constants-
|
|
2
|
+
const require_constants = require("./constants-CnDXa1R6.cjs");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
let node_dns = require("node:dns");
|
|
5
5
|
let node_os = require("node:os");
|
|
@@ -279,4 +279,4 @@ Object.defineProperty(exports, "sendTelemetry", {
|
|
|
279
279
|
}
|
|
280
280
|
});
|
|
281
281
|
|
|
282
|
-
//# sourceMappingURL=telemetry-
|
|
282
|
+
//# sourceMappingURL=telemetry-DN95_2pF.cjs.map
|