@kubb/cli 4.5.0 → 4.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{generate-CUHrQxq3.cjs → generate-BU3rpkVS.cjs} +29 -10
- package/dist/generate-BU3rpkVS.cjs.map +1 -0
- package/dist/{generate-C-LME3FT.cjs → generate-D4ArArmH.cjs} +2 -2
- package/dist/generate-D4ArArmH.cjs.map +1 -0
- package/dist/{generate-ChOKW4hA.js → generate-DRLAdPuL.js} +29 -10
- package/dist/generate-DRLAdPuL.js.map +1 -0
- package/dist/{generate-to5Shevn.js → generate-WbACXpjp.js} +2 -2
- package/dist/generate-WbACXpjp.js.map +1 -0
- package/dist/index.cjs +3 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +0 -1
- package/src/runners/generate.ts +34 -3
- package/src/utils/getConfig.ts +2 -2
- package/src/utils/getSummary.ts +7 -13
- package/dist/generate-C-LME3FT.cjs.map +0 -1
- package/dist/generate-CUHrQxq3.cjs.map +0 -1
- package/dist/generate-ChOKW4hA.js.map +0 -1
- package/dist/generate-to5Shevn.js.map +0 -1
|
@@ -74,16 +74,14 @@ function parseHrtimeToSeconds(hrtime) {
|
|
|
74
74
|
|
|
75
75
|
//#endregion
|
|
76
76
|
//#region src/utils/getSummary.ts
|
|
77
|
-
function getSummary({
|
|
77
|
+
function getSummary({ failedPlugins, filesCreated, status, hrStart, config }) {
|
|
78
78
|
const logs = /* @__PURE__ */ new Set();
|
|
79
79
|
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart));
|
|
80
|
-
const buildStartPlugins = pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
81
|
-
const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === "buildEnd" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
82
|
-
const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
83
80
|
const pluginsCount = config.plugins?.length || 0;
|
|
81
|
+
const successCount = pluginsCount - failedPlugins.size;
|
|
84
82
|
const meta = {
|
|
85
|
-
plugins: status === "success" ? `${picocolors.default.green(`${
|
|
86
|
-
pluginsFailed: status === "failed" ? failedPlugins?.map((
|
|
83
|
+
plugins: status === "success" ? `${picocolors.default.green(`${successCount} successful`)}, ${pluginsCount} total` : `${picocolors.default.red(`${failedPlugins.size ?? 1} failed`)}, ${pluginsCount} total`,
|
|
84
|
+
pluginsFailed: status === "failed" ? [...failedPlugins]?.map(({ plugin }) => (0, __kubb_core_logger.randomCliColour)(plugin.name))?.join(", ") : void 0,
|
|
87
85
|
filesCreated,
|
|
88
86
|
time: `${picocolors.default.yellow(`${elapsedSeconds}s`)}`,
|
|
89
87
|
output: node_path.default.isAbsolute(config.root) ? node_path.default.resolve(config.root, config.output.path) : config.root
|
|
@@ -159,7 +157,7 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
159
157
|
logger
|
|
160
158
|
});
|
|
161
159
|
logger.emit("start", `Building ${logger.logLevel !== __kubb_core_logger.LogMapper.silent ? picocolors.default.dim(inputPath) : ""}`);
|
|
162
|
-
const { files, error } = await (0, __kubb_core.safeBuild)({
|
|
160
|
+
const { files, failedPlugins, error } = await (0, __kubb_core.safeBuild)({
|
|
163
161
|
config: definedConfig,
|
|
164
162
|
logger
|
|
165
163
|
}, {
|
|
@@ -172,12 +170,33 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
172
170
|
logger.consola?.success(`Written logs: \n${logFiles.join("\n")}`);
|
|
173
171
|
}
|
|
174
172
|
const summary = getSummary({
|
|
173
|
+
failedPlugins,
|
|
175
174
|
filesCreated: files.length,
|
|
176
|
-
pluginManager,
|
|
177
175
|
config: definedConfig,
|
|
178
|
-
status: error ? "failed" : "success",
|
|
176
|
+
status: failedPlugins.size > 0 || error ? "failed" : "success",
|
|
179
177
|
hrStart
|
|
180
178
|
});
|
|
179
|
+
if (failedPlugins.size && logger.consola) {
|
|
180
|
+
logger.consola?.resumeLogs();
|
|
181
|
+
logger.consola.error(`Build failed ${logger.logLevel !== __kubb_core_logger.LogMapper.silent ? picocolors.default.dim(inputPath) : ""}`);
|
|
182
|
+
logger.consola.box({
|
|
183
|
+
title: `${config.name || ""}`,
|
|
184
|
+
message: summary.join(""),
|
|
185
|
+
style: {
|
|
186
|
+
padding: 2,
|
|
187
|
+
borderColor: "red",
|
|
188
|
+
borderStyle: "rounded"
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
const errors = getErrorCauses([...failedPlugins].filter((it) => it.error).map((it) => it.error));
|
|
192
|
+
if (logger.consola && errors.length && logger.logLevel === __kubb_core_logger.LogMapper.debug) errors.forEach((err) => {
|
|
193
|
+
logger.consola?.error(err);
|
|
194
|
+
});
|
|
195
|
+
[...failedPlugins].filter((it) => it.error).forEach((it) => {
|
|
196
|
+
logger.consola?.error(it.error);
|
|
197
|
+
});
|
|
198
|
+
node_process.default.exit(1);
|
|
199
|
+
}
|
|
181
200
|
if (error && logger.consola) {
|
|
182
201
|
logger.consola?.resumeLogs();
|
|
183
202
|
logger.consola.error(`Build failed ${logger.logLevel !== __kubb_core_logger.LogMapper.silent ? picocolors.default.dim(inputPath) : ""}`);
|
|
@@ -277,4 +296,4 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
277
296
|
|
|
278
297
|
//#endregion
|
|
279
298
|
exports.generate = generate;
|
|
280
|
-
//# sourceMappingURL=generate-
|
|
299
|
+
//# sourceMappingURL=generate-BU3rpkVS.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-BU3rpkVS.cjs","names":["Writable","pc","LogMapper","pc","pc","path","process","LogMapper","SingleBar","Presets","definedConfig: Config","pc","path"],"sources":["../src/utils/Writables.ts","../src/utils/executeHooks.ts","../src/utils/getErrorCauses.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/getSummary.ts","../src/runners/generate.ts"],"sourcesContent":["import * as process from 'node:process'\nimport type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\nimport pc from 'picocolors'\n\nexport class ConsolaWritable extends Writable {\n consola: ConsolaInstance | undefined\n command: string\n constructor(consola: ConsolaInstance | undefined, command: string, opts?: WritableOptions) {\n super(opts)\n\n this.command = command\n this.consola = consola\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n process.stdout.write(`${pc.dim(chunk?.toString())}`)\n\n callback()\n }\n}\n","import type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { LogMapper } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport { ConsolaWritable } from './Writables.ts'\n\ntype ExecutingHooksProps = {\n hooks: NonNullable<Config['hooks']>\n logger: Logger\n}\n\nexport async function executeHooks({ hooks, logger }: ExecutingHooksProps): Promise<void> {\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean)\n\n for (const command of commands) {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n continue\n }\n\n logger?.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n\n await execa(cmd, _args, {\n detached: true,\n stdout: logger?.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],\n stripFinalNewline: true,\n })\n\n logger?.emit('success', `Executed hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n }\n\n logger?.emit('success', 'Executed hooks')\n}\n","export function getErrorCauses(errors: Error[]): Error[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n return prev\n }\n prev = [...prev, error]\n\n return prev\n }, [] as Error[])\n .filter(Boolean)\n}\n","export function parseHrtimeToSeconds(hrtime: [number, number]): string {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import path from 'node:path'\nimport type { Config, Plugin } from '@kubb/core'\nimport { randomCliColour } from '@kubb/core/logger'\nimport pc from 'picocolors'\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\ntype SummaryProps = {\n failedPlugins: Set<{ plugin: Plugin; error: Error }>\n status: 'success' | 'failed'\n hrStart: [number, number]\n filesCreated: number\n config: Config\n}\n\nexport function getSummary({ failedPlugins, filesCreated, status, hrStart, config }: SummaryProps): string[] {\n const logs = new Set<string>()\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))\n\n const pluginsCount = config.plugins?.length || 0\n const successCount = pluginsCount - failedPlugins.size\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${successCount} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins.size ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? [...failedPlugins]?.map(({ plugin }) => randomCliColour(plugin.name))?.join(', ') : undefined,\n filesCreated: filesCreated,\n time: `${pc.yellow(`${elapsedSeconds}s`)}`,\n output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,\n } as const\n\n logs.add(\n [\n [`${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [`${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files in ${meta.time}`, true],\n [`${pc.bold('Output:')} ${meta.output}`, true],\n ]\n .map((item) => {\n if (item.at(1)) {\n return item.at(0)\n }\n return undefined\n })\n .filter(Boolean)\n .join('\\n'),\n )\n\n return [...logs]\n}\n","import path from 'node:path'\nimport process from 'node:process'\nimport { type Config, safeBuild, setup } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport { Presets, SingleBar } from 'cli-progress'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport type { Args } from '../commands/generate.ts'\nimport { executeHooks } from '../utils/executeHooks.ts'\nimport { getErrorCauses } from '../utils/getErrorCauses.ts'\nimport { getSummary } from '../utils/getSummary.ts'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n progressCache: Map<string, SingleBar>\n}\n\nexport async function generate({ input, config, progressCache, args }: GenerateProps): Promise<void> {\n const hrStart = process.hrtime()\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n\n const logger = createLogger({\n logLevel,\n name: config.name,\n })\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n if (logger.logLevel !== LogMapper.debug) {\n logger.on('progress_start', ({ id, size, message = '' }) => {\n logger.consola?.pauseLogs()\n const payload = { id, message }\n const progressBar = new SingleBar(\n {\n format: '{percentage}% {bar} {value}/{total} | {message}',\n barsize: 30,\n clearOnComplete: true,\n emptyOnZero: true,\n },\n Presets.shades_grey,\n )\n\n if (!progressCache.has(id)) {\n progressCache.set(id, progressBar)\n progressBar.start(size, 1, payload)\n }\n })\n\n logger.on('progress_stop', ({ id }) => {\n progressCache.get(id)?.stop()\n logger.consola?.resumeLogs()\n })\n\n logger.on('progressed', ({ id, message = '' }) => {\n const payload = { id, message }\n\n progressCache.get(id)?.increment(1, payload)\n })\n }\n\n const definedConfig: Config = {\n root,\n ...userConfig,\n input: inputPath\n ? {\n ...userConfig.input,\n path: inputPath,\n }\n : userConfig.input,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n format: 'prettier',\n ...userConfig.output,\n },\n }\n\n const { fabric, pluginManager } = await setup({\n config: definedConfig,\n logger,\n })\n\n logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n const { files, failedPlugins, error } = await safeBuild(\n {\n config: definedConfig,\n logger,\n },\n { pluginManager, fabric },\n )\n\n if (logger.logLevel === LogMapper.debug) {\n logger.consola?.start('Writing logs')\n\n const logFiles = await logger.writeLogs()\n\n logger.consola?.success(`Written logs: \\n${logFiles.join('\\n')}`)\n }\n\n const summary = getSummary({\n failedPlugins,\n filesCreated: files.length,\n config: definedConfig,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n })\n\n if (failedPlugins.size && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([...failedPlugins].filter((it) => it.error).map((it) => it.error))\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n ;[...failedPlugins]\n .filter((it) => it.error)\n .forEach((it) => {\n logger.consola?.error(it.error)\n })\n\n process.exit(1)\n }\n\n // TODO check if we can remove error\n if (error && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([error])\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n logger.consola?.error(error)\n\n process.exit(1)\n }\n\n // formatting\n if (config.output.format === 'prettier') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('prettier', ['--ignore-unknown', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Prettier not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n if (config.output.format === 'biome') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('biome', ['format', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n // linting\n if (config.output.lint === 'eslint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('eslint', [path.resolve(definedConfig.root, definedConfig.output.path), '--fix'])\n } catch (e) {\n logger.consola?.warn('Eslint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'biome') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('biome', ['lint', '--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'oxlint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('oxlint', ['--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Oxlint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.hooks) {\n await executeHooks({ hooks: config.hooks, logger })\n }\n\n logger.consola?.log(`⚡Build completed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola?.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'green',\n borderStyle: 'rounded',\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -174,7 +174,7 @@ const command = (0, citty.defineCommand)({
|
|
|
174
174
|
if (args.help) return (0, citty.showUsage)(command);
|
|
175
175
|
if (args.debug) args.logLevel = "debug";
|
|
176
176
|
const logger = (0, __kubb_core_logger.createLogger)({ logLevel: __kubb_core_logger.LogMapper[args.logLevel] || 3 });
|
|
177
|
-
const { generate } = await Promise.resolve().then(() => require("./generate-
|
|
177
|
+
const { generate } = await Promise.resolve().then(() => require("./generate-BU3rpkVS.cjs"));
|
|
178
178
|
logger.emit("start", "Loading config");
|
|
179
179
|
const result = await getCosmiConfig("kubb", args.config);
|
|
180
180
|
logger.emit("success", `Config loaded(${picocolors.default.dim(node_path.default.relative(node_process.cwd(), result.filepath))})`);
|
|
@@ -221,4 +221,4 @@ var generate_default = command;
|
|
|
221
221
|
|
|
222
222
|
//#endregion
|
|
223
223
|
exports.default = generate_default;
|
|
224
|
-
//# sourceMappingURL=generate-
|
|
224
|
+
//# sourceMappingURL=generate-D4ArArmH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-D4ArArmH.cjs","names":["results: Array<Config>","path","pc","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 type { CLIOptions, Config, UserConfig } from '@kubb/core'\nimport { isPromise } from '@kubb/core/utils'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\nimport { getPlugins } from './getPlugins.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 as CLIOptions)\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 type { defineConfig, UserConfig } from '@kubb/core'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\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-fabric',\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 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 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 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 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.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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"}
|
|
@@ -65,16 +65,14 @@ function parseHrtimeToSeconds(hrtime) {
|
|
|
65
65
|
|
|
66
66
|
//#endregion
|
|
67
67
|
//#region src/utils/getSummary.ts
|
|
68
|
-
function getSummary({
|
|
68
|
+
function getSummary({ failedPlugins, filesCreated, status, hrStart, config }) {
|
|
69
69
|
const logs = /* @__PURE__ */ new Set();
|
|
70
70
|
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart));
|
|
71
|
-
const buildStartPlugins = pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
72
|
-
const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === "buildEnd" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
73
|
-
const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
74
71
|
const pluginsCount = config.plugins?.length || 0;
|
|
72
|
+
const successCount = pluginsCount - failedPlugins.size;
|
|
75
73
|
const meta = {
|
|
76
|
-
plugins: status === "success" ? `${pc.green(`${
|
|
77
|
-
pluginsFailed: status === "failed" ? failedPlugins?.map((
|
|
74
|
+
plugins: status === "success" ? `${pc.green(`${successCount} successful`)}, ${pluginsCount} total` : `${pc.red(`${failedPlugins.size ?? 1} failed`)}, ${pluginsCount} total`,
|
|
75
|
+
pluginsFailed: status === "failed" ? [...failedPlugins]?.map(({ plugin }) => randomCliColour(plugin.name))?.join(", ") : void 0,
|
|
78
76
|
filesCreated,
|
|
79
77
|
time: `${pc.yellow(`${elapsedSeconds}s`)}`,
|
|
80
78
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root
|
|
@@ -150,7 +148,7 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
150
148
|
logger
|
|
151
149
|
});
|
|
152
150
|
logger.emit("start", `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath) : ""}`);
|
|
153
|
-
const { files, error } = await safeBuild({
|
|
151
|
+
const { files, failedPlugins, error } = await safeBuild({
|
|
154
152
|
config: definedConfig,
|
|
155
153
|
logger
|
|
156
154
|
}, {
|
|
@@ -163,12 +161,33 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
163
161
|
logger.consola?.success(`Written logs: \n${logFiles.join("\n")}`);
|
|
164
162
|
}
|
|
165
163
|
const summary = getSummary({
|
|
164
|
+
failedPlugins,
|
|
166
165
|
filesCreated: files.length,
|
|
167
|
-
pluginManager,
|
|
168
166
|
config: definedConfig,
|
|
169
|
-
status: error ? "failed" : "success",
|
|
167
|
+
status: failedPlugins.size > 0 || error ? "failed" : "success",
|
|
170
168
|
hrStart
|
|
171
169
|
});
|
|
170
|
+
if (failedPlugins.size && logger.consola) {
|
|
171
|
+
logger.consola?.resumeLogs();
|
|
172
|
+
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath) : ""}`);
|
|
173
|
+
logger.consola.box({
|
|
174
|
+
title: `${config.name || ""}`,
|
|
175
|
+
message: summary.join(""),
|
|
176
|
+
style: {
|
|
177
|
+
padding: 2,
|
|
178
|
+
borderColor: "red",
|
|
179
|
+
borderStyle: "rounded"
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
const errors = getErrorCauses([...failedPlugins].filter((it) => it.error).map((it) => it.error));
|
|
183
|
+
if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) errors.forEach((err) => {
|
|
184
|
+
logger.consola?.error(err);
|
|
185
|
+
});
|
|
186
|
+
[...failedPlugins].filter((it) => it.error).forEach((it) => {
|
|
187
|
+
logger.consola?.error(it.error);
|
|
188
|
+
});
|
|
189
|
+
process$1.exit(1);
|
|
190
|
+
}
|
|
172
191
|
if (error && logger.consola) {
|
|
173
192
|
logger.consola?.resumeLogs();
|
|
174
193
|
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath) : ""}`);
|
|
@@ -268,4 +287,4 @@ async function generate({ input, config, progressCache, args }) {
|
|
|
268
287
|
|
|
269
288
|
//#endregion
|
|
270
289
|
export { generate };
|
|
271
|
-
//# sourceMappingURL=generate-
|
|
290
|
+
//# sourceMappingURL=generate-DRLAdPuL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-DRLAdPuL.js","names":["process","definedConfig: Config"],"sources":["../src/utils/Writables.ts","../src/utils/executeHooks.ts","../src/utils/getErrorCauses.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/getSummary.ts","../src/runners/generate.ts"],"sourcesContent":["import * as process from 'node:process'\nimport type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\nimport pc from 'picocolors'\n\nexport class ConsolaWritable extends Writable {\n consola: ConsolaInstance | undefined\n command: string\n constructor(consola: ConsolaInstance | undefined, command: string, opts?: WritableOptions) {\n super(opts)\n\n this.command = command\n this.consola = consola\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n process.stdout.write(`${pc.dim(chunk?.toString())}`)\n\n callback()\n }\n}\n","import type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { LogMapper } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport { ConsolaWritable } from './Writables.ts'\n\ntype ExecutingHooksProps = {\n hooks: NonNullable<Config['hooks']>\n logger: Logger\n}\n\nexport async function executeHooks({ hooks, logger }: ExecutingHooksProps): Promise<void> {\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean)\n\n for (const command of commands) {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n continue\n }\n\n logger?.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n\n await execa(cmd, _args, {\n detached: true,\n stdout: logger?.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],\n stripFinalNewline: true,\n })\n\n logger?.emit('success', `Executed hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n }\n\n logger?.emit('success', 'Executed hooks')\n}\n","export function getErrorCauses(errors: Error[]): Error[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n return prev\n }\n prev = [...prev, error]\n\n return prev\n }, [] as Error[])\n .filter(Boolean)\n}\n","export function parseHrtimeToSeconds(hrtime: [number, number]): string {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import path from 'node:path'\nimport type { Config, Plugin } from '@kubb/core'\nimport { randomCliColour } from '@kubb/core/logger'\nimport pc from 'picocolors'\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\ntype SummaryProps = {\n failedPlugins: Set<{ plugin: Plugin; error: Error }>\n status: 'success' | 'failed'\n hrStart: [number, number]\n filesCreated: number\n config: Config\n}\n\nexport function getSummary({ failedPlugins, filesCreated, status, hrStart, config }: SummaryProps): string[] {\n const logs = new Set<string>()\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))\n\n const pluginsCount = config.plugins?.length || 0\n const successCount = pluginsCount - failedPlugins.size\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${successCount} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins.size ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? [...failedPlugins]?.map(({ plugin }) => randomCliColour(plugin.name))?.join(', ') : undefined,\n filesCreated: filesCreated,\n time: `${pc.yellow(`${elapsedSeconds}s`)}`,\n output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,\n } as const\n\n logs.add(\n [\n [`${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [`${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files in ${meta.time}`, true],\n [`${pc.bold('Output:')} ${meta.output}`, true],\n ]\n .map((item) => {\n if (item.at(1)) {\n return item.at(0)\n }\n return undefined\n })\n .filter(Boolean)\n .join('\\n'),\n )\n\n return [...logs]\n}\n","import path from 'node:path'\nimport process from 'node:process'\nimport { type Config, safeBuild, setup } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport { Presets, SingleBar } from 'cli-progress'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport type { Args } from '../commands/generate.ts'\nimport { executeHooks } from '../utils/executeHooks.ts'\nimport { getErrorCauses } from '../utils/getErrorCauses.ts'\nimport { getSummary } from '../utils/getSummary.ts'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n progressCache: Map<string, SingleBar>\n}\n\nexport async function generate({ input, config, progressCache, args }: GenerateProps): Promise<void> {\n const hrStart = process.hrtime()\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n\n const logger = createLogger({\n logLevel,\n name: config.name,\n })\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n if (logger.logLevel !== LogMapper.debug) {\n logger.on('progress_start', ({ id, size, message = '' }) => {\n logger.consola?.pauseLogs()\n const payload = { id, message }\n const progressBar = new SingleBar(\n {\n format: '{percentage}% {bar} {value}/{total} | {message}',\n barsize: 30,\n clearOnComplete: true,\n emptyOnZero: true,\n },\n Presets.shades_grey,\n )\n\n if (!progressCache.has(id)) {\n progressCache.set(id, progressBar)\n progressBar.start(size, 1, payload)\n }\n })\n\n logger.on('progress_stop', ({ id }) => {\n progressCache.get(id)?.stop()\n logger.consola?.resumeLogs()\n })\n\n logger.on('progressed', ({ id, message = '' }) => {\n const payload = { id, message }\n\n progressCache.get(id)?.increment(1, payload)\n })\n }\n\n const definedConfig: Config = {\n root,\n ...userConfig,\n input: inputPath\n ? {\n ...userConfig.input,\n path: inputPath,\n }\n : userConfig.input,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n format: 'prettier',\n ...userConfig.output,\n },\n }\n\n const { fabric, pluginManager } = await setup({\n config: definedConfig,\n logger,\n })\n\n logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n const { files, failedPlugins, error } = await safeBuild(\n {\n config: definedConfig,\n logger,\n },\n { pluginManager, fabric },\n )\n\n if (logger.logLevel === LogMapper.debug) {\n logger.consola?.start('Writing logs')\n\n const logFiles = await logger.writeLogs()\n\n logger.consola?.success(`Written logs: \\n${logFiles.join('\\n')}`)\n }\n\n const summary = getSummary({\n failedPlugins,\n filesCreated: files.length,\n config: definedConfig,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n })\n\n if (failedPlugins.size && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([...failedPlugins].filter((it) => it.error).map((it) => it.error))\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n ;[...failedPlugins]\n .filter((it) => it.error)\n .forEach((it) => {\n logger.consola?.error(it.error)\n })\n\n process.exit(1)\n }\n\n // TODO check if we can remove error\n if (error && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([error])\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n logger.consola?.error(error)\n\n process.exit(1)\n }\n\n // formatting\n if (config.output.format === 'prettier') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('prettier', ['--ignore-unknown', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Prettier not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n if (config.output.format === 'biome') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('biome', ['format', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n // linting\n if (config.output.lint === 'eslint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('eslint', [path.resolve(definedConfig.root, definedConfig.output.path), '--fix'])\n } catch (e) {\n logger.consola?.warn('Eslint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'biome') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('biome', ['lint', '--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'oxlint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('oxlint', ['--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Oxlint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.hooks) {\n await executeHooks({ hooks: config.hooks, logger })\n }\n\n logger.consola?.log(`⚡Build completed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola?.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'green',\n borderStyle: 'rounded',\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -164,7 +164,7 @@ const command = defineCommand({
|
|
|
164
164
|
if (args.help) return showUsage(command);
|
|
165
165
|
if (args.debug) args.logLevel = "debug";
|
|
166
166
|
const logger = createLogger({ logLevel: LogMapper[args.logLevel] || 3 });
|
|
167
|
-
const { generate } = await import("./generate-
|
|
167
|
+
const { generate } = await import("./generate-DRLAdPuL.js");
|
|
168
168
|
logger.emit("start", "Loading config");
|
|
169
169
|
const result = await getCosmiConfig("kubb", args.config);
|
|
170
170
|
logger.emit("success", `Config loaded(${pc.dim(path.relative(process$1.cwd(), result.filepath))})`);
|
|
@@ -211,4 +211,4 @@ var generate_default = command;
|
|
|
211
211
|
|
|
212
212
|
//#endregion
|
|
213
213
|
export { generate_default as default };
|
|
214
|
-
//# sourceMappingURL=generate-
|
|
214
|
+
//# sourceMappingURL=generate-WbACXpjp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-WbACXpjp.js","names":["results: Array<Config>","path","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 type { CLIOptions, Config, UserConfig } from '@kubb/core'\nimport { isPromise } from '@kubb/core/utils'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\nimport { getPlugins } from './getPlugins.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 as CLIOptions)\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 type { defineConfig, UserConfig } from '@kubb/core'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\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-fabric',\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 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 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 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 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.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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"}
|
package/dist/index.cjs
CHANGED
|
@@ -11,7 +11,7 @@ let semver = require("semver");
|
|
|
11
11
|
semver = require_chunk.__toESM(semver);
|
|
12
12
|
|
|
13
13
|
//#region package.json
|
|
14
|
-
var version = "4.5.
|
|
14
|
+
var version = "4.5.2";
|
|
15
15
|
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region src/index.ts
|
|
@@ -54,13 +54,12 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
54
54
|
"validate",
|
|
55
55
|
"mcp"
|
|
56
56
|
].includes(rawArgs[0])) {
|
|
57
|
-
|
|
58
|
-
await (0, citty.runCommand)(await Promise.resolve().then(() => require("./generate-C-LME3FT.cjs")).then((r) => r.default), { rawArgs });
|
|
57
|
+
await (0, citty.runCommand)(await Promise.resolve().then(() => require("./generate-D4ArArmH.cjs")).then((r) => r.default), { rawArgs });
|
|
59
58
|
process.exit(0);
|
|
60
59
|
}
|
|
61
60
|
},
|
|
62
61
|
subCommands: {
|
|
63
|
-
generate: () => Promise.resolve().then(() => require("./generate-
|
|
62
|
+
generate: () => Promise.resolve().then(() => require("./generate-D4ArArmH.cjs")).then((r) => r.default),
|
|
64
63
|
validate: () => Promise.resolve().then(() => require("./validate-CvKz5F6R.cjs")).then((r) => r.default),
|
|
65
64
|
mcp: () => Promise.resolve().then(() => require("./mcp-cORMfOlp.cjs")).then((r) => r.default)
|
|
66
65
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/cli\",\n \"version\": \"4.5.
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/cli\",\n \"version\": \"4.5.2\",\n \"description\": \"Command-line interface for Kubb, enabling easy generation of TypeScript, React-Query, Zod, and other code from OpenAPI specifications.\",\n \"keywords\": [\n \"cli\",\n \"command-line\",\n \"typescript\",\n \"openapi\",\n \"swagger\",\n \"code-generator\",\n \"codegen\",\n \"plugins\",\n \"kubb\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"bin\": {\n \"kubb\": \"bin/kubb.cjs\"\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"size-limit\": [\n {\n \"path\": \"./dist/*.js\",\n \"limit\": \"510 KiB\",\n \"gzip\": true\n }\n ],\n \"scripts\": {\n \"build\": \"tsdown && size-limit\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"chokidar\": \"^4.0.3\",\n \"citty\": \"^0.1.6\",\n \"cli-progress\": \"^3.12.0\",\n \"consola\": \"^3.4.2\",\n \"cosmiconfig\": \"^9.0.0\",\n \"execa\": \"^9.6.0\",\n \"gradient-string\": \"^3.0.0\",\n \"jiti\": \"^2.6.1\",\n \"latest-version\": \"^9.0.0\",\n \"picocolors\": \"^1.1.1\",\n \"semver\": \"^7.7.3\",\n \"string-argv\": \"^0.3.2\"\n },\n \"devDependencies\": {\n \"@kubb/mcp\": \"workspace:*\",\n \"@kubb/oas\": \"workspace:*\",\n \"@types/cli-progress\": \"^3.11.6\",\n \"@types/semver\": \"^7.7.1\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { defineCommand, runCommand, runMain } from 'citty'\nimport consola from 'consola'\nimport { default as gradientString } from 'gradient-string'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n args: {\n version: {\n type: 'boolean',\n alias: 'v',\n description: 'Show version number',\n },\n },\n async setup({ rawArgs, args }) {\n if (args.version) {\n console.log(version)\n process.exit(0)\n }\n try {\n consola.log(gradientString(['#F58517', '#F5A217', '#F55A17'])('Kubb CLI:'))\n\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (!['generate', 'validate', 'mcp'].includes(rawArgs[0] as string)) {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n validate: () => import('./commands/validate.ts').then((r) => r.default),\n mcp: () => import('./commands/mcp.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n"],"mappings":";;;;;;;;;;;;;cAEa;;;;ACOb,MAAM,gCAAqB;CACzB,MAAM;EACJ,MAJS;EAKT;EACA,aAAa;EACd;CACD,MAAM,EACJ,SAAS;EACP,MAAM;EACN,OAAO;EACP,aAAa;EACd,EACF;CACD,MAAM,MAAM,EAAE,SAAS,QAAQ;AAC7B,MAAI,KAAK,SAAS;AAChB,WAAQ,IAAI,QAAQ;AACpB,WAAQ,KAAK,EAAE;;AAEjB,MAAI;AACF,mBAAQ,iCAAmB;IAAC;IAAW;IAAW;IAAU,CAAC,CAAC,YAAY,CAAC;GAE3E,MAAM,gBAAgB,kCAAuB,YAAY;AAEzD,sBAAO,SAAS,cAAc,CAC5B,iBAAQ,IAAI;IACV,OAAO;IACP,SAAS,MAAM,QAAQ,UAAU,cAAc;;IAE/C,OAAO;KACL,SAAS;KACT,aAAa;KACb,aAAa;KACd;IACF,CAAC;WAEG,IAAI;AAEb,MAAI,CAAC;GAAC;GAAY;GAAY;GAAM,CAAC,SAAS,QAAQ,GAAa,EAAE;AAInE,+BAFwB,2CAAM,4BAAiC,MAAM,MAAM,EAAE,QAAQ,EAEnD,EAAE,SAAS,CAAC;AAE9C,WAAQ,KAAK,EAAE;;;CAGnB,aAAa;EACX,qDAAgB,4BAAiC,MAAM,MAAM,EAAE,QAAQ;EACvE,qDAAgB,4BAAiC,MAAM,MAAM,EAAE,QAAQ;EACvE,gDAAW,uBAA4B,MAAM,MAAM,EAAE,QAAQ;EAC9D;CACF,CAAC;AAEF,eAAsB,IAAI,OAAiC;AACzD,0BAAc,KAAK"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import getLatestVersion from "latest-version";
|
|
|
5
5
|
import { lt } from "semver";
|
|
6
6
|
|
|
7
7
|
//#region package.json
|
|
8
|
-
var version = "4.5.
|
|
8
|
+
var version = "4.5.2";
|
|
9
9
|
|
|
10
10
|
//#endregion
|
|
11
11
|
//#region src/index.ts
|
|
@@ -48,13 +48,12 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
48
48
|
"validate",
|
|
49
49
|
"mcp"
|
|
50
50
|
].includes(rawArgs[0])) {
|
|
51
|
-
|
|
52
|
-
await runCommand(await import("./generate-to5Shevn.js").then((r) => r.default), { rawArgs });
|
|
51
|
+
await runCommand(await import("./generate-WbACXpjp.js").then((r) => r.default), { rawArgs });
|
|
53
52
|
process.exit(0);
|
|
54
53
|
}
|
|
55
54
|
},
|
|
56
55
|
subCommands: {
|
|
57
|
-
generate: () => import("./generate-
|
|
56
|
+
generate: () => import("./generate-WbACXpjp.js").then((r) => r.default),
|
|
58
57
|
validate: () => import("./validate-8i6chavn.js").then((r) => r.default),
|
|
59
58
|
mcp: () => import("./mcp-C4KjGtQv.js").then((r) => r.default)
|
|
60
59
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/cli\",\n \"version\": \"4.5.
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@kubb/cli\",\n \"version\": \"4.5.2\",\n \"description\": \"Command-line interface for Kubb, enabling easy generation of TypeScript, React-Query, Zod, and other code from OpenAPI specifications.\",\n \"keywords\": [\n \"cli\",\n \"command-line\",\n \"typescript\",\n \"openapi\",\n \"swagger\",\n \"code-generator\",\n \"codegen\",\n \"plugins\",\n \"kubb\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/kubb-labs/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"stijnvanhulle\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.cts\",\n \"bin\": {\n \"kubb\": \"bin/kubb.cjs\"\n },\n \"files\": [\n \"src\",\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"size-limit\": [\n {\n \"path\": \"./dist/*.js\",\n \"limit\": \"510 KiB\",\n \"gzip\": true\n }\n ],\n \"scripts\": {\n \"build\": \"tsdown && size-limit\",\n \"clean\": \"npx rimraf ./dist\",\n \"lint\": \"bun biome lint .\",\n \"lint:fix\": \"bun biome lint --fix --unsafe .\",\n \"release\": \"pnpm publish --no-git-check\",\n \"release:canary\": \"bash ../../.github/canary.sh && node ../../scripts/build.js canary && pnpm publish --no-git-check\",\n \"start\": \"tsdown --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"chokidar\": \"^4.0.3\",\n \"citty\": \"^0.1.6\",\n \"cli-progress\": \"^3.12.0\",\n \"consola\": \"^3.4.2\",\n \"cosmiconfig\": \"^9.0.0\",\n \"execa\": \"^9.6.0\",\n \"gradient-string\": \"^3.0.0\",\n \"jiti\": \"^2.6.1\",\n \"latest-version\": \"^9.0.0\",\n \"picocolors\": \"^1.1.1\",\n \"semver\": \"^7.7.3\",\n \"string-argv\": \"^0.3.2\"\n },\n \"devDependencies\": {\n \"@kubb/mcp\": \"workspace:*\",\n \"@kubb/oas\": \"workspace:*\",\n \"@types/cli-progress\": \"^3.11.6\",\n \"@types/semver\": \"^7.7.1\",\n \"source-map-support\": \"^0.5.21\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import { defineCommand, runCommand, runMain } from 'citty'\nimport consola from 'consola'\nimport { default as gradientString } from 'gradient-string'\nimport getLatestVersion from 'latest-version'\nimport { lt } from 'semver'\nimport { version } from '../package.json'\n\nconst name = 'kubb'\n\nconst main = defineCommand({\n meta: {\n name,\n version,\n description: 'Kubb generation',\n },\n args: {\n version: {\n type: 'boolean',\n alias: 'v',\n description: 'Show version number',\n },\n },\n async setup({ rawArgs, args }) {\n if (args.version) {\n console.log(version)\n process.exit(0)\n }\n try {\n consola.log(gradientString(['#F58517', '#F5A217', '#F55A17'])('Kubb CLI:'))\n\n const latestVersion = await getLatestVersion('@kubb/cli')\n\n if (lt(version, latestVersion)) {\n consola.box({\n title: 'Update available for `Kubb` ',\n message: `\\`v${version}\\` → \\`v${latestVersion}\\`\nRun \\`npm install -g @kubb/cli\\` to update`,\n style: {\n padding: 2,\n borderColor: 'yellow',\n borderStyle: 'rounded',\n },\n })\n }\n } catch (_e) {}\n\n if (!['generate', 'validate', 'mcp'].includes(rawArgs[0] as string)) {\n // generate is not being used\n const generateCommand = await import('./commands/generate.ts').then((r) => r.default)\n\n await runCommand(generateCommand, { rawArgs })\n\n process.exit(0)\n }\n },\n subCommands: {\n generate: () => import('./commands/generate.ts').then((r) => r.default),\n validate: () => import('./commands/validate.ts').then((r) => r.default),\n mcp: () => import('./commands/mcp.ts').then((r) => r.default),\n },\n})\n\nexport async function run(_argv?: string[]): Promise<void> {\n await runMain(main)\n}\n"],"mappings":";;;;;;;cAEa;;;;ACOb,MAAM,OAAO,cAAc;CACzB,MAAM;EACJ,MAJS;EAKT;EACA,aAAa;EACd;CACD,MAAM,EACJ,SAAS;EACP,MAAM;EACN,OAAO;EACP,aAAa;EACd,EACF;CACD,MAAM,MAAM,EAAE,SAAS,QAAQ;AAC7B,MAAI,KAAK,SAAS;AAChB,WAAQ,IAAI,QAAQ;AACpB,WAAQ,KAAK,EAAE;;AAEjB,MAAI;AACF,WAAQ,IAAI,eAAe;IAAC;IAAW;IAAW;IAAU,CAAC,CAAC,YAAY,CAAC;GAE3E,MAAM,gBAAgB,MAAM,iBAAiB,YAAY;AAEzD,OAAI,GAAG,SAAS,cAAc,CAC5B,SAAQ,IAAI;IACV,OAAO;IACP,SAAS,MAAM,QAAQ,UAAU,cAAc;;IAE/C,OAAO;KACL,SAAS;KACT,aAAa;KACb,aAAa;KACd;IACF,CAAC;WAEG,IAAI;AAEb,MAAI,CAAC;GAAC;GAAY;GAAY;GAAM,CAAC,SAAS,QAAQ,GAAa,EAAE;AAInE,SAAM,WAFkB,MAAM,OAAO,0BAA0B,MAAM,MAAM,EAAE,QAAQ,EAEnD,EAAE,SAAS,CAAC;AAE9C,WAAQ,KAAK,EAAE;;;CAGnB,aAAa;EACX,gBAAgB,OAAO,0BAA0B,MAAM,MAAM,EAAE,QAAQ;EACvE,gBAAgB,OAAO,0BAA0B,MAAM,MAAM,EAAE,QAAQ;EACvE,WAAW,OAAO,qBAAqB,MAAM,MAAM,EAAE,QAAQ;EAC9D;CACF,CAAC;AAEF,eAAsB,IAAI,OAAiC;AACzD,OAAM,QAAQ,KAAK"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/cli",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.2",
|
|
4
4
|
"description": "Command-line interface for Kubb, enabling easy generation of TypeScript, React-Query, Zod, and other code from OpenAPI specifications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -62,14 +62,14 @@
|
|
|
62
62
|
"picocolors": "^1.1.1",
|
|
63
63
|
"semver": "^7.7.3",
|
|
64
64
|
"string-argv": "^0.3.2",
|
|
65
|
-
"@kubb/core": "4.5.
|
|
65
|
+
"@kubb/core": "4.5.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/cli-progress": "^3.11.6",
|
|
69
69
|
"@types/semver": "^7.7.1",
|
|
70
70
|
"source-map-support": "^0.5.21",
|
|
71
|
-
"@kubb/mcp": "4.5.
|
|
72
|
-
"@kubb/oas": "4.5.
|
|
71
|
+
"@kubb/mcp": "4.5.2",
|
|
72
|
+
"@kubb/oas": "4.5.2"
|
|
73
73
|
},
|
|
74
74
|
"engines": {
|
|
75
75
|
"node": ">=20"
|
package/src/index.ts
CHANGED
|
@@ -45,7 +45,6 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
45
45
|
} catch (_e) {}
|
|
46
46
|
|
|
47
47
|
if (!['generate', 'validate', 'mcp'].includes(rawArgs[0] as string)) {
|
|
48
|
-
console.log(rawArgs[0])
|
|
49
48
|
// generate is not being used
|
|
50
49
|
const generateCommand = await import('./commands/generate.ts').then((r) => r.default)
|
|
51
50
|
|
package/src/runners/generate.ts
CHANGED
|
@@ -88,7 +88,7 @@ export async function generate({ input, config, progressCache, args }: GenerateP
|
|
|
88
88
|
|
|
89
89
|
logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)
|
|
90
90
|
|
|
91
|
-
const { files, error } = await safeBuild(
|
|
91
|
+
const { files, failedPlugins, error } = await safeBuild(
|
|
92
92
|
{
|
|
93
93
|
config: definedConfig,
|
|
94
94
|
logger,
|
|
@@ -105,13 +105,44 @@ export async function generate({ input, config, progressCache, args }: GenerateP
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
const summary = getSummary({
|
|
108
|
+
failedPlugins,
|
|
108
109
|
filesCreated: files.length,
|
|
109
|
-
pluginManager,
|
|
110
110
|
config: definedConfig,
|
|
111
|
-
status: error ? 'failed' : 'success',
|
|
111
|
+
status: failedPlugins.size > 0 || error ? 'failed' : 'success',
|
|
112
112
|
hrStart,
|
|
113
113
|
})
|
|
114
114
|
|
|
115
|
+
if (failedPlugins.size && logger.consola) {
|
|
116
|
+
logger.consola?.resumeLogs()
|
|
117
|
+
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)
|
|
118
|
+
|
|
119
|
+
logger.consola.box({
|
|
120
|
+
title: `${config.name || ''}`,
|
|
121
|
+
message: summary.join(''),
|
|
122
|
+
style: {
|
|
123
|
+
padding: 2,
|
|
124
|
+
borderColor: 'red',
|
|
125
|
+
borderStyle: 'rounded',
|
|
126
|
+
},
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
const errors = getErrorCauses([...failedPlugins].filter((it) => it.error).map((it) => it.error))
|
|
130
|
+
if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {
|
|
131
|
+
errors.forEach((err) => {
|
|
132
|
+
logger.consola?.error(err)
|
|
133
|
+
})
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
;[...failedPlugins]
|
|
137
|
+
.filter((it) => it.error)
|
|
138
|
+
.forEach((it) => {
|
|
139
|
+
logger.consola?.error(it.error)
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
process.exit(1)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// TODO check if we can remove error
|
|
115
146
|
if (error && logger.consola) {
|
|
116
147
|
logger.consola?.resumeLogs()
|
|
117
148
|
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)
|
package/src/utils/getConfig.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Config, UserConfig } from '@kubb/core'
|
|
1
|
+
import type { CLIOptions, Config, UserConfig } from '@kubb/core'
|
|
2
2
|
import { isPromise } from '@kubb/core/utils'
|
|
3
3
|
import type { Args } from '../commands/generate.ts'
|
|
4
4
|
import type { CosmiconfigResult } from './getCosmiConfig.ts'
|
|
@@ -13,7 +13,7 @@ export async function getConfig(result: CosmiconfigResult, args: Args): Promise<
|
|
|
13
13
|
|
|
14
14
|
// for ts or js files
|
|
15
15
|
if (typeof config === 'function') {
|
|
16
|
-
const possiblePromise = config(args)
|
|
16
|
+
const possiblePromise = config(args as CLIOptions)
|
|
17
17
|
if (isPromise(possiblePromise)) {
|
|
18
18
|
kubbUserConfig = possiblePromise
|
|
19
19
|
}
|
package/src/utils/getSummary.ts
CHANGED
|
@@ -1,36 +1,30 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
|
-
import type { Config,
|
|
2
|
+
import type { Config, Plugin } from '@kubb/core'
|
|
3
3
|
import { randomCliColour } from '@kubb/core/logger'
|
|
4
4
|
import pc from 'picocolors'
|
|
5
5
|
import { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'
|
|
6
6
|
|
|
7
7
|
type SummaryProps = {
|
|
8
|
-
|
|
8
|
+
failedPlugins: Set<{ plugin: Plugin; error: Error }>
|
|
9
9
|
status: 'success' | 'failed'
|
|
10
10
|
hrStart: [number, number]
|
|
11
11
|
filesCreated: number
|
|
12
12
|
config: Config
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export function getSummary({
|
|
15
|
+
export function getSummary({ failedPlugins, filesCreated, status, hrStart, config }: SummaryProps): string[] {
|
|
16
16
|
const logs = new Set<string>()
|
|
17
17
|
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))
|
|
18
18
|
|
|
19
|
-
const buildStartPlugins = pluginManager.executed
|
|
20
|
-
.filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core')
|
|
21
|
-
.map((item) => item.plugin.name)
|
|
22
|
-
|
|
23
|
-
const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === 'buildEnd' && item.plugin.name !== 'core').map((item) => item.plugin.name)
|
|
24
|
-
|
|
25
|
-
const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name)
|
|
26
19
|
const pluginsCount = config.plugins?.length || 0
|
|
20
|
+
const successCount = pluginsCount - failedPlugins.size
|
|
27
21
|
|
|
28
22
|
const meta = {
|
|
29
23
|
plugins:
|
|
30
24
|
status === 'success'
|
|
31
|
-
? `${pc.green(`${
|
|
32
|
-
: `${pc.red(`${failedPlugins
|
|
33
|
-
pluginsFailed: status === 'failed' ? failedPlugins?.map((
|
|
25
|
+
? `${pc.green(`${successCount} successful`)}, ${pluginsCount} total`
|
|
26
|
+
: `${pc.red(`${failedPlugins.size ?? 1} failed`)}, ${pluginsCount} total`,
|
|
27
|
+
pluginsFailed: status === 'failed' ? [...failedPlugins]?.map(({ plugin }) => randomCliColour(plugin.name))?.join(', ') : undefined,
|
|
34
28
|
filesCreated: filesCreated,
|
|
35
29
|
time: `${pc.yellow(`${elapsedSeconds}s`)}`,
|
|
36
30
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-C-LME3FT.cjs","names":["results: Array<Config>","path","pc","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 type { Config, UserConfig } from '@kubb/core'\nimport { isPromise } from '@kubb/core/utils'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\nimport { getPlugins } from './getPlugins.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 type { defineConfig, UserConfig } from '@kubb/core'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\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-fabric',\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 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 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 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 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.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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-CUHrQxq3.cjs","names":["Writable","pc","LogMapper","pc","pc","path","process","LogMapper","SingleBar","Presets","definedConfig: Config","pc","path"],"sources":["../src/utils/Writables.ts","../src/utils/executeHooks.ts","../src/utils/getErrorCauses.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/getSummary.ts","../src/runners/generate.ts"],"sourcesContent":["import * as process from 'node:process'\nimport type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\nimport pc from 'picocolors'\n\nexport class ConsolaWritable extends Writable {\n consola: ConsolaInstance | undefined\n command: string\n constructor(consola: ConsolaInstance | undefined, command: string, opts?: WritableOptions) {\n super(opts)\n\n this.command = command\n this.consola = consola\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n process.stdout.write(`${pc.dim(chunk?.toString())}`)\n\n callback()\n }\n}\n","import type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { LogMapper } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport { ConsolaWritable } from './Writables.ts'\n\ntype ExecutingHooksProps = {\n hooks: NonNullable<Config['hooks']>\n logger: Logger\n}\n\nexport async function executeHooks({ hooks, logger }: ExecutingHooksProps): Promise<void> {\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean)\n\n for (const command of commands) {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n continue\n }\n\n logger?.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n\n await execa(cmd, _args, {\n detached: true,\n stdout: logger?.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],\n stripFinalNewline: true,\n })\n\n logger?.emit('success', `Executed hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n }\n\n logger?.emit('success', 'Executed hooks')\n}\n","export function getErrorCauses(errors: Error[]): Error[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n return prev\n }\n prev = [...prev, error]\n\n return prev\n }, [] as Error[])\n .filter(Boolean)\n}\n","export function parseHrtimeToSeconds(hrtime: [number, number]): string {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import path from 'node:path'\nimport type { Config, PluginManager } from '@kubb/core'\nimport { randomCliColour } from '@kubb/core/logger'\nimport pc from 'picocolors'\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\ntype SummaryProps = {\n pluginManager: PluginManager\n status: 'success' | 'failed'\n hrStart: [number, number]\n filesCreated: number\n config: Config\n}\n\nexport function getSummary({ pluginManager, filesCreated, status, hrStart, config }: SummaryProps): string[] {\n const logs = new Set<string>()\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))\n\n const buildStartPlugins = pluginManager.executed\n .filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core')\n .map((item) => item.plugin.name)\n\n const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === 'buildEnd' && item.plugin.name !== 'core').map((item) => item.plugin.name)\n\n const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name)\n const pluginsCount = config.plugins?.length || 0\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomCliColour(name))?.join(', ') : undefined,\n filesCreated: filesCreated,\n time: `${pc.yellow(`${elapsedSeconds}s`)}`,\n output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,\n } as const\n\n logs.add(\n [\n [`${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [`${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files in ${meta.time}`, true],\n [`${pc.bold('Output:')} ${meta.output}`, true],\n ]\n .map((item) => {\n if (item.at(1)) {\n return item.at(0)\n }\n return undefined\n })\n .filter(Boolean)\n .join('\\n'),\n )\n\n return [...logs]\n}\n","import path from 'node:path'\nimport process from 'node:process'\nimport { type Config, safeBuild, setup } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport { Presets, SingleBar } from 'cli-progress'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport type { Args } from '../commands/generate.ts'\nimport { executeHooks } from '../utils/executeHooks.ts'\nimport { getErrorCauses } from '../utils/getErrorCauses.ts'\nimport { getSummary } from '../utils/getSummary.ts'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n progressCache: Map<string, SingleBar>\n}\n\nexport async function generate({ input, config, progressCache, args }: GenerateProps): Promise<void> {\n const hrStart = process.hrtime()\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n\n const logger = createLogger({\n logLevel,\n name: config.name,\n })\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n if (logger.logLevel !== LogMapper.debug) {\n logger.on('progress_start', ({ id, size, message = '' }) => {\n logger.consola?.pauseLogs()\n const payload = { id, message }\n const progressBar = new SingleBar(\n {\n format: '{percentage}% {bar} {value}/{total} | {message}',\n barsize: 30,\n clearOnComplete: true,\n emptyOnZero: true,\n },\n Presets.shades_grey,\n )\n\n if (!progressCache.has(id)) {\n progressCache.set(id, progressBar)\n progressBar.start(size, 1, payload)\n }\n })\n\n logger.on('progress_stop', ({ id }) => {\n progressCache.get(id)?.stop()\n logger.consola?.resumeLogs()\n })\n\n logger.on('progressed', ({ id, message = '' }) => {\n const payload = { id, message }\n\n progressCache.get(id)?.increment(1, payload)\n })\n }\n\n const definedConfig: Config = {\n root,\n ...userConfig,\n input: inputPath\n ? {\n ...userConfig.input,\n path: inputPath,\n }\n : userConfig.input,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n format: 'prettier',\n ...userConfig.output,\n },\n }\n\n const { fabric, pluginManager } = await setup({\n config: definedConfig,\n logger,\n })\n\n logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n const { files, error } = await safeBuild(\n {\n config: definedConfig,\n logger,\n },\n { pluginManager, fabric },\n )\n\n if (logger.logLevel === LogMapper.debug) {\n logger.consola?.start('Writing logs')\n\n const logFiles = await logger.writeLogs()\n\n logger.consola?.success(`Written logs: \\n${logFiles.join('\\n')}`)\n }\n\n const summary = getSummary({\n filesCreated: files.length,\n pluginManager,\n config: definedConfig,\n status: error ? 'failed' : 'success',\n hrStart,\n })\n\n if (error && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([error])\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n logger.consola?.error(error)\n\n process.exit(1)\n }\n\n // formatting\n if (config.output.format === 'prettier') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('prettier', ['--ignore-unknown', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Prettier not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n if (config.output.format === 'biome') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('biome', ['format', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n // linting\n if (config.output.lint === 'eslint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('eslint', [path.resolve(definedConfig.root, definedConfig.output.path), '--fix'])\n } catch (e) {\n logger.consola?.warn('Eslint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'biome') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('biome', ['lint', '--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'oxlint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('oxlint', ['--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Oxlint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.hooks) {\n await executeHooks({ hooks: config.hooks, logger })\n }\n\n logger.consola?.log(`⚡Build completed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola?.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'green',\n borderStyle: 'rounded',\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-ChOKW4hA.js","names":["process","definedConfig: Config"],"sources":["../src/utils/Writables.ts","../src/utils/executeHooks.ts","../src/utils/getErrorCauses.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/getSummary.ts","../src/runners/generate.ts"],"sourcesContent":["import * as process from 'node:process'\nimport type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\nimport pc from 'picocolors'\n\nexport class ConsolaWritable extends Writable {\n consola: ConsolaInstance | undefined\n command: string\n constructor(consola: ConsolaInstance | undefined, command: string, opts?: WritableOptions) {\n super(opts)\n\n this.command = command\n this.consola = consola\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n process.stdout.write(`${pc.dim(chunk?.toString())}`)\n\n callback()\n }\n}\n","import type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { LogMapper } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport { ConsolaWritable } from './Writables.ts'\n\ntype ExecutingHooksProps = {\n hooks: NonNullable<Config['hooks']>\n logger: Logger\n}\n\nexport async function executeHooks({ hooks, logger }: ExecutingHooksProps): Promise<void> {\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean)\n\n for (const command of commands) {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n continue\n }\n\n logger?.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n\n await execa(cmd, _args, {\n detached: true,\n stdout: logger?.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],\n stripFinalNewline: true,\n })\n\n logger?.emit('success', `Executed hook ${logger.logLevel !== LogMapper.silent ? pc.dim(command) : ''}`)\n }\n\n logger?.emit('success', 'Executed hooks')\n}\n","export function getErrorCauses(errors: Error[]): Error[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n return prev\n }\n prev = [...prev, error]\n\n return prev\n }, [] as Error[])\n .filter(Boolean)\n}\n","export function parseHrtimeToSeconds(hrtime: [number, number]): string {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import path from 'node:path'\nimport type { Config, PluginManager } from '@kubb/core'\nimport { randomCliColour } from '@kubb/core/logger'\nimport pc from 'picocolors'\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\ntype SummaryProps = {\n pluginManager: PluginManager\n status: 'success' | 'failed'\n hrStart: [number, number]\n filesCreated: number\n config: Config\n}\n\nexport function getSummary({ pluginManager, filesCreated, status, hrStart, config }: SummaryProps): string[] {\n const logs = new Set<string>()\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart))\n\n const buildStartPlugins = pluginManager.executed\n .filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core')\n .map((item) => item.plugin.name)\n\n const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === 'buildEnd' && item.plugin.name !== 'core').map((item) => item.plugin.name)\n\n const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name)\n const pluginsCount = config.plugins?.length || 0\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomCliColour(name))?.join(', ') : undefined,\n filesCreated: filesCreated,\n time: `${pc.yellow(`${elapsedSeconds}s`)}`,\n output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,\n } as const\n\n logs.add(\n [\n [`${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [`${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files in ${meta.time}`, true],\n [`${pc.bold('Output:')} ${meta.output}`, true],\n ]\n .map((item) => {\n if (item.at(1)) {\n return item.at(0)\n }\n return undefined\n })\n .filter(Boolean)\n .join('\\n'),\n )\n\n return [...logs]\n}\n","import path from 'node:path'\nimport process from 'node:process'\nimport { type Config, safeBuild, setup } from '@kubb/core'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\nimport { Presets, SingleBar } from 'cli-progress'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\nimport type { Args } from '../commands/generate.ts'\nimport { executeHooks } from '../utils/executeHooks.ts'\nimport { getErrorCauses } from '../utils/getErrorCauses.ts'\nimport { getSummary } from '../utils/getSummary.ts'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n progressCache: Map<string, SingleBar>\n}\n\nexport async function generate({ input, config, progressCache, args }: GenerateProps): Promise<void> {\n const hrStart = process.hrtime()\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n\n const logger = createLogger({\n logLevel,\n name: config.name,\n })\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n if (logger.logLevel !== LogMapper.debug) {\n logger.on('progress_start', ({ id, size, message = '' }) => {\n logger.consola?.pauseLogs()\n const payload = { id, message }\n const progressBar = new SingleBar(\n {\n format: '{percentage}% {bar} {value}/{total} | {message}',\n barsize: 30,\n clearOnComplete: true,\n emptyOnZero: true,\n },\n Presets.shades_grey,\n )\n\n if (!progressCache.has(id)) {\n progressCache.set(id, progressBar)\n progressBar.start(size, 1, payload)\n }\n })\n\n logger.on('progress_stop', ({ id }) => {\n progressCache.get(id)?.stop()\n logger.consola?.resumeLogs()\n })\n\n logger.on('progressed', ({ id, message = '' }) => {\n const payload = { id, message }\n\n progressCache.get(id)?.increment(1, payload)\n })\n }\n\n const definedConfig: Config = {\n root,\n ...userConfig,\n input: inputPath\n ? {\n ...userConfig.input,\n path: inputPath,\n }\n : userConfig.input,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n format: 'prettier',\n ...userConfig.output,\n },\n }\n\n const { fabric, pluginManager } = await setup({\n config: definedConfig,\n logger,\n })\n\n logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n const { files, error } = await safeBuild(\n {\n config: definedConfig,\n logger,\n },\n { pluginManager, fabric },\n )\n\n if (logger.logLevel === LogMapper.debug) {\n logger.consola?.start('Writing logs')\n\n const logFiles = await logger.writeLogs()\n\n logger.consola?.success(`Written logs: \\n${logFiles.join('\\n')}`)\n }\n\n const summary = getSummary({\n filesCreated: files.length,\n pluginManager,\n config: definedConfig,\n status: error ? 'failed' : 'success',\n hrStart,\n })\n\n if (error && logger.consola) {\n logger.consola?.resumeLogs()\n logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'red',\n borderStyle: 'rounded',\n },\n })\n\n const errors = getErrorCauses([error])\n if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {\n errors.forEach((err) => {\n logger.consola?.error(err)\n })\n }\n\n logger.consola?.error(error)\n\n process.exit(1)\n }\n\n // formatting\n if (config.output.format === 'prettier') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('prettier', ['--ignore-unknown', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Prettier not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n if (config.output.format === 'biome') {\n logger?.emit('start', `Formatting with ${config.output.format}`)\n\n try {\n await execa('biome', ['format', '--write', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Formatted with ${config.output.format}`)\n }\n\n // linting\n if (config.output.lint === 'eslint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('eslint', [path.resolve(definedConfig.root, definedConfig.output.path), '--fix'])\n } catch (e) {\n logger.consola?.warn('Eslint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'biome') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('biome', ['lint', '--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Biome not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.output.lint === 'oxlint') {\n logger?.emit('start', `Linting with ${config.output.format}`)\n\n try {\n await execa('oxlint', ['--fix', path.resolve(definedConfig.root, definedConfig.output.path)])\n } catch (e) {\n logger.consola?.warn('Oxlint not found')\n logger.consola?.error(e)\n }\n\n logger?.emit('success', `Linted with ${config.output.format}`)\n }\n\n if (config.hooks) {\n await executeHooks({ hooks: config.hooks, logger })\n }\n\n logger.consola?.log(`⚡Build completed ${logger.logLevel !== LogMapper.silent ? pc.dim(inputPath!) : ''}`)\n\n logger.consola?.box({\n title: `${config.name || ''}`,\n message: summary.join(''),\n style: {\n padding: 2,\n borderColor: 'green',\n borderStyle: 'rounded',\n },\n })\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-to5Shevn.js","names":["results: Array<Config>","path","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 type { Config, UserConfig } from '@kubb/core'\nimport { isPromise } from '@kubb/core/utils'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\nimport { getPlugins } from './getPlugins.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 type { defineConfig, UserConfig } from '@kubb/core'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\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-fabric',\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 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 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 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 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.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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"}
|