@kubb/cli 3.16.2 → 3.16.4

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.
Files changed (49) hide show
  1. package/dist/chunk-DWy1uDak.cjs +39 -0
  2. package/dist/generate-B9o-QjSi.cjs +6641 -0
  3. package/dist/generate-B9o-QjSi.cjs.map +1 -0
  4. package/dist/generate-BpnRmhKq.cjs +255 -0
  5. package/dist/generate-BpnRmhKq.cjs.map +1 -0
  6. package/dist/generate-COcFbC_i.js +254 -0
  7. package/dist/generate-COcFbC_i.js.map +1 -0
  8. package/dist/generate-CUJ2_P-U.js +6669 -0
  9. package/dist/generate-CUJ2_P-U.js.map +1 -0
  10. package/dist/index.cjs +53 -58
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +3 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.js +52 -48
  15. package/dist/index.js.map +1 -1
  16. package/dist/mcp-Cmiw4RpU.cjs +44 -0
  17. package/dist/mcp-Cmiw4RpU.cjs.map +1 -0
  18. package/dist/mcp-DcaOAt6B.js +43 -0
  19. package/dist/mcp-DcaOAt6B.js.map +1 -0
  20. package/dist/validate-ClewPP5U.cjs +55 -0
  21. package/dist/validate-ClewPP5U.cjs.map +1 -0
  22. package/dist/validate-DD5UaudC.js +54 -0
  23. package/dist/validate-DD5UaudC.js.map +1 -0
  24. package/package.json +19 -19
  25. package/src/commands/generate.ts +10 -13
  26. package/src/commands/mcp.ts +2 -2
  27. package/src/runners/generate.ts +4 -4
  28. package/src/utils/Writables.ts +2 -2
  29. package/src/utils/executeHooks.ts +3 -3
  30. package/src/utils/getSummary.ts +8 -8
  31. package/src/utils/watcher.ts +3 -3
  32. package/dist/chunk-OKWBGMAG.cjs +0 -52
  33. package/dist/chunk-OKWBGMAG.cjs.map +0 -1
  34. package/dist/generate-65TMSGIL.js +0 -273
  35. package/dist/generate-65TMSGIL.js.map +0 -1
  36. package/dist/generate-HUWFJ4IA.js +0 -209
  37. package/dist/generate-HUWFJ4IA.js.map +0 -1
  38. package/dist/generate-IO6M6WPG.cjs +0 -7590
  39. package/dist/generate-IO6M6WPG.cjs.map +0 -1
  40. package/dist/generate-YZYI2YSX.cjs +0 -311
  41. package/dist/generate-YZYI2YSX.cjs.map +0 -1
  42. package/dist/mcp-KL42HRWB.cjs +0 -57
  43. package/dist/mcp-KL42HRWB.cjs.map +0 -1
  44. package/dist/mcp-LTBICXYR.js +0 -49
  45. package/dist/mcp-LTBICXYR.js.map +0 -1
  46. package/dist/validate-7QEOABSE.cjs +0 -67
  47. package/dist/validate-7QEOABSE.cjs.map +0 -1
  48. package/dist/validate-ONN45RYY.js +0 -58
  49. package/dist/validate-ONN45RYY.js.map +0 -1
@@ -0,0 +1,255 @@
1
+ const require_chunk = require('./chunk-DWy1uDak.cjs');
2
+ const citty = require_chunk.__toESM(require("citty"));
3
+ const node_path = require_chunk.__toESM(require("node:path"));
4
+ const node_process = require_chunk.__toESM(require("node:process"));
5
+ const __kubb_core = require_chunk.__toESM(require("@kubb/core"));
6
+ const __kubb_core_logger = require_chunk.__toESM(require("@kubb/core/logger"));
7
+ const open = require_chunk.__toESM(require("open"));
8
+ const picocolors = require_chunk.__toESM(require("picocolors"));
9
+ const __kubb_core_utils = require_chunk.__toESM(require("@kubb/core/utils"));
10
+ const cosmiconfig = require_chunk.__toESM(require("cosmiconfig"));
11
+ const jiti = require_chunk.__toESM(require("jiti"));
12
+
13
+ //#region src/utils/getPlugins.ts
14
+ function isJSONPlugins(plugins) {
15
+ return !!plugins?.some((plugin) => {
16
+ return Array.isArray(plugin) && typeof plugin?.at(0) === "string";
17
+ });
18
+ }
19
+ function isObjectPlugins(plugins) {
20
+ return plugins instanceof Object && !Array.isArray(plugins);
21
+ }
22
+ function getPlugins(plugins) {
23
+ if (isObjectPlugins(plugins)) throw new Error("Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json");
24
+ if (isJSONPlugins(plugins)) throw new Error("JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json");
25
+ return Promise.resolve(plugins);
26
+ }
27
+
28
+ //#endregion
29
+ //#region src/utils/getConfig.ts
30
+ /**
31
+ * Converting UserConfig to Config without a change in the object beside the JSON convert.
32
+ */
33
+ async function getConfig(result, args$1) {
34
+ const config = result?.config;
35
+ let kubbUserConfig = Promise.resolve(config);
36
+ if (typeof config === "function") {
37
+ const possiblePromise = config(args$1);
38
+ if ((0, __kubb_core_utils.isPromise)(possiblePromise)) kubbUserConfig = possiblePromise;
39
+ kubbUserConfig = Promise.resolve(possiblePromise);
40
+ }
41
+ let JSONConfig = await kubbUserConfig;
42
+ if (Array.isArray(JSONConfig)) {
43
+ const results = [];
44
+ for (const item of JSONConfig) {
45
+ const plugins = item.plugins ? await getPlugins(item.plugins) : void 0;
46
+ results.push({
47
+ ...item,
48
+ plugins
49
+ });
50
+ }
51
+ return results;
52
+ }
53
+ JSONConfig = {
54
+ ...JSONConfig,
55
+ plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : void 0
56
+ };
57
+ return JSONConfig;
58
+ }
59
+
60
+ //#endregion
61
+ //#region src/utils/getCosmiConfig.ts
62
+ const tsLoader = async (configFile) => {
63
+ const jiti$1 = (0, jiti.createJiti)(require("url").pathToFileURL(__filename).href, {
64
+ jsx: {
65
+ runtime: "automatic",
66
+ importSource: "@kubb/react"
67
+ },
68
+ sourceMaps: true
69
+ });
70
+ const mod = await jiti$1.import(configFile, { default: true });
71
+ return mod;
72
+ };
73
+ async function getCosmiConfig(moduleName, config) {
74
+ const searchPlaces = [
75
+ "package.json",
76
+ `.${moduleName}rc`,
77
+ `.${moduleName}rc.json`,
78
+ `.${moduleName}rc.yaml`,
79
+ `.${moduleName}rc.yml`,
80
+ `.${moduleName}rc.ts`,
81
+ `.${moduleName}rc.js`,
82
+ `.${moduleName}rc.mjs`,
83
+ `.${moduleName}rc.cjs`,
84
+ `${moduleName}.config.ts`,
85
+ `${moduleName}.config.js`,
86
+ `${moduleName}.config.mjs`,
87
+ `${moduleName}.config.cjs`
88
+ ];
89
+ const explorer = (0, cosmiconfig.cosmiconfig)(moduleName, {
90
+ cache: false,
91
+ searchPlaces: [
92
+ ...searchPlaces.map((searchPlace) => {
93
+ return `.config/${searchPlace}`;
94
+ }),
95
+ ...searchPlaces.map((searchPlace) => {
96
+ return `configs/${searchPlace}`;
97
+ }),
98
+ ...searchPlaces
99
+ ],
100
+ loaders: { ".ts": tsLoader }
101
+ });
102
+ const result = config ? await explorer.load(config) : await explorer.search();
103
+ if (result?.isEmpty || !result || !result.config) throw new Error("Config not defined, create a kubb.config.js or pass through your config with the option --config");
104
+ return result;
105
+ }
106
+
107
+ //#endregion
108
+ //#region src/utils/watcher.ts
109
+ async function startWatcher(path$1, cb) {
110
+ const { watch } = await import("chokidar");
111
+ const logger = (0, __kubb_core_logger.createLogger)();
112
+ const ignored = "**/{.git,node_modules}/**";
113
+ const watcher = watch(path$1, {
114
+ ignorePermissionErrors: true,
115
+ ignored
116
+ });
117
+ watcher.on("all", (type, file) => {
118
+ logger?.emit("info", picocolors.default.yellow(picocolors.default.bold(`Change detected: ${type} ${file}`)));
119
+ try {
120
+ cb(path$1);
121
+ } catch (_e) {
122
+ logger?.emit("warning", picocolors.default.red("Watcher failed"));
123
+ }
124
+ });
125
+ }
126
+
127
+ //#endregion
128
+ //#region src/commands/generate.ts
129
+ const args = {
130
+ config: {
131
+ type: "string",
132
+ description: "Path to the Kubb config",
133
+ alias: "c"
134
+ },
135
+ logLevel: {
136
+ type: "string",
137
+ description: "Info, silent or debug",
138
+ alias: "l",
139
+ default: "info",
140
+ valueHint: "silent|info|debug"
141
+ },
142
+ watch: {
143
+ type: "boolean",
144
+ description: "Watch mode based on the input file",
145
+ alias: "w",
146
+ default: false
147
+ },
148
+ debug: {
149
+ type: "boolean",
150
+ description: "Override logLevel to debug",
151
+ alias: "d",
152
+ default: false
153
+ },
154
+ ui: {
155
+ type: "boolean",
156
+ description: "Open ui",
157
+ alias: "u",
158
+ default: false
159
+ },
160
+ help: {
161
+ type: "boolean",
162
+ description: "Show help",
163
+ alias: "h",
164
+ default: false
165
+ }
166
+ };
167
+ const command = (0, citty.defineCommand)({
168
+ meta: {
169
+ name: "generate",
170
+ description: "[input] Generate files based on a 'kubb.config.ts' file"
171
+ },
172
+ args,
173
+ async run(commandContext) {
174
+ let name = "";
175
+ const progressCache = /* @__PURE__ */ new Map();
176
+ const { args: args$1 } = commandContext;
177
+ const input = args$1._[0];
178
+ if (args$1.help) return (0, citty.showUsage)(command);
179
+ if (args$1.debug) args$1.logLevel = "debug";
180
+ const logLevel = __kubb_core_logger.LogMapper[args$1.logLevel] || 3;
181
+ const logger = (0, __kubb_core_logger.createLogger)({ logLevel });
182
+ const { generate } = await Promise.resolve().then(() => require("./generate-B9o-QjSi.cjs"));
183
+ logger.emit("start", "Loading config");
184
+ const result = await getCosmiConfig("kubb", args$1.config);
185
+ logger.emit("success", `Config loaded(${picocolors.default.dim(node_path.default.relative(node_process.cwd(), result.filepath))})`);
186
+ const config = await getConfig(result, args$1);
187
+ const start = async () => {
188
+ if (Array.isArray(config)) {
189
+ const promiseManager = new __kubb_core.PromiseManager();
190
+ const promises = config.map((c) => () => {
191
+ name = c.name || "";
192
+ progressCache.clear();
193
+ return generate({
194
+ input,
195
+ config: c,
196
+ args: args$1,
197
+ progressCache
198
+ });
199
+ });
200
+ await promiseManager.run("seq", promises);
201
+ return;
202
+ }
203
+ progressCache.clear();
204
+ await generate({
205
+ input,
206
+ config,
207
+ progressCache,
208
+ args: args$1
209
+ });
210
+ };
211
+ if (args$1.ui) {
212
+ const { startServer } = await import("@kubb/ui");
213
+ await startServer({
214
+ stop: () => node_process.exit(1),
215
+ restart: () => start(),
216
+ getMeta: () => {
217
+ const entries = [...progressCache.entries()];
218
+ const percentages = entries.reduce((acc, [key, singleBar]) => {
219
+ acc[key] = singleBar.getProgress();
220
+ return acc;
221
+ }, {});
222
+ return {
223
+ name,
224
+ percentages
225
+ };
226
+ }
227
+ }, (info) => {
228
+ const url = `${info.address}:${info.port}`.replace("::", "http://localhost");
229
+ logger.consola?.start(`Starting ui on ${url}`);
230
+ (0, open.default)(url);
231
+ });
232
+ }
233
+ if (args$1.watch) {
234
+ if (Array.isArray(config)) throw new Error("Cannot use watcher with multiple Configs(array)");
235
+ if ((0, __kubb_core.isInputPath)(config)) return startWatcher([input || config.input.path], async (paths) => {
236
+ await start();
237
+ logger.emit("start", picocolors.default.yellow(picocolors.default.bold(`Watching for changes in ${paths.join(" and ")}`)));
238
+ });
239
+ }
240
+ await start();
241
+ if (globalThis.isDevtoolsEnabled) {
242
+ const canRestart = await logger.consola?.prompt("Restart(could be used to validate the profiler)?", {
243
+ type: "confirm",
244
+ initial: false
245
+ });
246
+ if (canRestart) await start();
247
+ else node_process.exit(1);
248
+ }
249
+ }
250
+ });
251
+ var generate_default = command;
252
+
253
+ //#endregion
254
+ exports.default = generate_default;
255
+ //# sourceMappingURL=generate-BpnRmhKq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-BpnRmhKq.cjs","names":["plugins: UserConfig['plugins']","plugin: any","result: CosmiconfigResult","args: Args","args","results: Array<Config>","configFile: string","jiti","moduleName: string","config?: string","path: string[]","cb: (path: string[]) => Promise<void>","path","pc","args","LogMapper","pc","path","process","PromiseManager"],"sources":["../src/utils/getPlugins.ts","../src/utils/getConfig.ts","../src/utils/getCosmiConfig.ts","../src/utils/watcher.ts","../src/commands/generate.ts"],"sourcesContent":["import type { UserConfig } from '@kubb/core'\n\nfunction isJSONPlugins(plugins: UserConfig['plugins']) {\n return !!(plugins as any)?.some((plugin: any) => {\n return Array.isArray(plugin) && typeof plugin?.at(0) === 'string'\n })\n}\n\nfunction isObjectPlugins(plugins: UserConfig['plugins']): plugins is any {\n return plugins instanceof Object && !Array.isArray(plugins)\n}\n\nexport function getPlugins(plugins: UserConfig['plugins']): Promise<UserConfig['plugins']> {\n if (isObjectPlugins(plugins)) {\n throw new Error('Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n if (isJSONPlugins(plugins)) {\n throw new Error('JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n return Promise.resolve(plugins)\n}\n","import { isPromise } from '@kubb/core/utils'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { Config, UserConfig } from '@kubb/core'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\n\n/**\n * Converting UserConfig to Config without a change in the object beside the JSON convert.\n */\nexport async function getConfig(result: CosmiconfigResult, args: Args): Promise<Array<Config> | Config> {\n const config = result?.config\n let kubbUserConfig = Promise.resolve(config) as Promise<UserConfig | Array<UserConfig>>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(args)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n\n if (Array.isArray(JSONConfig)) {\n const results: Array<Config> = []\n\n for (const item of JSONConfig) {\n const plugins = item.plugins ? await getPlugins(item.plugins) : undefined\n\n results.push({\n ...item,\n plugins,\n } as Config)\n }\n\n return results\n }\n\n JSONConfig = {\n ...JSONConfig,\n plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : undefined,\n }\n\n return JSONConfig as Config\n}\n","import { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\n\nimport type { UserConfig, defineConfig } from '@kubb/core'\n\nexport type CosmiconfigResult = {\n filepath: string\n isEmpty?: boolean\n config: ReturnType<typeof defineConfig> | UserConfig\n}\n\nconst tsLoader = async (configFile: string) => {\n const jiti = createJiti(import.meta.url, {\n jsx: {\n runtime: 'automatic',\n importSource: '@kubb/react',\n },\n sourceMaps: true,\n })\n\n const mod = await jiti.import(configFile, { default: true })\n\n return mod\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string): Promise<CosmiconfigResult> {\n const searchPlaces = [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n\n `.${moduleName}rc.ts`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.mjs`,\n `.${moduleName}rc.cjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.mjs`,\n `${moduleName}.config.cjs`,\n ]\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n searchPlaces: [\n ...searchPlaces.map((searchPlace) => {\n return `.config/${searchPlace}`\n }),\n ...searchPlaces.map((searchPlace) => {\n return `configs/${searchPlace}`\n }),\n ...searchPlaces,\n ],\n loaders: {\n '.ts': tsLoader,\n },\n })\n\n const result = config ? await explorer.load(config) : await explorer.search()\n\n if (result?.isEmpty || !result || !result.config) {\n throw new Error('Config not defined, create a kubb.config.js or pass through your config with the option --config')\n }\n\n return result as CosmiconfigResult\n}\n","import { createLogger } from '@kubb/core/logger'\nimport pc from 'picocolors'\n\nexport async function startWatcher(path: string[], cb: (path: string[]) => Promise<void>): Promise<void> {\n const { watch } = await import('chokidar')\n const logger = createLogger()\n\n const ignored = '**/{.git,node_modules}/**'\n\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n logger?.emit('info', pc.yellow(pc.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (_e) {\n logger?.emit('warning', pc.red('Watcher failed'))\n }\n })\n}\n","import path from 'node:path'\nimport * as process from 'node:process'\nimport { isInputPath, PromiseManager } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { defineCommand, showUsage } from 'citty'\nimport type { SingleBar } from 'cli-progress'\nimport open from 'open'\nimport pc from 'picocolors'\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\ndeclare global {\n var isDevtoolsEnabled: any\n}\n\nconst args = {\n config: {\n type: 'string',\n description: 'Path to the Kubb config',\n alias: 'c',\n },\n logLevel: {\n type: 'string',\n description: 'Info, silent or debug',\n alias: 'l',\n default: 'info',\n valueHint: 'silent|info|debug',\n },\n watch: {\n type: 'boolean',\n description: 'Watch mode based on the input file',\n alias: 'w',\n default: false,\n },\n debug: {\n type: 'boolean',\n description: 'Override logLevel to debug',\n alias: 'd',\n default: false,\n },\n ui: {\n type: 'boolean',\n description: 'Open ui',\n alias: 'u',\n default: false,\n },\n help: {\n type: 'boolean',\n description: 'Show help',\n alias: 'h',\n default: false,\n },\n} as const satisfies ArgsDef\n\nexport type Args = ParsedArgs<typeof args>\n\nconst command = defineCommand({\n meta: {\n name: 'generate',\n description: \"[input] Generate files based on a 'kubb.config.ts' file\",\n },\n args,\n async run(commandContext) {\n let name = ''\n const progressCache = new Map<string, SingleBar>()\n\n const { args } = commandContext\n\n const input = args._[0]\n\n if (args.help) {\n return showUsage(command)\n }\n\n if (args.debug) {\n args.logLevel = 'debug'\n }\n\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n const logger = createLogger({\n logLevel,\n })\n const { generate } = await import('../runners/generate.ts')\n\n logger.emit('start', 'Loading config')\n\n const result = await getCosmiConfig('kubb', args.config)\n logger.emit('success', `Config loaded(${pc.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\n\n const start = async () => {\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((c) => () => {\n name = c.name || ''\n progressCache.clear()\n\n return generate({\n input,\n config: c,\n args,\n progressCache,\n })\n })\n\n await promiseManager.run('seq', promises)\n return\n }\n\n progressCache.clear()\n\n await generate({\n input,\n config,\n progressCache,\n args,\n })\n\n return\n }\n\n if (args.ui) {\n const { startServer } = await import('@kubb/ui')\n\n await startServer(\n {\n stop: () => process.exit(1),\n restart: () => start(),\n getMeta: () => {\n const entries = [...progressCache.entries()]\n\n const percentages = entries.reduce(\n (acc, [key, singleBar]) => {\n acc[key] = singleBar.getProgress()\n\n return acc\n },\n {} as Record<string, number>,\n )\n\n return {\n name,\n percentages,\n }\n },\n },\n (info) => {\n const url = `${info.address}:${info.port}`.replace('::', 'http://localhost')\n logger.consola?.start(`Starting ui on ${url}`)\n\n open(url)\n },\n )\n }\n\n if (args.watch) {\n if (Array.isArray(config)) {\n throw new Error('Cannot use watcher with multiple Configs(array)')\n }\n\n if (isInputPath(config)) {\n return startWatcher([input || config.input.path], async (paths) => {\n await start()\n logger.emit('start', pc.yellow(pc.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n }\n\n await start()\n\n if (globalThis.isDevtoolsEnabled) {\n const canRestart = await logger.consola?.prompt('Restart(could be used to validate the profiler)?', {\n type: 'confirm',\n initial: false,\n })\n\n if (canRestart) {\n await start()\n } else {\n process.exit(1)\n }\n }\n },\n})\n\nexport default command\n"],"mappings":";;;;;;;;;;;;;AAEA,SAAS,cAAcA,SAAgC;AACrD,QAAO,CAAC,CAAE,SAAiB,KAAK,CAACC,WAAgB;AAC/C,SAAO,MAAM,QAAQ,OAAO,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAK;CAC1D,EAAC;AACH;AAED,SAAS,gBAAgBD,SAAgD;AACvE,QAAO,mBAAmB,UAAU,CAAC,MAAM,QAAQ,QAAQ;AAC5D;AAED,SAAgB,WAAWA,SAAgE;AACzF,KAAI,gBAAgB,QAAQ,CAC1B,OAAM,IAAI,MAAM;AAGlB,KAAI,cAAc,QAAQ,CACxB,OAAM,IAAI,MAAM;AAGlB,QAAO,QAAQ,QAAQ,QAAQ;AAChC;;;;;;;ACXD,eAAsB,UAAUE,QAA2BC,QAA6C;CACtG,MAAM,SAAS,QAAQ;CACvB,IAAI,iBAAiB,QAAQ,QAAQ,OAAO;AAG5C,KAAI,OAAO,WAAW,YAAY;EAChC,MAAM,kBAAkB,OAAOC,OAAK;AACpC,uCAAc,gBAAgB,EAC5B,iBAAiB;EAEnB,iBAAiB,QAAQ,QAAQ,gBAAgB;CAClD;CAED,IAAI,aAAa,MAAM;AAEvB,KAAI,MAAM,QAAQ,WAAW,EAAE;EAC7B,MAAMC,UAAyB,CAAE;AAEjC,OAAK,MAAM,QAAQ,YAAY;GAC7B,MAAM,UAAU,KAAK,UAAU,MAAM,WAAW,KAAK,QAAQ,GAAG;GAEhE,QAAQ,KAAK;IACX,GAAG;IACH;GACD,EAAW;EACb;AAED,SAAO;CACR;CAED,aAAa;EACX,GAAG;EACH,SAAS,WAAW,UAAU,MAAM,WAAW,WAAW,QAAQ,GAAG;CACtE;AAED,QAAO;AACR;;;;ACpCD,MAAM,WAAW,OAAOC,eAAuB;CAC7C,MAAMC,6EAAmC;EACvC,KAAK;GACH,SAAS;GACT,cAAc;EACf;EACD,YAAY;CACb,EAAC;CAEF,MAAM,MAAM,MAAMA,OAAK,OAAO,YAAY,EAAE,SAAS,KAAM,EAAC;AAE5D,QAAO;AACR;AAED,eAAsB,eAAeC,YAAoBC,QAA6C;CACpG,MAAM,eAAe;EACnB;EACA,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;EAClB,CAAC,CAAC,EAAE,WAAW,OAAO,CAAC;EACvB,CAAC,CAAC,EAAE,WAAW,OAAO,CAAC;EACvB,CAAC,CAAC,EAAE,WAAW,MAAM,CAAC;EAEtB,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC;EACrB,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC;EACrB,CAAC,CAAC,EAAE,WAAW,MAAM,CAAC;EACtB,CAAC,CAAC,EAAE,WAAW,MAAM,CAAC;EAEtB,GAAG,WAAW,UAAU,CAAC;EACzB,GAAG,WAAW,UAAU,CAAC;EACzB,GAAG,WAAW,WAAW,CAAC;EAC1B,GAAG,WAAW,WAAW,CAAC;CAC3B;CACD,MAAM,wCAAuB,YAAY;EACvC,OAAO;EACP,cAAc;GACZ,GAAG,aAAa,IAAI,CAAC,gBAAgB;AACnC,WAAO,CAAC,QAAQ,EAAE,aAAa;GAChC,EAAC;GACF,GAAG,aAAa,IAAI,CAAC,gBAAgB;AACnC,WAAO,CAAC,QAAQ,EAAE,aAAa;GAChC,EAAC;GACF,GAAG;EACJ;EACD,SAAS,EACP,OAAO,SACR;CACF,EAAC;CAEF,MAAM,SAAS,SAAS,MAAM,SAAS,KAAK,OAAO,GAAG,MAAM,SAAS,QAAQ;AAE7E,KAAI,QAAQ,WAAW,CAAC,UAAU,CAAC,OAAO,OACxC,OAAM,IAAI,MAAM;AAGlB,QAAO;AACR;;;;AC/DD,eAAsB,aAAaC,QAAgBC,IAAsD;CACvG,MAAM,EAAE,OAAO,GAAG,MAAM,OAAO;CAC/B,MAAM,+CAAuB;CAE7B,MAAM,UAAU;CAEhB,MAAM,UAAU,MAAMC,QAAM;EAC1B,wBAAwB;EACxB;CACD,EAAC;CACF,QAAQ,GAAG,OAAO,CAAC,MAAM,SAAS;EAChC,QAAQ,KAAK,QAAQC,mBAAG,OAAOA,mBAAG,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAI;GACF,GAAGD,OAAK;EACT,SAAQ,IAAI;GACX,QAAQ,KAAK,WAAWC,mBAAG,IAAI,iBAAiB,CAAC;EAClD;CACF,EAAC;AACH;;;;ACLD,MAAM,OAAO;CACX,QAAQ;EACN,MAAM;EACN,aAAa;EACb,OAAO;CACR;CACD,UAAU;EACR,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;EACT,WAAW;CACZ;CACD,OAAO;EACL,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;CACV;CACD,OAAO;EACL,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;CACV;CACD,IAAI;EACF,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;CACV;CACD,MAAM;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,SAAS;CACV;AACF;AAID,MAAM,mCAAwB;CAC5B,MAAM;EACJ,MAAM;EACN,aAAa;CACd;CACD;CACA,MAAM,IAAI,gBAAgB;EACxB,IAAI,OAAO;EACX,MAAM,gCAAgB,IAAI;EAE1B,MAAM,EAAE,cAAM,GAAG;EAEjB,MAAM,QAAQC,OAAK,EAAE;AAErB,MAAIA,OAAK,KACP,6BAAiB,QAAQ;AAG3B,MAAIA,OAAK,OACPA,OAAK,WAAW;EAGlB,MAAM,WAAWC,6BAAUD,OAAK,aAAuC;EACvE,MAAM,8CAAsB,EAC1B,SACD,EAAC;EACF,MAAM,EAAE,UAAU,GAAG,2CAAM;EAE3B,OAAO,KAAK,SAAS,iBAAiB;EAEtC,MAAM,SAAS,MAAM,eAAe,QAAQA,OAAK,OAAO;EACxD,OAAO,KAAK,WAAW,CAAC,cAAc,EAAEE,mBAAG,IAAIC,kBAAK,SAASC,aAAQ,KAAK,EAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAEjG,MAAM,SAAS,MAAM,UAAU,QAAQJ,OAAK;EAE5C,MAAM,QAAQ,YAAY;AACxB,OAAI,MAAM,QAAQ,OAAO,EAAE;IACzB,MAAM,iBAAiB,IAAIK;IAC3B,MAAM,WAAW,OAAO,IAAI,CAAC,MAAM,MAAM;KACvC,OAAO,EAAE,QAAQ;KACjB,cAAc,OAAO;AAErB,YAAO,SAAS;MACd;MACA,QAAQ;MACR;MACA;KACD,EAAC;IACH,EAAC;IAEF,MAAM,eAAe,IAAI,OAAO,SAAS;AACzC;GACD;GAED,cAAc,OAAO;GAErB,MAAM,SAAS;IACb;IACA;IACA;IACA;GACD,EAAC;EAGH;AAED,MAAIL,OAAK,IAAI;GACX,MAAM,EAAE,aAAa,GAAG,MAAM,OAAO;GAErC,MAAM,YACJ;IACE,MAAM,MAAMI,aAAQ,KAAK,EAAE;IAC3B,SAAS,MAAM,OAAO;IACtB,SAAS,MAAM;KACb,MAAM,UAAU,CAAC,GAAG,cAAc,SAAS,AAAC;KAE5C,MAAM,cAAc,QAAQ,OAC1B,CAAC,KAAK,CAAC,KAAK,UAAU,KAAK;MACzB,IAAI,OAAO,UAAU,aAAa;AAElC,aAAO;KACR,GACD,CAAE,EACH;AAED,YAAO;MACL;MACA;KACD;IACF;GACF,GACD,CAAC,SAAS;IACR,MAAM,MAAM,GAAG,KAAK,QAAQ,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,MAAM,mBAAmB;IAC5E,OAAO,SAAS,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC;sBAEzC,IAAI;GACV,EACF;EACF;AAED,MAAIJ,OAAK,OAAO;AACd,OAAI,MAAM,QAAQ,OAAO,CACvB,OAAM,IAAI,MAAM;AAGlB,oCAAgB,OAAO,CACrB,QAAO,aAAa,CAAC,SAAS,OAAO,MAAM,IAAK,GAAE,OAAO,UAAU;IACjE,MAAM,OAAO;IACb,OAAO,KAAK,SAASE,mBAAG,OAAOA,mBAAG,KAAK,CAAC,wBAAwB,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC3F,EAAC;EAEL;EAED,MAAM,OAAO;AAEb,MAAI,WAAW,mBAAmB;GAChC,MAAM,aAAa,MAAM,OAAO,SAAS,OAAO,oDAAoD;IAClG,MAAM;IACN,SAAS;GACV,EAAC;AAEF,OAAI,YACF,MAAM,OAAO;QAEbE,aAAQ,KAAK,EAAE;EAElB;CACF;AACF,EAAC;AAEF,uBAAe"}
@@ -0,0 +1,254 @@
1
+ import { defineCommand, showUsage } from "citty";
2
+ import path from "node:path";
3
+ import * as process$1 from "node:process";
4
+ import { PromiseManager, isInputPath } from "@kubb/core";
5
+ import { LogMapper, createLogger } from "@kubb/core/logger";
6
+ import open from "open";
7
+ import pc from "picocolors";
8
+ import { isPromise } from "@kubb/core/utils";
9
+ import { cosmiconfig } from "cosmiconfig";
10
+ import { createJiti } from "jiti";
11
+
12
+ //#region src/utils/getPlugins.ts
13
+ function isJSONPlugins(plugins) {
14
+ return !!plugins?.some((plugin) => {
15
+ return Array.isArray(plugin) && typeof plugin?.at(0) === "string";
16
+ });
17
+ }
18
+ function isObjectPlugins(plugins) {
19
+ return plugins instanceof Object && !Array.isArray(plugins);
20
+ }
21
+ function getPlugins(plugins) {
22
+ if (isObjectPlugins(plugins)) throw new Error("Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json");
23
+ if (isJSONPlugins(plugins)) throw new Error("JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json");
24
+ return Promise.resolve(plugins);
25
+ }
26
+
27
+ //#endregion
28
+ //#region src/utils/getConfig.ts
29
+ /**
30
+ * Converting UserConfig to Config without a change in the object beside the JSON convert.
31
+ */
32
+ async function getConfig(result, args$1) {
33
+ const config = result?.config;
34
+ let kubbUserConfig = Promise.resolve(config);
35
+ if (typeof config === "function") {
36
+ const possiblePromise = config(args$1);
37
+ if (isPromise(possiblePromise)) kubbUserConfig = possiblePromise;
38
+ kubbUserConfig = Promise.resolve(possiblePromise);
39
+ }
40
+ let JSONConfig = await kubbUserConfig;
41
+ if (Array.isArray(JSONConfig)) {
42
+ const results = [];
43
+ for (const item of JSONConfig) {
44
+ const plugins = item.plugins ? await getPlugins(item.plugins) : void 0;
45
+ results.push({
46
+ ...item,
47
+ plugins
48
+ });
49
+ }
50
+ return results;
51
+ }
52
+ JSONConfig = {
53
+ ...JSONConfig,
54
+ plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : void 0
55
+ };
56
+ return JSONConfig;
57
+ }
58
+
59
+ //#endregion
60
+ //#region src/utils/getCosmiConfig.ts
61
+ const tsLoader = async (configFile) => {
62
+ const jiti = createJiti(import.meta.url, {
63
+ jsx: {
64
+ runtime: "automatic",
65
+ importSource: "@kubb/react"
66
+ },
67
+ sourceMaps: true
68
+ });
69
+ const mod = await jiti.import(configFile, { default: true });
70
+ return mod;
71
+ };
72
+ async function getCosmiConfig(moduleName, config) {
73
+ const searchPlaces = [
74
+ "package.json",
75
+ `.${moduleName}rc`,
76
+ `.${moduleName}rc.json`,
77
+ `.${moduleName}rc.yaml`,
78
+ `.${moduleName}rc.yml`,
79
+ `.${moduleName}rc.ts`,
80
+ `.${moduleName}rc.js`,
81
+ `.${moduleName}rc.mjs`,
82
+ `.${moduleName}rc.cjs`,
83
+ `${moduleName}.config.ts`,
84
+ `${moduleName}.config.js`,
85
+ `${moduleName}.config.mjs`,
86
+ `${moduleName}.config.cjs`
87
+ ];
88
+ const explorer = cosmiconfig(moduleName, {
89
+ cache: false,
90
+ searchPlaces: [
91
+ ...searchPlaces.map((searchPlace) => {
92
+ return `.config/${searchPlace}`;
93
+ }),
94
+ ...searchPlaces.map((searchPlace) => {
95
+ return `configs/${searchPlace}`;
96
+ }),
97
+ ...searchPlaces
98
+ ],
99
+ loaders: { ".ts": tsLoader }
100
+ });
101
+ const result = config ? await explorer.load(config) : await explorer.search();
102
+ if (result?.isEmpty || !result || !result.config) throw new Error("Config not defined, create a kubb.config.js or pass through your config with the option --config");
103
+ return result;
104
+ }
105
+
106
+ //#endregion
107
+ //#region src/utils/watcher.ts
108
+ async function startWatcher(path$1, cb) {
109
+ const { watch } = await import("chokidar");
110
+ const logger = createLogger();
111
+ const ignored = "**/{.git,node_modules}/**";
112
+ const watcher = watch(path$1, {
113
+ ignorePermissionErrors: true,
114
+ ignored
115
+ });
116
+ watcher.on("all", (type, file) => {
117
+ logger?.emit("info", pc.yellow(pc.bold(`Change detected: ${type} ${file}`)));
118
+ try {
119
+ cb(path$1);
120
+ } catch (_e) {
121
+ logger?.emit("warning", pc.red("Watcher failed"));
122
+ }
123
+ });
124
+ }
125
+
126
+ //#endregion
127
+ //#region src/commands/generate.ts
128
+ const args = {
129
+ config: {
130
+ type: "string",
131
+ description: "Path to the Kubb config",
132
+ alias: "c"
133
+ },
134
+ logLevel: {
135
+ type: "string",
136
+ description: "Info, silent or debug",
137
+ alias: "l",
138
+ default: "info",
139
+ valueHint: "silent|info|debug"
140
+ },
141
+ watch: {
142
+ type: "boolean",
143
+ description: "Watch mode based on the input file",
144
+ alias: "w",
145
+ default: false
146
+ },
147
+ debug: {
148
+ type: "boolean",
149
+ description: "Override logLevel to debug",
150
+ alias: "d",
151
+ default: false
152
+ },
153
+ ui: {
154
+ type: "boolean",
155
+ description: "Open ui",
156
+ alias: "u",
157
+ default: false
158
+ },
159
+ help: {
160
+ type: "boolean",
161
+ description: "Show help",
162
+ alias: "h",
163
+ default: false
164
+ }
165
+ };
166
+ const command = defineCommand({
167
+ meta: {
168
+ name: "generate",
169
+ description: "[input] Generate files based on a 'kubb.config.ts' file"
170
+ },
171
+ args,
172
+ async run(commandContext) {
173
+ let name = "";
174
+ const progressCache = /* @__PURE__ */ new Map();
175
+ const { args: args$1 } = commandContext;
176
+ const input = args$1._[0];
177
+ if (args$1.help) return showUsage(command);
178
+ if (args$1.debug) args$1.logLevel = "debug";
179
+ const logLevel = LogMapper[args$1.logLevel] || 3;
180
+ const logger = createLogger({ logLevel });
181
+ const { generate } = await import("./generate-CUJ2_P-U.js");
182
+ logger.emit("start", "Loading config");
183
+ const result = await getCosmiConfig("kubb", args$1.config);
184
+ logger.emit("success", `Config loaded(${pc.dim(path.relative(process$1.cwd(), result.filepath))})`);
185
+ const config = await getConfig(result, args$1);
186
+ const start = async () => {
187
+ if (Array.isArray(config)) {
188
+ const promiseManager = new PromiseManager();
189
+ const promises = config.map((c) => () => {
190
+ name = c.name || "";
191
+ progressCache.clear();
192
+ return generate({
193
+ input,
194
+ config: c,
195
+ args: args$1,
196
+ progressCache
197
+ });
198
+ });
199
+ await promiseManager.run("seq", promises);
200
+ return;
201
+ }
202
+ progressCache.clear();
203
+ await generate({
204
+ input,
205
+ config,
206
+ progressCache,
207
+ args: args$1
208
+ });
209
+ };
210
+ if (args$1.ui) {
211
+ const { startServer } = await import("@kubb/ui");
212
+ await startServer({
213
+ stop: () => process$1.exit(1),
214
+ restart: () => start(),
215
+ getMeta: () => {
216
+ const entries = [...progressCache.entries()];
217
+ const percentages = entries.reduce((acc, [key, singleBar]) => {
218
+ acc[key] = singleBar.getProgress();
219
+ return acc;
220
+ }, {});
221
+ return {
222
+ name,
223
+ percentages
224
+ };
225
+ }
226
+ }, (info) => {
227
+ const url = `${info.address}:${info.port}`.replace("::", "http://localhost");
228
+ logger.consola?.start(`Starting ui on ${url}`);
229
+ open(url);
230
+ });
231
+ }
232
+ if (args$1.watch) {
233
+ if (Array.isArray(config)) throw new Error("Cannot use watcher with multiple Configs(array)");
234
+ if (isInputPath(config)) return startWatcher([input || config.input.path], async (paths) => {
235
+ await start();
236
+ logger.emit("start", pc.yellow(pc.bold(`Watching for changes in ${paths.join(" and ")}`)));
237
+ });
238
+ }
239
+ await start();
240
+ if (globalThis.isDevtoolsEnabled) {
241
+ const canRestart = await logger.consola?.prompt("Restart(could be used to validate the profiler)?", {
242
+ type: "confirm",
243
+ initial: false
244
+ });
245
+ if (canRestart) await start();
246
+ else process$1.exit(1);
247
+ }
248
+ }
249
+ });
250
+ var generate_default = command;
251
+
252
+ //#endregion
253
+ export { generate_default as default };
254
+ //# sourceMappingURL=generate-COcFbC_i.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-COcFbC_i.js","names":["plugins: UserConfig['plugins']","plugin: any","result: CosmiconfigResult","args: Args","args","results: Array<Config>","configFile: string","moduleName: string","config?: string","path: string[]","cb: (path: string[]) => Promise<void>","path","args","process"],"sources":["../src/utils/getPlugins.ts","../src/utils/getConfig.ts","../src/utils/getCosmiConfig.ts","../src/utils/watcher.ts","../src/commands/generate.ts"],"sourcesContent":["import type { UserConfig } from '@kubb/core'\n\nfunction isJSONPlugins(plugins: UserConfig['plugins']) {\n return !!(plugins as any)?.some((plugin: any) => {\n return Array.isArray(plugin) && typeof plugin?.at(0) === 'string'\n })\n}\n\nfunction isObjectPlugins(plugins: UserConfig['plugins']): plugins is any {\n return plugins instanceof Object && !Array.isArray(plugins)\n}\n\nexport function getPlugins(plugins: UserConfig['plugins']): Promise<UserConfig['plugins']> {\n if (isObjectPlugins(plugins)) {\n throw new Error('Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n if (isJSONPlugins(plugins)) {\n throw new Error('JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n return Promise.resolve(plugins)\n}\n","import { isPromise } from '@kubb/core/utils'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { Config, UserConfig } from '@kubb/core'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\n\n/**\n * Converting UserConfig to Config without a change in the object beside the JSON convert.\n */\nexport async function getConfig(result: CosmiconfigResult, args: Args): Promise<Array<Config> | Config> {\n const config = result?.config\n let kubbUserConfig = Promise.resolve(config) as Promise<UserConfig | Array<UserConfig>>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(args)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n\n if (Array.isArray(JSONConfig)) {\n const results: Array<Config> = []\n\n for (const item of JSONConfig) {\n const plugins = item.plugins ? await getPlugins(item.plugins) : undefined\n\n results.push({\n ...item,\n plugins,\n } as Config)\n }\n\n return results\n }\n\n JSONConfig = {\n ...JSONConfig,\n plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : undefined,\n }\n\n return JSONConfig as Config\n}\n","import { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\n\nimport type { UserConfig, defineConfig } from '@kubb/core'\n\nexport type CosmiconfigResult = {\n filepath: string\n isEmpty?: boolean\n config: ReturnType<typeof defineConfig> | UserConfig\n}\n\nconst tsLoader = async (configFile: string) => {\n const jiti = createJiti(import.meta.url, {\n jsx: {\n runtime: 'automatic',\n importSource: '@kubb/react',\n },\n sourceMaps: true,\n })\n\n const mod = await jiti.import(configFile, { default: true })\n\n return mod\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string): Promise<CosmiconfigResult> {\n const searchPlaces = [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n\n `.${moduleName}rc.ts`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.mjs`,\n `.${moduleName}rc.cjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.mjs`,\n `${moduleName}.config.cjs`,\n ]\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n searchPlaces: [\n ...searchPlaces.map((searchPlace) => {\n return `.config/${searchPlace}`\n }),\n ...searchPlaces.map((searchPlace) => {\n return `configs/${searchPlace}`\n }),\n ...searchPlaces,\n ],\n loaders: {\n '.ts': tsLoader,\n },\n })\n\n const result = config ? await explorer.load(config) : await explorer.search()\n\n if (result?.isEmpty || !result || !result.config) {\n throw new Error('Config not defined, create a kubb.config.js or pass through your config with the option --config')\n }\n\n return result as CosmiconfigResult\n}\n","import { createLogger } from '@kubb/core/logger'\nimport pc from 'picocolors'\n\nexport async function startWatcher(path: string[], cb: (path: string[]) => Promise<void>): Promise<void> {\n const { watch } = await import('chokidar')\n const logger = createLogger()\n\n const ignored = '**/{.git,node_modules}/**'\n\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n logger?.emit('info', pc.yellow(pc.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (_e) {\n logger?.emit('warning', pc.red('Watcher failed'))\n }\n })\n}\n","import path from 'node:path'\nimport * as process from 'node:process'\nimport { isInputPath, PromiseManager } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { defineCommand, showUsage } from 'citty'\nimport type { SingleBar } from 'cli-progress'\nimport open from 'open'\nimport pc from 'picocolors'\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\ndeclare global {\n var isDevtoolsEnabled: any\n}\n\nconst args = {\n config: {\n type: 'string',\n description: 'Path to the Kubb config',\n alias: 'c',\n },\n logLevel: {\n type: 'string',\n description: 'Info, silent or debug',\n alias: 'l',\n default: 'info',\n valueHint: 'silent|info|debug',\n },\n watch: {\n type: 'boolean',\n description: 'Watch mode based on the input file',\n alias: 'w',\n default: false,\n },\n debug: {\n type: 'boolean',\n description: 'Override logLevel to debug',\n alias: 'd',\n default: false,\n },\n ui: {\n type: 'boolean',\n description: 'Open ui',\n alias: 'u',\n default: false,\n },\n help: {\n type: 'boolean',\n description: 'Show help',\n alias: 'h',\n default: false,\n },\n} as const satisfies ArgsDef\n\nexport type Args = ParsedArgs<typeof args>\n\nconst command = defineCommand({\n meta: {\n name: 'generate',\n description: \"[input] Generate files based on a 'kubb.config.ts' file\",\n },\n args,\n async run(commandContext) {\n let name = ''\n const progressCache = new Map<string, SingleBar>()\n\n const { args } = commandContext\n\n const input = args._[0]\n\n if (args.help) {\n return showUsage(command)\n }\n\n if (args.debug) {\n args.logLevel = 'debug'\n }\n\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n const logger = createLogger({\n logLevel,\n })\n const { generate } = await import('../runners/generate.ts')\n\n logger.emit('start', 'Loading config')\n\n const result = await getCosmiConfig('kubb', args.config)\n logger.emit('success', `Config loaded(${pc.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\n\n const start = async () => {\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((c) => () => {\n name = c.name || ''\n progressCache.clear()\n\n return generate({\n input,\n config: c,\n args,\n progressCache,\n })\n })\n\n await promiseManager.run('seq', promises)\n return\n }\n\n progressCache.clear()\n\n await generate({\n input,\n config,\n progressCache,\n args,\n })\n\n return\n }\n\n if (args.ui) {\n const { startServer } = await import('@kubb/ui')\n\n await startServer(\n {\n stop: () => process.exit(1),\n restart: () => start(),\n getMeta: () => {\n const entries = [...progressCache.entries()]\n\n const percentages = entries.reduce(\n (acc, [key, singleBar]) => {\n acc[key] = singleBar.getProgress()\n\n return acc\n },\n {} as Record<string, number>,\n )\n\n return {\n name,\n percentages,\n }\n },\n },\n (info) => {\n const url = `${info.address}:${info.port}`.replace('::', 'http://localhost')\n logger.consola?.start(`Starting ui on ${url}`)\n\n open(url)\n },\n )\n }\n\n if (args.watch) {\n if (Array.isArray(config)) {\n throw new Error('Cannot use watcher with multiple Configs(array)')\n }\n\n if (isInputPath(config)) {\n return startWatcher([input || config.input.path], async (paths) => {\n await start()\n logger.emit('start', pc.yellow(pc.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n }\n\n await start()\n\n if (globalThis.isDevtoolsEnabled) {\n const canRestart = await logger.consola?.prompt('Restart(could be used to validate the profiler)?', {\n type: 'confirm',\n initial: false,\n })\n\n if (canRestart) {\n await start()\n } else {\n process.exit(1)\n }\n }\n },\n})\n\nexport default command\n"],"mappings":"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"}