@kubb/cli 3.7.1 → 3.7.3
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/{chunk-PUR4OZA2.cjs → chunk-HEJC6MIF.cjs} +67 -147
- package/dist/chunk-HEJC6MIF.cjs.map +1 -0
- package/dist/{chunk-LA3QWVJI.js → chunk-SMSDJUVC.js} +28 -23
- package/dist/chunk-SMSDJUVC.js.map +1 -0
- package/dist/{generate-Q72KJ3UY.js → generate-F47H4EHK.js} +75 -18
- package/dist/generate-F47H4EHK.js.map +1 -0
- package/dist/{generate-YUAX4RQZ.cjs → generate-RGDLVOFP.cjs} +84 -25
- package/dist/generate-RGDLVOFP.cjs.map +1 -0
- package/dist/index.cjs +9 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/package.json +10 -8
- package/src/commands/generate.ts +84 -15
- package/src/generate.ts +20 -11
- package/src/index.ts +3 -0
- package/src/utils/Writables.ts +2 -2
- package/src/utils/executeHooks.ts +3 -3
- package/src/utils/getSummary.ts +8 -8
- package/src/utils/watcher.ts +3 -3
- package/dist/chunk-LA3QWVJI.js.map +0 -1
- package/dist/chunk-PUR4OZA2.cjs.map +0 -1
- package/dist/generate-Q72KJ3UY.js.map +0 -1
- package/dist/generate-YUAX4RQZ.cjs.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { LogMapper, createLogger, randomCliColour } from '@kubb/core/logger';
|
|
2
|
-
import
|
|
3
|
-
import { safeBuild } from '@kubb/core';
|
|
2
|
+
import { colors } from 'consola/utils';
|
|
3
|
+
import { setup, safeBuild } from '@kubb/core';
|
|
4
4
|
import { execa } from 'execa';
|
|
5
5
|
import { parseArgsStringToArgv } from 'string-argv';
|
|
6
6
|
import { Writable } from 'node:stream';
|
|
7
|
-
import * as
|
|
7
|
+
import * as process3 from 'node:process';
|
|
8
|
+
import process3__default from 'node:process';
|
|
8
9
|
import PQueue from 'p-queue';
|
|
9
10
|
import path from 'node:path';
|
|
10
11
|
import { SingleBar, Presets } from 'cli-progress';
|
|
@@ -19,7 +20,7 @@ var ConsolaWritable = class extends Writable {
|
|
|
19
20
|
this.consola = consola;
|
|
20
21
|
}
|
|
21
22
|
_write(chunk, _encoding, callback) {
|
|
22
|
-
|
|
23
|
+
process3.stdout.write(`${colors.dim(chunk?.toString())}`);
|
|
23
24
|
callback();
|
|
24
25
|
}
|
|
25
26
|
};
|
|
@@ -33,13 +34,13 @@ async function executeHooks({ hooks, logger }) {
|
|
|
33
34
|
return null;
|
|
34
35
|
}
|
|
35
36
|
await queue.add(async () => {
|
|
36
|
-
logger?.emit("start", `Executing hook ${logger.logLevel !== LogMapper.silent ?
|
|
37
|
+
logger?.emit("start", `Executing hook ${logger.logLevel !== LogMapper.silent ? colors.dim(command) : ""}`);
|
|
37
38
|
await execa(cmd, _args, {
|
|
38
39
|
detached: true,
|
|
39
40
|
stdout: logger?.logLevel === LogMapper.silent ? void 0 : ["pipe", consolaWritable],
|
|
40
41
|
stripFinalNewline: true
|
|
41
42
|
});
|
|
42
|
-
logger?.emit("success", `Executed hook ${logger.logLevel !== LogMapper.silent ?
|
|
43
|
+
logger?.emit("success", `Executed hook ${logger.logLevel !== LogMapper.silent ? colors.dim(command) : ""}`);
|
|
43
44
|
});
|
|
44
45
|
});
|
|
45
46
|
await Promise.all(promises);
|
|
@@ -74,18 +75,18 @@ function getSummary({ pluginManager, filesCreated, status, hrStart, config }) {
|
|
|
74
75
|
const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
75
76
|
const pluginsCount = config.plugins?.length || 0;
|
|
76
77
|
const meta = {
|
|
77
|
-
plugins: status === "success" ? `${
|
|
78
|
+
plugins: status === "success" ? `${colors.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total` : `${colors.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,
|
|
78
79
|
pluginsFailed: status === "failed" ? failedPlugins?.map((name) => randomCliColour(name))?.join(", ") : void 0,
|
|
79
80
|
filesCreated,
|
|
80
|
-
time: `${
|
|
81
|
+
time: `${colors.yellow(`${elapsedSeconds}s`)}`,
|
|
81
82
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root
|
|
82
83
|
};
|
|
83
84
|
logs.add(
|
|
84
85
|
[
|
|
85
|
-
[`${
|
|
86
|
-
[`${
|
|
87
|
-
[`${
|
|
88
|
-
[`${
|
|
86
|
+
[`${colors.bold("Plugins:")} ${meta.plugins}`, true],
|
|
87
|
+
[`${colors.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
|
|
88
|
+
[`${colors.bold("Generated:")} ${meta.filesCreated} files in ${meta.time}`, true],
|
|
89
|
+
[`${colors.bold("Output:")} ${meta.output}`, true]
|
|
89
90
|
].map((item) => {
|
|
90
91
|
if (item.at(1)) {
|
|
91
92
|
return item.at(0);
|
|
@@ -95,16 +96,16 @@ function getSummary({ pluginManager, filesCreated, status, hrStart, config }) {
|
|
|
95
96
|
);
|
|
96
97
|
return [...logs];
|
|
97
98
|
}
|
|
98
|
-
async function generate({ input, config, args }) {
|
|
99
|
+
async function generate({ input, config, progressCache, args }) {
|
|
100
|
+
const hrStart = process3__default.hrtime();
|
|
99
101
|
const logLevel = LogMapper[args.logLevel] || 3;
|
|
100
102
|
const logger = createLogger({
|
|
101
103
|
logLevel,
|
|
102
104
|
name: config.name
|
|
103
105
|
});
|
|
104
|
-
const { root =
|
|
106
|
+
const { root = process3__default.cwd(), ...userConfig } = config;
|
|
105
107
|
const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
|
|
106
108
|
if (logger.logLevel !== LogMapper.debug) {
|
|
107
|
-
const progressCache = /* @__PURE__ */ new Map();
|
|
108
109
|
logger.on("progress_start", ({ id, size, message = "" }) => {
|
|
109
110
|
logger.consola?.pauseLogs();
|
|
110
111
|
const payload = { id, message };
|
|
@@ -131,7 +132,6 @@ async function generate({ input, config, args }) {
|
|
|
131
132
|
progressCache.get(id)?.increment(1, payload);
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
|
-
logger.emit("start", `Building ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
135
135
|
const definedConfig = {
|
|
136
136
|
root,
|
|
137
137
|
...userConfig,
|
|
@@ -148,11 +148,16 @@ async function generate({ input, config, args }) {
|
|
|
148
148
|
...userConfig.output
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
|
-
const
|
|
152
|
-
const { pluginManager, files, error } = await safeBuild({
|
|
151
|
+
const pluginManager = await setup({
|
|
153
152
|
config: definedConfig,
|
|
154
153
|
logger
|
|
155
154
|
});
|
|
155
|
+
logger.emit("start", `Building ${logger.logLevel !== LogMapper.silent ? colors.dim(inputPath) : ""}`);
|
|
156
|
+
const { files, error } = await safeBuild({
|
|
157
|
+
config: definedConfig,
|
|
158
|
+
pluginManager,
|
|
159
|
+
logger
|
|
160
|
+
});
|
|
156
161
|
if (logger.logLevel === LogMapper.debug) {
|
|
157
162
|
logger.consola?.start("Writing logs");
|
|
158
163
|
const logFiles = await logger.writeLogs();
|
|
@@ -168,7 +173,7 @@ ${logFiles.join("\n")}`);
|
|
|
168
173
|
});
|
|
169
174
|
if (error && logger.consola) {
|
|
170
175
|
logger.consola?.resumeLogs();
|
|
171
|
-
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ?
|
|
176
|
+
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? colors.dim(inputPath) : ""}`);
|
|
172
177
|
logger.consola.box({
|
|
173
178
|
title: `${config.name || ""}`,
|
|
174
179
|
message: summary.join(""),
|
|
@@ -185,12 +190,12 @@ ${logFiles.join("\n")}`);
|
|
|
185
190
|
});
|
|
186
191
|
}
|
|
187
192
|
logger.consola?.error(error);
|
|
188
|
-
|
|
193
|
+
process3__default.exit(0);
|
|
189
194
|
}
|
|
190
195
|
if (config.hooks) {
|
|
191
196
|
await executeHooks({ hooks: config.hooks, logger });
|
|
192
197
|
}
|
|
193
|
-
logger.consola?.log(`\u26A1Build completed ${logger.logLevel !== LogMapper.silent ?
|
|
198
|
+
logger.consola?.log(`\u26A1Build completed ${logger.logLevel !== LogMapper.silent ? colors.dim(inputPath) : ""}`);
|
|
194
199
|
logger.consola?.box({
|
|
195
200
|
title: `${config.name || ""}`,
|
|
196
201
|
message: summary.join(""),
|
|
@@ -203,5 +208,5 @@ ${logFiles.join("\n")}`);
|
|
|
203
208
|
}
|
|
204
209
|
|
|
205
210
|
export { generate };
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
211
|
+
//# sourceMappingURL=chunk-SMSDJUVC.js.map
|
|
212
|
+
//# sourceMappingURL=chunk-SMSDJUVC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/Writables.ts","../src/utils/executeHooks.ts","../src/utils/getErrorCauses.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/getSummary.ts","../src/generate.ts"],"names":["process2","colors","process","LogMapper"],"mappings":"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","file":"chunk-SMSDJUVC.js","sourcesContent":["import { Writable } from 'node:stream'\n\nimport { colors } from 'consola/utils'\n\nimport * as process from 'node:process'\nimport type { WritableOptions } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\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(`${colors.dim(chunk?.toString())}`)\n\n callback()\n }\n}\n","import type { Logger } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport { colors } from 'consola/utils'\n\nimport { ConsolaWritable } from './Writables.ts'\n\nimport type { Config } from '@kubb/core'\nimport { LogMapper } from '@kubb/core/logger'\nimport PQueue from 'p-queue'\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 const queue = new PQueue({ concurrency: 1 })\n\n const promises = commands.map(async (command) => {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n return null\n }\n\n await queue.add(async () => {\n logger?.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? colors.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 ? colors.dim(command) : ''}`)\n })\n })\n\n await Promise.all(promises)\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'\n\nimport { randomCliColour } from '@kubb/core/logger'\n\nimport { colors } from 'consola/utils'\n\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\nimport type { Config, PluginManager } from '@kubb/core'\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 ? `${colors.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${colors.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomCliColour(name))?.join(', ') : undefined,\n filesCreated: filesCreated,\n time: `${colors.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 [`${colors.bold('Plugins:')} ${meta.plugins}`, true],\n [`${colors.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${colors.bold('Generated:')} ${meta.filesCreated} files in ${meta.time}`, true],\n [`${colors.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 { LogMapper } from '@kubb/core/logger'\n\nimport { colors } from 'consola/utils'\n\nimport { type Config, safeBuild, setup } from '@kubb/core'\nimport { executeHooks } from './utils/executeHooks.ts'\nimport { getErrorCauses } from './utils/getErrorCauses.ts'\nimport { getSummary } from './utils/getSummary.ts'\n\nimport { createLogger } from '@kubb/core/logger'\nimport { Presets, SingleBar } from 'cli-progress'\nimport type { Args } from './commands/generate.ts'\nimport process from 'node:process'\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 ...userConfig.output,\n },\n }\n\n const pluginManager = await setup({\n config: definedConfig,\n logger,\n })\n\n logger.emit('start', `Building ${logger.logLevel !== LogMapper.silent ? colors.dim(inputPath!) : ''}`)\n\n const { files, error } = await safeBuild({\n config: definedConfig,\n pluginManager,\n logger,\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 ? colors.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(0)\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 ? colors.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"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { generate } from './chunk-
|
|
1
|
+
import { generate } from './chunk-SMSDJUVC.js';
|
|
2
2
|
import { defineCommand, showUsage } from 'citty';
|
|
3
|
-
import
|
|
3
|
+
import { colors } from 'consola/utils';
|
|
4
4
|
import { isPromise } from '@kubb/core/utils';
|
|
5
5
|
import { cosmiconfig } from 'cosmiconfig';
|
|
6
6
|
import { createJiti } from 'jiti';
|
|
@@ -8,6 +8,8 @@ import { LogMapper, createLogger } from '@kubb/core/logger';
|
|
|
8
8
|
import path from 'node:path';
|
|
9
9
|
import * as process from 'node:process';
|
|
10
10
|
import { isInputPath, PromiseManager } from '@kubb/core';
|
|
11
|
+
import { startServer } from '@kubb/ui';
|
|
12
|
+
import open from 'open';
|
|
11
13
|
|
|
12
14
|
// src/utils/getPlugins.ts
|
|
13
15
|
function isJSONPlugins(plugins) {
|
|
@@ -112,11 +114,11 @@ async function startWatcher(path2, cb) {
|
|
|
112
114
|
ignored
|
|
113
115
|
});
|
|
114
116
|
watcher.on("all", (type, file) => {
|
|
115
|
-
logger?.emit("info",
|
|
117
|
+
logger?.emit("info", colors.yellow(colors.bold(`Change detected: ${type} ${file}`)));
|
|
116
118
|
try {
|
|
117
119
|
cb(path2);
|
|
118
120
|
} catch (e) {
|
|
119
|
-
logger?.emit("warning",
|
|
121
|
+
logger?.emit("warning", colors.red("Watcher failed"));
|
|
120
122
|
}
|
|
121
123
|
});
|
|
122
124
|
}
|
|
@@ -145,6 +147,12 @@ var args = {
|
|
|
145
147
|
alias: "d",
|
|
146
148
|
default: false
|
|
147
149
|
},
|
|
150
|
+
ui: {
|
|
151
|
+
type: "boolean",
|
|
152
|
+
description: "Open ui",
|
|
153
|
+
alias: "u",
|
|
154
|
+
default: false
|
|
155
|
+
},
|
|
148
156
|
help: {
|
|
149
157
|
type: "boolean",
|
|
150
158
|
description: "Show help",
|
|
@@ -159,6 +167,8 @@ var command = defineCommand({
|
|
|
159
167
|
},
|
|
160
168
|
args,
|
|
161
169
|
async run(commandContext) {
|
|
170
|
+
let name = "";
|
|
171
|
+
const progressCache = /* @__PURE__ */ new Map();
|
|
162
172
|
const { args: args2 } = commandContext;
|
|
163
173
|
const input = args2._[0];
|
|
164
174
|
if (args2.help) {
|
|
@@ -174,32 +184,79 @@ var command = defineCommand({
|
|
|
174
184
|
});
|
|
175
185
|
logger.emit("start", "Loading config");
|
|
176
186
|
const result = await getCosmiConfig("kubb", args2.config);
|
|
177
|
-
logger.emit("success", `Config loaded(${
|
|
187
|
+
logger.emit("success", `Config loaded(${colors.dim(path.relative(process.cwd(), result.filepath))})`);
|
|
178
188
|
const config = await getConfig(result, args2);
|
|
189
|
+
const start = async () => {
|
|
190
|
+
if (Array.isArray(config)) {
|
|
191
|
+
const promiseManager = new PromiseManager();
|
|
192
|
+
const promises = config.map((c) => () => {
|
|
193
|
+
name = c.name || "";
|
|
194
|
+
progressCache.clear();
|
|
195
|
+
return generate({
|
|
196
|
+
input,
|
|
197
|
+
config: c,
|
|
198
|
+
args: args2,
|
|
199
|
+
progressCache
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
await promiseManager.run("seq", promises);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
progressCache.clear();
|
|
206
|
+
await generate({
|
|
207
|
+
input,
|
|
208
|
+
config,
|
|
209
|
+
progressCache,
|
|
210
|
+
args: args2
|
|
211
|
+
});
|
|
212
|
+
return;
|
|
213
|
+
};
|
|
214
|
+
if (args2.ui) {
|
|
215
|
+
await startServer(
|
|
216
|
+
{
|
|
217
|
+
stop: () => process.exit(1),
|
|
218
|
+
restart: () => start(),
|
|
219
|
+
getMeta: () => {
|
|
220
|
+
const entries = [...progressCache.entries()];
|
|
221
|
+
const percentages = entries.reduce(
|
|
222
|
+
(acc, [key, singleBar]) => {
|
|
223
|
+
acc[key] = singleBar.getProgress();
|
|
224
|
+
return acc;
|
|
225
|
+
},
|
|
226
|
+
{}
|
|
227
|
+
);
|
|
228
|
+
return {
|
|
229
|
+
name,
|
|
230
|
+
percentages
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
(info) => {
|
|
235
|
+
const url = `${info.address}:${info.port}`.replace("::", "http://localhost");
|
|
236
|
+
logger.consola?.start(`Starting ui on ${url}`);
|
|
237
|
+
open(url);
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
}
|
|
179
241
|
if (args2.watch) {
|
|
180
242
|
if (Array.isArray(config)) {
|
|
181
243
|
throw new Error("Cannot use watcher with multiple Configs(array)");
|
|
182
244
|
}
|
|
183
245
|
if (isInputPath(config)) {
|
|
184
246
|
return startWatcher([input || config.input.path], async (paths) => {
|
|
185
|
-
await
|
|
186
|
-
logger.emit("start",
|
|
247
|
+
await start();
|
|
248
|
+
logger.emit("start", colors.yellow(colors.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
187
249
|
});
|
|
188
250
|
}
|
|
189
251
|
}
|
|
190
|
-
|
|
191
|
-
const promiseManager = new PromiseManager();
|
|
192
|
-
const promises = config.map((item) => () => generate({ input, config: item, args: args2 }));
|
|
193
|
-
return promiseManager.run("seq", promises);
|
|
194
|
-
}
|
|
195
|
-
await generate({ input, config, args: args2 });
|
|
252
|
+
await start();
|
|
196
253
|
if (globalThis.isDevtoolsEnabled) {
|
|
197
|
-
const
|
|
254
|
+
const canRestart = await logger.consola?.prompt("Restart(could be used to validate the profiler)?", {
|
|
198
255
|
type: "confirm",
|
|
199
256
|
initial: false
|
|
200
257
|
});
|
|
201
|
-
if (
|
|
202
|
-
await
|
|
258
|
+
if (canRestart) {
|
|
259
|
+
await start();
|
|
203
260
|
} else {
|
|
204
261
|
process.exit(1);
|
|
205
262
|
}
|
|
@@ -209,5 +266,5 @@ var command = defineCommand({
|
|
|
209
266
|
var generate_default = command;
|
|
210
267
|
|
|
211
268
|
export { generate_default as default };
|
|
212
|
-
//# sourceMappingURL=generate-
|
|
213
|
-
//# sourceMappingURL=generate-
|
|
269
|
+
//# sourceMappingURL=generate-F47H4EHK.js.map
|
|
270
|
+
//# sourceMappingURL=generate-F47H4EHK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/getPlugins.ts","../src/utils/getConfig.ts","../src/utils/getCosmiConfig.ts","../src/utils/watcher.ts","../src/commands/generate.ts"],"names":["args","path","createLogger","colors"],"mappings":"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","file":"generate-F47H4EHK.js","sourcesContent":["import type { UserConfig } from '@kubb/core'\n\nfunction isJSONPlugins(plugins: UserConfig['plugins']) {\n return !!(plugins as any)?.some((plugin: any) => {\n return Array.isArray(plugin) && typeof plugin?.at(0) === 'string'\n })\n}\n\nfunction isObjectPlugins(plugins: UserConfig['plugins']): plugins is any {\n return plugins instanceof Object && !Array.isArray(plugins)\n}\n\nexport function getPlugins(plugins: UserConfig['plugins']): Promise<UserConfig['plugins']> {\n if (isObjectPlugins(plugins)) {\n throw new Error('Object plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n if (isJSONPlugins(plugins)) {\n throw new Error('JSON plugins are not supported anymore, best to use http://kubb.dev/getting-started/configure#json')\n }\n\n return Promise.resolve(plugins)\n}\n","import { isPromise } from '@kubb/core/utils'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { Config, UserConfig } from '@kubb/core'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\n\n/**\n * Converting UserConfig to Config without a change in the object beside the JSON convert.\n */\nexport async function getConfig(result: CosmiconfigResult, args: Args): Promise<Array<Config> | Config> {\n const config = result?.config\n let kubbUserConfig = Promise.resolve(config) as Promise<UserConfig | Array<UserConfig>>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(args)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n\n if (Array.isArray(JSONConfig)) {\n const promises = JSONConfig.map(async (item) => {\n return {\n ...item,\n plugins: item.plugins ? await getPlugins(item.plugins) : undefined,\n }\n }) as unknown as Array<Promise<Config>>\n\n return Promise.all(promises)\n }\n\n JSONConfig = {\n ...JSONConfig,\n plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : undefined,\n }\n\n return JSONConfig as Config\n}\n","import { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\n\nimport type { UserConfig, defineConfig } from '@kubb/core'\n\nexport type CosmiconfigResult = {\n filepath: string\n isEmpty?: boolean\n config: ReturnType<typeof defineConfig> | UserConfig\n}\n\nconst tsLoader = async (configFile: string) => {\n const jiti = createJiti(import.meta.url, {\n jsx: {\n runtime: 'automatic',\n importSource: '@kubb/react',\n },\n sourceMaps: true,\n })\n\n const mod = await jiti.import(configFile, { default: true })\n\n return mod\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string): Promise<CosmiconfigResult> {\n const searchPlaces = [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n\n `.${moduleName}rc.ts`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.mjs`,\n `.${moduleName}rc.cjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.mjs`,\n `${moduleName}.config.cjs`,\n ]\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n searchPlaces: [\n ...searchPlaces.map((searchPlace) => {\n return `.config/${searchPlace}`\n }),\n ...searchPlaces.map((searchPlace) => {\n return `configs/${searchPlace}`\n }),\n ...searchPlaces,\n ],\n loaders: {\n '.ts': tsLoader,\n },\n })\n\n const result = config ? await explorer.load(config) : await explorer.search()\n\n if (result?.isEmpty || !result || !result.config) {\n throw new Error('Config not defined, create a kubb.config.js or pass through your config with the option --config')\n }\n\n return result as CosmiconfigResult\n}\n","import { createLogger } from '@kubb/core/logger'\nimport { colors } from 'consola/utils'\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', colors.yellow(colors.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (e) {\n logger?.emit('warning', colors.red('Watcher failed'))\n }\n })\n}\n","import { defineCommand, showUsage } from 'citty'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { colors } from 'consola/utils'\n\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\nimport path from 'node:path'\nimport * as process from 'node:process'\nimport { PromiseManager, isInputPath } from '@kubb/core'\nimport { LogMapper, createLogger } from '@kubb/core/logger'\nimport { generate } from '../generate.ts'\nimport { startServer } from '@kubb/ui'\nimport open from 'open'\nimport type { SingleBar } from 'cli-progress'\n\ndeclare global {\n var isDevtoolsEnabled: any\n}\n\nconst args = {\n config: {\n type: 'string',\n description: 'Path to the Kubb config',\n alias: 'c',\n },\n logLevel: {\n type: 'string',\n description: 'Info, silent or debug',\n alias: 'l',\n default: 'info',\n valueHint: 'silent|info|debug',\n },\n watch: {\n type: 'boolean',\n description: 'Watch mode based on the input file',\n alias: 'w',\n default: false,\n },\n debug: {\n type: 'boolean',\n description: 'Override logLevel to debug',\n alias: 'd',\n default: false,\n },\n ui: {\n type: 'boolean',\n description: 'Open ui',\n alias: 'u',\n default: false,\n },\n help: {\n type: 'boolean',\n description: 'Show help',\n alias: 'h',\n default: false,\n },\n} as const satisfies ArgsDef\n\nexport type Args = ParsedArgs<typeof args>\n\nconst command = defineCommand({\n meta: {\n name: 'generate',\n description: \"[input] Generate files based on a 'kubb.config.ts' file\",\n },\n args,\n async run(commandContext) {\n let name = ''\n const progressCache = new Map<string, SingleBar>()\n\n const { args } = commandContext\n\n const input = args._[0]\n\n if (args.help) {\n showUsage(command)\n return\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\n logger.emit('start', 'Loading config')\n\n const result = await getCosmiConfig('kubb', args.config)\n logger.emit('success', `Config loaded(${colors.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\n\n const start = async () => {\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((c) => () => {\n name = c.name || ''\n progressCache.clear()\n\n return generate({\n input,\n config: c,\n args,\n progressCache,\n })\n })\n\n await promiseManager.run('seq', promises)\n return\n }\n\n progressCache.clear()\n\n await generate({\n input,\n config,\n progressCache,\n args,\n })\n\n return\n }\n\n if (args.ui) {\n await startServer(\n {\n stop: () => process.exit(1),\n restart: () => start(),\n getMeta: () => {\n const entries = [...progressCache.entries()]\n\n const percentages = entries.reduce(\n (acc, [key, singleBar]) => {\n acc[key] = singleBar.getProgress()\n\n return acc\n },\n {} as Record<string, number>,\n )\n\n return {\n name,\n percentages,\n }\n },\n },\n (info) => {\n const url = `${info.address}:${info.port}`.replace('::', 'http://localhost')\n logger.consola?.start(`Starting ui on ${url}`)\n\n open(url)\n },\n )\n }\n\n if (args.watch) {\n if (Array.isArray(config)) {\n throw new Error('Cannot use watcher with multiple Configs(array)')\n }\n\n if (isInputPath(config)) {\n return startWatcher([input || config.input.path], async (paths) => {\n await start()\n logger.emit('start', colors.yellow(colors.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"]}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkHEJC6MIF_cjs = require('./chunk-HEJC6MIF.cjs');
|
|
4
4
|
var citty = require('citty');
|
|
5
|
-
var utils = require('
|
|
5
|
+
var utils = require('consola/utils');
|
|
6
|
+
var utils$1 = require('@kubb/core/utils');
|
|
6
7
|
var cosmiconfig = require('cosmiconfig');
|
|
7
8
|
var jiti = require('jiti');
|
|
8
9
|
var logger = require('@kubb/core/logger');
|
|
9
10
|
var path = require('path');
|
|
10
11
|
var process = require('process');
|
|
11
12
|
var core = require('@kubb/core');
|
|
13
|
+
var ui = require('@kubb/ui');
|
|
14
|
+
var open = require('open');
|
|
12
15
|
|
|
13
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
17
|
|
|
@@ -32,15 +35,16 @@ function _interopNamespace(e) {
|
|
|
32
35
|
|
|
33
36
|
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
34
37
|
var process__namespace = /*#__PURE__*/_interopNamespace(process);
|
|
38
|
+
var open__default = /*#__PURE__*/_interopDefault(open);
|
|
35
39
|
|
|
36
40
|
// src/commands/generate.ts
|
|
37
|
-
|
|
41
|
+
chunkHEJC6MIF_cjs.init_cjs_shims();
|
|
38
42
|
|
|
39
43
|
// src/utils/getConfig.ts
|
|
40
|
-
|
|
44
|
+
chunkHEJC6MIF_cjs.init_cjs_shims();
|
|
41
45
|
|
|
42
46
|
// src/utils/getPlugins.ts
|
|
43
|
-
|
|
47
|
+
chunkHEJC6MIF_cjs.init_cjs_shims();
|
|
44
48
|
function isJSONPlugins(plugins) {
|
|
45
49
|
return !!plugins?.some((plugin) => {
|
|
46
50
|
return Array.isArray(plugin) && typeof plugin?.at(0) === "string";
|
|
@@ -65,7 +69,7 @@ async function getConfig(result, args2) {
|
|
|
65
69
|
let kubbUserConfig = Promise.resolve(config);
|
|
66
70
|
if (typeof config === "function") {
|
|
67
71
|
const possiblePromise = config(args2);
|
|
68
|
-
if (utils.isPromise(possiblePromise)) {
|
|
72
|
+
if (utils$1.isPromise(possiblePromise)) {
|
|
69
73
|
kubbUserConfig = possiblePromise;
|
|
70
74
|
}
|
|
71
75
|
kubbUserConfig = Promise.resolve(possiblePromise);
|
|
@@ -88,9 +92,9 @@ async function getConfig(result, args2) {
|
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
// src/utils/getCosmiConfig.ts
|
|
91
|
-
|
|
95
|
+
chunkHEJC6MIF_cjs.init_cjs_shims();
|
|
92
96
|
var tsLoader = async (configFile) => {
|
|
93
|
-
const jiti$1 = jiti.createJiti(
|
|
97
|
+
const jiti$1 = jiti.createJiti(chunkHEJC6MIF_cjs.importMetaUrl, {
|
|
94
98
|
jsx: {
|
|
95
99
|
runtime: "automatic",
|
|
96
100
|
importSource: "@kubb/react"
|
|
@@ -139,7 +143,7 @@ async function getCosmiConfig(moduleName, config) {
|
|
|
139
143
|
}
|
|
140
144
|
|
|
141
145
|
// src/utils/watcher.ts
|
|
142
|
-
|
|
146
|
+
chunkHEJC6MIF_cjs.init_cjs_shims();
|
|
143
147
|
async function startWatcher(path2, cb) {
|
|
144
148
|
const { watch } = await import('chokidar');
|
|
145
149
|
const logger$1 = logger.createLogger();
|
|
@@ -149,11 +153,11 @@ async function startWatcher(path2, cb) {
|
|
|
149
153
|
ignored
|
|
150
154
|
});
|
|
151
155
|
watcher.on("all", (type, file) => {
|
|
152
|
-
logger$1?.emit("info",
|
|
156
|
+
logger$1?.emit("info", utils.colors.yellow(utils.colors.bold(`Change detected: ${type} ${file}`)));
|
|
153
157
|
try {
|
|
154
158
|
cb(path2);
|
|
155
159
|
} catch (e) {
|
|
156
|
-
logger$1?.emit("warning",
|
|
160
|
+
logger$1?.emit("warning", utils.colors.red("Watcher failed"));
|
|
157
161
|
}
|
|
158
162
|
});
|
|
159
163
|
}
|
|
@@ -182,6 +186,12 @@ var args = {
|
|
|
182
186
|
alias: "d",
|
|
183
187
|
default: false
|
|
184
188
|
},
|
|
189
|
+
ui: {
|
|
190
|
+
type: "boolean",
|
|
191
|
+
description: "Open ui",
|
|
192
|
+
alias: "u",
|
|
193
|
+
default: false
|
|
194
|
+
},
|
|
185
195
|
help: {
|
|
186
196
|
type: "boolean",
|
|
187
197
|
description: "Show help",
|
|
@@ -196,6 +206,8 @@ var command = citty.defineCommand({
|
|
|
196
206
|
},
|
|
197
207
|
args,
|
|
198
208
|
async run(commandContext) {
|
|
209
|
+
let name = "";
|
|
210
|
+
const progressCache = /* @__PURE__ */ new Map();
|
|
199
211
|
const { args: args2 } = commandContext;
|
|
200
212
|
const input = args2._[0];
|
|
201
213
|
if (args2.help) {
|
|
@@ -211,32 +223,79 @@ var command = citty.defineCommand({
|
|
|
211
223
|
});
|
|
212
224
|
logger$1.emit("start", "Loading config");
|
|
213
225
|
const result = await getCosmiConfig("kubb", args2.config);
|
|
214
|
-
logger$1.emit("success", `Config loaded(${
|
|
226
|
+
logger$1.emit("success", `Config loaded(${utils.colors.dim(path__default.default.relative(process__namespace.cwd(), result.filepath))})`);
|
|
215
227
|
const config = await getConfig(result, args2);
|
|
228
|
+
const start = async () => {
|
|
229
|
+
if (Array.isArray(config)) {
|
|
230
|
+
const promiseManager = new core.PromiseManager();
|
|
231
|
+
const promises = config.map((c) => () => {
|
|
232
|
+
name = c.name || "";
|
|
233
|
+
progressCache.clear();
|
|
234
|
+
return chunkHEJC6MIF_cjs.generate({
|
|
235
|
+
input,
|
|
236
|
+
config: c,
|
|
237
|
+
args: args2,
|
|
238
|
+
progressCache
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
await promiseManager.run("seq", promises);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
progressCache.clear();
|
|
245
|
+
await chunkHEJC6MIF_cjs.generate({
|
|
246
|
+
input,
|
|
247
|
+
config,
|
|
248
|
+
progressCache,
|
|
249
|
+
args: args2
|
|
250
|
+
});
|
|
251
|
+
return;
|
|
252
|
+
};
|
|
253
|
+
if (args2.ui) {
|
|
254
|
+
await ui.startServer(
|
|
255
|
+
{
|
|
256
|
+
stop: () => process__namespace.exit(1),
|
|
257
|
+
restart: () => start(),
|
|
258
|
+
getMeta: () => {
|
|
259
|
+
const entries = [...progressCache.entries()];
|
|
260
|
+
const percentages = entries.reduce(
|
|
261
|
+
(acc, [key, singleBar]) => {
|
|
262
|
+
acc[key] = singleBar.getProgress();
|
|
263
|
+
return acc;
|
|
264
|
+
},
|
|
265
|
+
{}
|
|
266
|
+
);
|
|
267
|
+
return {
|
|
268
|
+
name,
|
|
269
|
+
percentages
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
(info) => {
|
|
274
|
+
const url = `${info.address}:${info.port}`.replace("::", "http://localhost");
|
|
275
|
+
logger$1.consola?.start(`Starting ui on ${url}`);
|
|
276
|
+
open__default.default(url);
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
}
|
|
216
280
|
if (args2.watch) {
|
|
217
281
|
if (Array.isArray(config)) {
|
|
218
282
|
throw new Error("Cannot use watcher with multiple Configs(array)");
|
|
219
283
|
}
|
|
220
284
|
if (core.isInputPath(config)) {
|
|
221
285
|
return startWatcher([input || config.input.path], async (paths) => {
|
|
222
|
-
await
|
|
223
|
-
logger$1.emit("start",
|
|
286
|
+
await start();
|
|
287
|
+
logger$1.emit("start", utils.colors.yellow(utils.colors.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
224
288
|
});
|
|
225
289
|
}
|
|
226
290
|
}
|
|
227
|
-
|
|
228
|
-
const promiseManager = new core.PromiseManager();
|
|
229
|
-
const promises = config.map((item) => () => chunkPUR4OZA2_cjs.generate({ input, config: item, args: args2 }));
|
|
230
|
-
return promiseManager.run("seq", promises);
|
|
231
|
-
}
|
|
232
|
-
await chunkPUR4OZA2_cjs.generate({ input, config, args: args2 });
|
|
291
|
+
await start();
|
|
233
292
|
if (globalThis.isDevtoolsEnabled) {
|
|
234
|
-
const
|
|
293
|
+
const canRestart = await logger$1.consola?.prompt("Restart(could be used to validate the profiler)?", {
|
|
235
294
|
type: "confirm",
|
|
236
295
|
initial: false
|
|
237
296
|
});
|
|
238
|
-
if (
|
|
239
|
-
await
|
|
297
|
+
if (canRestart) {
|
|
298
|
+
await start();
|
|
240
299
|
} else {
|
|
241
300
|
process__namespace.exit(1);
|
|
242
301
|
}
|
|
@@ -246,5 +305,5 @@ var command = citty.defineCommand({
|
|
|
246
305
|
var generate_default = command;
|
|
247
306
|
|
|
248
307
|
module.exports = generate_default;
|
|
249
|
-
//# sourceMappingURL=generate-
|
|
250
|
-
//# sourceMappingURL=generate-
|
|
308
|
+
//# sourceMappingURL=generate-RGDLVOFP.cjs.map
|
|
309
|
+
//# sourceMappingURL=generate-RGDLVOFP.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/generate.ts","../src/utils/getConfig.ts","../src/utils/getPlugins.ts","../src/utils/getCosmiConfig.ts","../src/utils/watcher.ts"],"names":["init_cjs_shims","args","isPromise","jiti","createJiti","importMetaUrl","cosmiconfig","path","logger","createLogger","colors","defineCommand","showUsage","LogMapper","process","PromiseManager","generate","startServer","open","isInputPath"],"mappings":"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","file":"generate-RGDLVOFP.cjs","sourcesContent":["import { defineCommand, showUsage } from 'citty'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { colors } from 'consola/utils'\n\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\nimport path from 'node:path'\nimport * as process from 'node:process'\nimport { PromiseManager, isInputPath } from '@kubb/core'\nimport { LogMapper, createLogger } from '@kubb/core/logger'\nimport { generate } from '../generate.ts'\nimport { startServer } from '@kubb/ui'\nimport open from 'open'\nimport type { SingleBar } from 'cli-progress'\n\ndeclare global {\n var isDevtoolsEnabled: any\n}\n\nconst args = {\n config: {\n type: 'string',\n description: 'Path to the Kubb config',\n alias: 'c',\n },\n logLevel: {\n type: 'string',\n description: 'Info, silent or debug',\n alias: 'l',\n default: 'info',\n valueHint: 'silent|info|debug',\n },\n watch: {\n type: 'boolean',\n description: 'Watch mode based on the input file',\n alias: 'w',\n default: false,\n },\n debug: {\n type: 'boolean',\n description: 'Override logLevel to debug',\n alias: 'd',\n default: false,\n },\n ui: {\n type: 'boolean',\n description: 'Open ui',\n alias: 'u',\n default: false,\n },\n help: {\n type: 'boolean',\n description: 'Show help',\n alias: 'h',\n default: false,\n },\n} as const satisfies ArgsDef\n\nexport type Args = ParsedArgs<typeof args>\n\nconst command = defineCommand({\n meta: {\n name: 'generate',\n description: \"[input] Generate files based on a 'kubb.config.ts' file\",\n },\n args,\n async run(commandContext) {\n let name = ''\n const progressCache = new Map<string, SingleBar>()\n\n const { args } = commandContext\n\n const input = args._[0]\n\n if (args.help) {\n showUsage(command)\n return\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\n logger.emit('start', 'Loading config')\n\n const result = await getCosmiConfig('kubb', args.config)\n logger.emit('success', `Config loaded(${colors.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\n\n const start = async () => {\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((c) => () => {\n name = c.name || ''\n progressCache.clear()\n\n return generate({\n input,\n config: c,\n args,\n progressCache,\n })\n })\n\n await promiseManager.run('seq', promises)\n return\n }\n\n progressCache.clear()\n\n await generate({\n input,\n config,\n progressCache,\n args,\n })\n\n return\n }\n\n if (args.ui) {\n await startServer(\n {\n stop: () => process.exit(1),\n restart: () => start(),\n getMeta: () => {\n const entries = [...progressCache.entries()]\n\n const percentages = entries.reduce(\n (acc, [key, singleBar]) => {\n acc[key] = singleBar.getProgress()\n\n return acc\n },\n {} as Record<string, number>,\n )\n\n return {\n name,\n percentages,\n }\n },\n },\n (info) => {\n const url = `${info.address}:${info.port}`.replace('::', 'http://localhost')\n logger.consola?.start(`Starting ui on ${url}`)\n\n open(url)\n },\n )\n }\n\n if (args.watch) {\n if (Array.isArray(config)) {\n throw new Error('Cannot use watcher with multiple Configs(array)')\n }\n\n if (isInputPath(config)) {\n return startWatcher([input || config.input.path], async (paths) => {\n await start()\n logger.emit('start', colors.yellow(colors.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","import { isPromise } from '@kubb/core/utils'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { Config, UserConfig } from '@kubb/core'\nimport type { Args } from '../commands/generate.ts'\nimport type { CosmiconfigResult } from './getCosmiConfig.ts'\n\n/**\n * Converting UserConfig to Config without a change in the object beside the JSON convert.\n */\nexport async function getConfig(result: CosmiconfigResult, args: Args): Promise<Array<Config> | Config> {\n const config = result?.config\n let kubbUserConfig = Promise.resolve(config) as Promise<UserConfig | Array<UserConfig>>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(args)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n\n if (Array.isArray(JSONConfig)) {\n const promises = JSONConfig.map(async (item) => {\n return {\n ...item,\n plugins: item.plugins ? await getPlugins(item.plugins) : undefined,\n }\n }) as unknown as Array<Promise<Config>>\n\n return Promise.all(promises)\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 { 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 { cosmiconfig } from 'cosmiconfig'\nimport { createJiti } from 'jiti'\n\nimport type { UserConfig, defineConfig } from '@kubb/core'\n\nexport type CosmiconfigResult = {\n filepath: string\n isEmpty?: boolean\n config: ReturnType<typeof defineConfig> | UserConfig\n}\n\nconst tsLoader = async (configFile: string) => {\n const jiti = createJiti(import.meta.url, {\n jsx: {\n runtime: 'automatic',\n importSource: '@kubb/react',\n },\n sourceMaps: true,\n })\n\n const mod = await jiti.import(configFile, { default: true })\n\n return mod\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string): Promise<CosmiconfigResult> {\n const searchPlaces = [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n\n `.${moduleName}rc.ts`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.mjs`,\n `.${moduleName}rc.cjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.mjs`,\n `${moduleName}.config.cjs`,\n ]\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n searchPlaces: [\n ...searchPlaces.map((searchPlace) => {\n return `.config/${searchPlace}`\n }),\n ...searchPlaces.map((searchPlace) => {\n return `configs/${searchPlace}`\n }),\n ...searchPlaces,\n ],\n loaders: {\n '.ts': tsLoader,\n },\n })\n\n const result = config ? await explorer.load(config) : await explorer.search()\n\n if (result?.isEmpty || !result || !result.config) {\n throw new Error('Config not defined, create a kubb.config.js or pass through your config with the option --config')\n }\n\n return result as CosmiconfigResult\n}\n","import { createLogger } from '@kubb/core/logger'\nimport { colors } from 'consola/utils'\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', colors.yellow(colors.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (e) {\n logger?.emit('warning', colors.red('Watcher failed'))\n }\n })\n}\n"]}
|