@kubb/cli 3.0.0-alpha.2 → 3.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-NKSXZ2SM.cjs → chunk-7CMTKETP.cjs} +136 -3108
- package/dist/chunk-7CMTKETP.cjs.map +1 -0
- package/dist/{chunk-VGYRBGKV.js → chunk-Y35VLSP2.js} +67 -94
- package/dist/chunk-Y35VLSP2.js.map +1 -0
- package/dist/{generate-IC27XOTA.js → generate-FHYQHKKR.js} +19 -19
- package/dist/generate-FHYQHKKR.js.map +1 -0
- package/dist/{generate-SW6IGE4J.cjs → generate-ZGEX2WSJ.cjs} +27 -27
- package/dist/generate-ZGEX2WSJ.cjs.map +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
- package/src/commands/generate.ts +14 -12
- package/src/generate.ts +63 -53
- package/src/utils/Writables.ts +43 -0
- package/src/utils/executeHooks.ts +17 -31
- package/src/utils/getPlugins.ts +0 -10
- package/src/utils/getSummary.ts +8 -14
- package/src/utils/watcher.ts +4 -6
- package/dist/chunk-NKSXZ2SM.cjs.map +0 -1
- package/dist/chunk-VGYRBGKV.js.map +0 -1
- package/dist/generate-IC27XOTA.js.map +0 -1
- package/dist/generate-SW6IGE4J.cjs.map +0 -1
- package/src/utils/OraWritable.ts +0 -22
- package/src/utils/spinner.ts +0 -5
|
@@ -1,74 +1,59 @@
|
|
|
1
|
-
// src/utils/spinner.ts
|
|
2
|
-
import ora from "ora";
|
|
3
|
-
var spinner = ora({
|
|
4
|
-
spinner: "clock"
|
|
5
|
-
});
|
|
6
|
-
|
|
7
1
|
// src/generate.ts
|
|
8
|
-
import {
|
|
2
|
+
import { createLogger } from "@kubb/core/logger";
|
|
9
3
|
import c4 from "tinyrainbow";
|
|
10
|
-
import {
|
|
11
|
-
import { createConsola } from "consola";
|
|
4
|
+
import { safeBuild } from "@kubb/core";
|
|
12
5
|
|
|
13
6
|
// src/utils/executeHooks.ts
|
|
14
|
-
import { LogLevel } from "@kubb/core/logger";
|
|
15
7
|
import { execa } from "execa";
|
|
16
8
|
import { parseArgsStringToArgv } from "string-argv";
|
|
17
9
|
import c2 from "tinyrainbow";
|
|
18
10
|
|
|
19
|
-
// src/utils/
|
|
11
|
+
// src/utils/Writables.ts
|
|
20
12
|
import { Writable } from "stream";
|
|
21
13
|
import c from "tinyrainbow";
|
|
22
|
-
var
|
|
23
|
-
constructor(
|
|
14
|
+
var ConsolaWritable = class extends Writable {
|
|
15
|
+
constructor(consola, command, opts) {
|
|
24
16
|
super(opts);
|
|
25
17
|
this.command = command;
|
|
26
|
-
this.
|
|
18
|
+
this.consola = consola;
|
|
27
19
|
}
|
|
28
20
|
_write(chunk, _encoding, callback) {
|
|
29
|
-
this.
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
if (this.command) {
|
|
22
|
+
this.consola.log(`${c.bold(c.blue(this.command))}: ${chunk?.toString()}`);
|
|
23
|
+
} else {
|
|
24
|
+
this.consola.log(`${c.bold(c.blue(this.command))}: ${chunk?.toString()}`);
|
|
25
|
+
}
|
|
32
26
|
callback();
|
|
33
27
|
}
|
|
34
28
|
};
|
|
35
29
|
|
|
36
30
|
// src/utils/executeHooks.ts
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (logLevel === LogLevel.silent) {
|
|
43
|
-
spinner.start("Executing hooks");
|
|
44
|
-
}
|
|
45
|
-
const executers = commands.map(async (command) => {
|
|
46
|
-
const oraWritable = new OraWritable(spinner, command);
|
|
31
|
+
import { LogMapper } from "@kubb/core/logger";
|
|
32
|
+
async function executeHooks({ hooks, logger }) {
|
|
33
|
+
const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean);
|
|
34
|
+
const executors = commands.map(async (command) => {
|
|
35
|
+
const consolaWritable = new ConsolaWritable(logger.consola, command);
|
|
47
36
|
const abortController = new AbortController();
|
|
48
37
|
const [cmd, ..._args] = [...parseArgsStringToArgv(command)];
|
|
49
38
|
if (!cmd) {
|
|
50
39
|
return null;
|
|
51
40
|
}
|
|
52
|
-
|
|
41
|
+
logger.emit("start", `Executing hook ${logger.logLevel !== LogMapper.silent ? c2.dim(command) : ""}`);
|
|
53
42
|
const subProcess = await execa(cmd, _args, {
|
|
54
43
|
detached: true,
|
|
55
44
|
cancelSignal: abortController.signal,
|
|
56
|
-
stdout: ["pipe",
|
|
45
|
+
stdout: logger.logLevel === LogMapper.silent ? void 0 : ["pipe", consolaWritable]
|
|
57
46
|
});
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(subProcess.stdout);
|
|
63
|
-
}
|
|
47
|
+
logger.emit("success", `Executing hook ${logger.logLevel !== LogMapper.silent ? c2.dim(command) : ""}`);
|
|
48
|
+
if (subProcess) {
|
|
49
|
+
logger.emit("info", `Executing hooks
|
|
50
|
+
${subProcess.stdout}`);
|
|
64
51
|
}
|
|
65
|
-
|
|
52
|
+
consolaWritable.destroy();
|
|
66
53
|
return { subProcess, abort: abortController.abort.bind(abortController) };
|
|
67
54
|
}).filter(Boolean);
|
|
68
|
-
await Promise.all(
|
|
69
|
-
|
|
70
|
-
spinner.succeed("Executing hooks");
|
|
71
|
-
}
|
|
55
|
+
await Promise.all(executors);
|
|
56
|
+
logger.emit("success", "Executing hooks");
|
|
72
57
|
}
|
|
73
58
|
|
|
74
59
|
// src/utils/getErrorCauses.ts
|
|
@@ -96,10 +81,9 @@ function parseHrtimeToSeconds(hrtime) {
|
|
|
96
81
|
}
|
|
97
82
|
|
|
98
83
|
// src/utils/getSummary.ts
|
|
99
|
-
function getSummary({ pluginManager, status,
|
|
100
|
-
const { logLevel } = logger;
|
|
84
|
+
function getSummary({ pluginManager, status, hrStart, config, logger }) {
|
|
101
85
|
const logs = [];
|
|
102
|
-
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(
|
|
86
|
+
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart));
|
|
103
87
|
const buildStartPlugins = pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
104
88
|
const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === "buildEnd" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
105
89
|
const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
@@ -117,12 +101,10 @@ function getSummary({ pluginManager, status, hrstart, config, logger }) {
|
|
|
117
101
|
return 0;
|
|
118
102
|
});
|
|
119
103
|
const meta = {
|
|
120
|
-
name: config.name,
|
|
121
104
|
plugins: status === "success" ? `${c3.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total` : `${c3.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,
|
|
122
105
|
pluginsFailed: status === "failed" ? failedPlugins?.map((name) => randomCliColour(name))?.join(", ") : void 0,
|
|
123
106
|
filesCreated: files.length,
|
|
124
|
-
time: c3.yellow(`${elapsedSeconds}s`),
|
|
125
|
-
endTime: c3.yellow(Date()),
|
|
107
|
+
time: `${c3.yellow(`${elapsedSeconds}s`)} - finished at ${c3.yellow((/* @__PURE__ */ new Date()).toLocaleString("en-GB", { timeZone: "UTC" }))}`,
|
|
126
108
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root
|
|
127
109
|
};
|
|
128
110
|
logger.emit("debug", ["\nGenerated files:\n"]);
|
|
@@ -132,14 +114,11 @@ function getSummary({ pluginManager, status, hrstart, config, logger }) {
|
|
|
132
114
|
);
|
|
133
115
|
logs.push(
|
|
134
116
|
[
|
|
135
|
-
["
|
|
136
|
-
[
|
|
137
|
-
[` ${c3.bold("Plugins:")} ${meta.plugins}`, true],
|
|
138
|
-
[` ${c3.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
|
|
117
|
+
[`${c3.bold("Plugins:")} ${meta.plugins}`, true],
|
|
118
|
+
[`${c3.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
|
|
139
119
|
[`${c3.bold("Generated:")} ${meta.filesCreated} files`, true],
|
|
140
|
-
[
|
|
141
|
-
[
|
|
142
|
-
[` ${c3.bold("Output:")} ${meta.output}`, true]
|
|
120
|
+
[`${c3.bold("Time:")} ${meta.time}`, true],
|
|
121
|
+
[`${c3.bold("Output:")} ${meta.output}`, true]
|
|
143
122
|
].map((item) => {
|
|
144
123
|
if (item.at(1)) {
|
|
145
124
|
return item.at(0);
|
|
@@ -167,38 +146,20 @@ async function writeLog(data) {
|
|
|
167
146
|
}
|
|
168
147
|
|
|
169
148
|
// src/generate.ts
|
|
149
|
+
import { LogMapper as LogMapper2 } from "@kubb/core/logger";
|
|
150
|
+
import { MultiBar, Presets } from "cli-progress";
|
|
170
151
|
async function generate({ input, config, args }) {
|
|
171
|
-
const logLevel = args.logLevel ||
|
|
152
|
+
const logLevel = LogMapper2[args.logLevel] || 3;
|
|
172
153
|
const logger = createLogger({
|
|
173
154
|
logLevel,
|
|
174
|
-
name: config.name
|
|
175
|
-
spinner,
|
|
176
|
-
consola: createConsola({
|
|
177
|
-
level: LogMapper[logLevel] || 3
|
|
178
|
-
})
|
|
155
|
+
name: config.name
|
|
179
156
|
});
|
|
180
157
|
logger.on("debug", async (messages) => {
|
|
181
|
-
|
|
182
|
-
await writeLog(messages.join("\n"));
|
|
183
|
-
}
|
|
158
|
+
await writeLog(messages.join("\n"));
|
|
184
159
|
});
|
|
185
|
-
logger.consola?.wrapConsole();
|
|
186
|
-
if (logger.name) {
|
|
187
|
-
spinner.prefixText = randomCliColour2(logger.name);
|
|
188
|
-
}
|
|
189
|
-
const hrstart = process.hrtime();
|
|
190
|
-
if (args.logLevel === LogLevel2.debug) {
|
|
191
|
-
const { performance, PerformanceObserver } = await import("perf_hooks");
|
|
192
|
-
const performanceOpserver = new PerformanceObserver((items) => {
|
|
193
|
-
const message = `${items.getEntries()[0]?.duration.toFixed(0)}ms`;
|
|
194
|
-
spinner.suffixText = c4.yellow(message);
|
|
195
|
-
performance.clearMarks();
|
|
196
|
-
});
|
|
197
|
-
performanceOpserver.observe({ type: "measure" });
|
|
198
|
-
}
|
|
199
160
|
const { root = process.cwd(), ...userConfig } = config;
|
|
200
161
|
const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
|
|
201
|
-
|
|
162
|
+
logger.emit("start", `\u{1F680} Building ${logLevel !== LogMapper2.silent ? c4.dim(inputPath) : ""}`);
|
|
202
163
|
const definedConfig = {
|
|
203
164
|
root,
|
|
204
165
|
...userConfig,
|
|
@@ -211,6 +172,7 @@ async function generate({ input, config, args }) {
|
|
|
211
172
|
...userConfig.output
|
|
212
173
|
}
|
|
213
174
|
};
|
|
175
|
+
const hrStart = process.hrtime();
|
|
214
176
|
const { pluginManager, error } = await safeBuild({
|
|
215
177
|
config: definedConfig,
|
|
216
178
|
logger
|
|
@@ -219,34 +181,45 @@ async function generate({ input, config, args }) {
|
|
|
219
181
|
pluginManager,
|
|
220
182
|
config: definedConfig,
|
|
221
183
|
status: error ? "failed" : "success",
|
|
222
|
-
|
|
184
|
+
hrStart,
|
|
223
185
|
logger
|
|
224
186
|
});
|
|
225
|
-
if (error) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
187
|
+
if (error && logger.consola) {
|
|
188
|
+
logger.consola.error(`\u{1F680} Build failed ${logLevel !== LogMapper2.silent ? c4.dim(inputPath) : ""}`);
|
|
189
|
+
logger.consola.box({
|
|
190
|
+
title: `${config.name || ""}`,
|
|
191
|
+
message: summary.join(""),
|
|
192
|
+
style: {
|
|
193
|
+
padding: 2,
|
|
194
|
+
borderColor: "red",
|
|
195
|
+
borderStyle: "rounded"
|
|
196
|
+
}
|
|
197
|
+
});
|
|
233
198
|
const errors = getErrorCauses([error]);
|
|
234
|
-
if (logger.consola && errors.length && logLevel ===
|
|
199
|
+
if (logger.consola && errors.length && logLevel === LogMapper2.debug) {
|
|
235
200
|
errors.forEach((err) => {
|
|
236
|
-
logger.consola
|
|
201
|
+
logger.consola?.error(err);
|
|
237
202
|
});
|
|
238
203
|
}
|
|
239
204
|
logger.consola?.error(error);
|
|
240
205
|
process.exit(0);
|
|
241
206
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
207
|
+
if (config.hooks) {
|
|
208
|
+
await executeHooks({ hooks: config.hooks, logger });
|
|
209
|
+
}
|
|
210
|
+
logger.consola?.success(`\u{1F680} Build completed ${logLevel !== LogMapper2.silent ? c4.dim(inputPath) : ""}`);
|
|
211
|
+
logger.consola?.box({
|
|
212
|
+
title: `${config.name || ""}`,
|
|
213
|
+
message: summary.join(""),
|
|
214
|
+
style: {
|
|
215
|
+
padding: 2,
|
|
216
|
+
borderColor: "green",
|
|
217
|
+
borderStyle: "rounded"
|
|
218
|
+
}
|
|
219
|
+
});
|
|
246
220
|
}
|
|
247
221
|
|
|
248
222
|
export {
|
|
249
|
-
spinner,
|
|
250
223
|
generate
|
|
251
224
|
};
|
|
252
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-Y35VLSP2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/generate.ts","../src/utils/executeHooks.ts","../src/utils/Writables.ts","../src/utils/getErrorCauses.ts","../src/utils/getSummary.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/writeLog.ts"],"sourcesContent":["import { createLogger } from '@kubb/core/logger'\n\nimport c from 'tinyrainbow'\n\nimport { type Config, safeBuild } from '@kubb/core'\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'\nimport { writeLog } from './utils/writeLog.ts'\nimport { LogMapper } from '@kubb/core/logger'\n\nimport { MultiBar, Presets } from 'cli-progress'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n}\n\nexport function createMultiProgressBar() {\n return new MultiBar(\n {\n format: 'progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}',\n barsize: 40,\n fps: 5,\n stream: process.stderr,\n clearOnComplete: true,\n },\n Presets.shades_grey,\n )\n}\n\nexport async function generate({ input, config, args }: GenerateProps): Promise<void> {\n const logLevel = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n const logger = createLogger({\n logLevel,\n name: config.name,\n })\n\n // const progress = createMultiProgressBar()\n // let progressFiles: any\n //\n // logger.on('progress', (count, size) => {\n // if (count === 0) {\n // progressFiles = progress.create(size, 0)\n // }\n // progressFiles.update(count)\n // if (count === size) {\n // progressFiles.stop()\n // }\n // })\n\n logger.on('debug', async (messages: string[]) => {\n await writeLog(messages.join('\\n'))\n })\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n logger.emit('start', `🚀 Building ${logLevel !== LogMapper.silent ? c.dim(inputPath) : ''}`)\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 ...userConfig.output,\n },\n }\n const hrStart = process.hrtime()\n const { pluginManager, error } = await safeBuild({\n config: definedConfig,\n logger,\n })\n\n const summary = getSummary({\n pluginManager,\n config: definedConfig,\n status: error ? 'failed' : 'success',\n hrStart,\n logger,\n })\n\n if (error && logger.consola) {\n logger.consola.error(`🚀 Build failed ${logLevel !== LogMapper.silent ? c.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 && 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?.success(`🚀 Build completed ${logLevel !== LogMapper.silent ? c.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","import type { Logger } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport c from 'tinyrainbow'\n\nimport { ConsolaWritable } from './Writables.ts'\n\nimport type { Config } from '@kubb/core'\nimport { LogMapper } from '@kubb/core/logger'\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 const executors = commands\n .map(async (command) => {\n const consolaWritable = new ConsolaWritable(logger.consola!, command)\n const abortController = new AbortController()\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n return null\n }\n\n logger.emit('start', `Executing hook ${logger.logLevel !== LogMapper.silent ? c.dim(command) : ''}`)\n\n const subProcess = await execa(cmd, _args, {\n detached: true,\n cancelSignal: abortController.signal,\n stdout: logger.logLevel === LogMapper.silent ? undefined : ['pipe', consolaWritable],\n })\n\n logger.emit('success', `Executing hook ${logger.logLevel !== LogMapper.silent ? c.dim(command) : ''}`)\n\n if (subProcess) {\n logger.emit('info', `Executing hooks\\n ${subProcess.stdout}`)\n }\n\n consolaWritable.destroy()\n return { subProcess, abort: abortController.abort.bind(abortController) }\n })\n .filter(Boolean)\n\n await Promise.all(executors)\n\n logger.emit('success', 'Executing hooks')\n}\n","import { Writable } from 'node:stream'\n\nimport c from 'tinyrainbow'\n\nimport type { WritableOptions } from 'node:stream'\nimport type { ConsolaInstance } from 'consola'\n\nexport class BasicWritables extends Writable {\n #frame = 'Loading ...'\n set frame(frame: string) {\n this.#frame = frame\n }\n get frame() {\n return this.#frame\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n if (chunk?.toString() !== this.frame && chunk?.toString()) {\n this.frame = chunk?.toString()\n }\n\n callback()\n }\n}\n\nexport class ConsolaWritable extends Writable {\n consola: ConsolaInstance\n command: string\n constructor(consola: ConsolaInstance, 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 if (this.command) {\n this.consola.log(`${c.bold(c.blue(this.command))}: ${chunk?.toString()}`)\n } else {\n this.consola.log(`${c.bold(c.blue(this.command))}: ${chunk?.toString()}`)\n }\n\n callback()\n }\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","import path from 'node:path'\n\nimport { randomCliColour } from '@kubb/core/logger'\n\nimport c from 'tinyrainbow'\n\nimport { parseHrtimeToSeconds } from './parseHrtimeToSeconds.ts'\n\nimport type { Config, PluginManager } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\n\ntype SummaryProps = {\n pluginManager: PluginManager\n status: 'success' | 'failed'\n hrStart: [number, number]\n config: Config\n logger: Logger\n}\n\nexport function getSummary({ pluginManager, status, hrStart, config, logger }: SummaryProps): string[] {\n const logs: 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 const files = pluginManager.fileManager.files.sort((a, b) => {\n if (!a.meta?.pluginKey?.[0] || !b.meta?.pluginKey?.[0]) {\n return 0\n }\n if (a.meta?.pluginKey?.[0]?.length < b.meta?.pluginKey?.[0]?.length) {\n return 1\n }\n if (a.meta?.pluginKey?.[0]?.length > b.meta?.pluginKey?.[0]?.length) {\n return -1\n }\n return 0\n })\n\n const meta = {\n plugins:\n status === 'success'\n ? `${c.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${c.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomCliColour(name))?.join(', ') : undefined,\n filesCreated: files.length,\n time: `${c.yellow(`${elapsedSeconds}s`)} - finished at ${c.yellow(new Date().toLocaleString('en-GB', { timeZone: 'UTC' }))}`,\n output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root,\n } as const\n\n logger.emit('debug', ['\\nGenerated files:\\n'])\n logger.emit(\n 'debug',\n files.map((file) => `${randomCliColour(JSON.stringify(file.meta?.pluginKey))} ${file.path}`),\n )\n\n logs.push(\n [\n [`${c.bold('Plugins:')} ${meta.plugins}`, true],\n [`${c.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${c.bold('Generated:')} ${meta.filesCreated} files`, true],\n [`${c.bold('Time:')} ${meta.time}`, true],\n [`${c.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","export function parseHrtimeToSeconds(hrtime: [number, number]): string {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import { resolve } from 'node:path'\nimport { read, write } from '@kubb/fs'\n\nexport async function writeLog(data: string): Promise<string | undefined> {\n if (data.trim() === '') {\n return undefined\n }\n const path = resolve(process.cwd(), 'kubb-log.log')\n let previousLogs = ''\n\n try {\n previousLogs = await read(resolve(path))\n } catch (_err) {\n /* empty */\n }\n\n return write(path, [previousLogs, data.trim()].filter(Boolean).join('\\n\\n\\n'), { sanity: false })\n}\n"],"mappings":"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","names":["c","c","c","c","c","path","LogMapper","LogMapper","c"]}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
-
generate
|
|
3
|
-
|
|
4
|
-
} from "./chunk-VGYRBGKV.js";
|
|
2
|
+
generate
|
|
3
|
+
} from "./chunk-Y35VLSP2.js";
|
|
5
4
|
|
|
6
5
|
// src/commands/generate.ts
|
|
7
|
-
import { LogLevel } from "@kubb/core/logger";
|
|
8
6
|
import { defineCommand, showUsage } from "citty";
|
|
9
7
|
import { execa } from "execa";
|
|
10
8
|
import c2 from "tinyrainbow";
|
|
11
|
-
import path from "path";
|
|
12
9
|
|
|
13
10
|
// src/utils/getConfig.ts
|
|
14
11
|
import { isPromise } from "@kubb/core/utils";
|
|
15
12
|
|
|
16
13
|
// src/utils/getPlugins.ts
|
|
17
|
-
import { PackageManager } from "@kubb/core";
|
|
18
14
|
function isJSONPlugins(plugins) {
|
|
19
15
|
return !!plugins?.some((plugin) => {
|
|
20
16
|
return Array.isArray(plugin) && typeof plugin?.at(0) === "string";
|
|
@@ -111,20 +107,21 @@ async function getCosmiConfig(moduleName, config) {
|
|
|
111
107
|
|
|
112
108
|
// src/utils/watcher.ts
|
|
113
109
|
import c from "tinyrainbow";
|
|
110
|
+
import { createLogger } from "@kubb/core/logger";
|
|
114
111
|
async function startWatcher(path2, cb) {
|
|
115
112
|
const { watch } = await import("chokidar");
|
|
116
113
|
const ignored = ["**/{.git,node_modules}/**"];
|
|
114
|
+
const logger = createLogger();
|
|
117
115
|
const watcher = watch(path2, {
|
|
118
116
|
ignorePermissionErrors: true,
|
|
119
117
|
ignored
|
|
120
118
|
});
|
|
121
119
|
watcher.on("all", (type, file) => {
|
|
122
|
-
|
|
123
|
-
spinner.spinner = "clock";
|
|
120
|
+
logger.emit("info", c.yellow(c.bold(`Change detected: ${type} ${file}`)));
|
|
124
121
|
try {
|
|
125
122
|
cb(path2);
|
|
126
123
|
} catch (e) {
|
|
127
|
-
|
|
124
|
+
logger?.emit("warning", c.red("Watcher failed"));
|
|
128
125
|
}
|
|
129
126
|
});
|
|
130
127
|
return;
|
|
@@ -132,6 +129,8 @@ async function startWatcher(path2, cb) {
|
|
|
132
129
|
|
|
133
130
|
// src/commands/generate.ts
|
|
134
131
|
import { PromiseManager, isInputPath } from "@kubb/core";
|
|
132
|
+
import path from "path";
|
|
133
|
+
import { createLogger as createLogger2, LogMapper } from "@kubb/core/logger";
|
|
135
134
|
var args = {
|
|
136
135
|
config: {
|
|
137
136
|
type: "string",
|
|
@@ -142,8 +141,8 @@ var args = {
|
|
|
142
141
|
type: "string",
|
|
143
142
|
description: "Info, silent or debug",
|
|
144
143
|
alias: "l",
|
|
145
|
-
default:
|
|
146
|
-
valueHint:
|
|
144
|
+
default: "info",
|
|
145
|
+
valueHint: "silent|info|debug"
|
|
147
146
|
},
|
|
148
147
|
watch: {
|
|
149
148
|
type: "boolean",
|
|
@@ -176,9 +175,6 @@ var command = defineCommand({
|
|
|
176
175
|
description: "[input] Generate files based on a 'kubb.config.ts' file"
|
|
177
176
|
},
|
|
178
177
|
args,
|
|
179
|
-
setup() {
|
|
180
|
-
spinner.start("\u{1F50D} Loading config");
|
|
181
|
-
},
|
|
182
178
|
async run({ args: args2 }) {
|
|
183
179
|
const input = args2._[0];
|
|
184
180
|
if (args2.help) {
|
|
@@ -186,15 +182,20 @@ var command = defineCommand({
|
|
|
186
182
|
return;
|
|
187
183
|
}
|
|
188
184
|
if (args2.debug) {
|
|
189
|
-
args2.logLevel =
|
|
185
|
+
args2.logLevel = "debug";
|
|
190
186
|
}
|
|
191
187
|
if (args2.bun) {
|
|
192
188
|
const command2 = process.argv.splice(2).filter((item) => item !== "--bun");
|
|
193
189
|
await execa("bkubb", command2, { stdout: process.stdout, stderr: process.stderr });
|
|
194
190
|
return;
|
|
195
191
|
}
|
|
192
|
+
const logLevel = LogMapper[args2.logLevel] || 3;
|
|
193
|
+
const logger = createLogger2({
|
|
194
|
+
logLevel
|
|
195
|
+
});
|
|
196
|
+
logger.emit("start", "\u{1F50D} Loading config");
|
|
196
197
|
const result = await getCosmiConfig("kubb", args2.config);
|
|
197
|
-
|
|
198
|
+
logger.emit("success", `\u{1F50D} Config loaded(${c2.dim(path.relative(process.cwd(), result.filepath))})`);
|
|
198
199
|
const config = await getConfig(result, args2);
|
|
199
200
|
if (args2.watch) {
|
|
200
201
|
if (Array.isArray(config)) {
|
|
@@ -203,8 +204,7 @@ var command = defineCommand({
|
|
|
203
204
|
if (isInputPath(config)) {
|
|
204
205
|
return startWatcher([input || config.input.path], async (paths) => {
|
|
205
206
|
await generate({ config, args: args2 });
|
|
206
|
-
|
|
207
|
-
spinner.start(c2.yellow(c2.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
207
|
+
logger.emit("start", c2.yellow(c2.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
210
|
}
|
|
@@ -220,4 +220,4 @@ var generate_default = command;
|
|
|
220
220
|
export {
|
|
221
221
|
generate_default as default
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=generate-
|
|
223
|
+
//# sourceMappingURL=generate-FHYQHKKR.js.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"],"sourcesContent":["import { defineCommand, showUsage } from 'citty'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { execa } from 'execa'\nimport c from 'tinyrainbow'\n\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\nimport { PromiseManager, isInputPath } from '@kubb/core'\nimport { generate } from '../generate.ts'\nimport path from 'node:path'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\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 bun: {\n type: 'boolean',\n description: 'Run Kubb with Bun',\n alias: 'b',\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({ args }) {\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 if (args.bun) {\n const command = process.argv.splice(2).filter((item) => item !== '--bun')\n\n await execa('bkubb', command, { stdout: process.stdout, stderr: process.stderr })\n return\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(${c.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\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 generate({ config, args })\n logger.emit('start', c.yellow(c.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n }\n\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((item) => () => generate({ input, config: item, args }))\n\n return promiseManager.run('seq', promises)\n }\n\n await generate({ input, config, args })\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 { bundleRequire } from 'bundle-require'\nimport { cosmiconfig } from 'cosmiconfig'\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 { mod } = await bundleRequire({\n filepath: configFile,\n preserveTemporaryFile: false,\n })\n\n return mod.default\n}\n\nconst jsLoader = async (configFile: string) => {\n const { mod } = await bundleRequire({\n filepath: configFile,\n preserveTemporaryFile: false,\n format: 'cjs',\n })\n\n return mod.default || 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 c from 'tinyrainbow'\nimport { createLogger } from '@kubb/core/logger'\n\nexport async function startWatcher(path: string[], cb: (path: string[]) => Promise<void>): Promise<void> {\n const { watch } = await import('chokidar')\n\n const ignored = ['**/{.git,node_modules}/**']\n const logger = createLogger()\n\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n logger.emit('info', c.yellow(c.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (e) {\n logger?.emit('warning', c.red('Watcher failed'))\n }\n })\n\n return\n}\n"],"mappings":"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","names":["c","args","path","createLogger","args","command","c"]}
|
|
@@ -3,22 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
var _chunkNKSXZ2SMcjs = require('./chunk-NKSXZ2SM.cjs');
|
|
6
|
+
var _chunk7CMTKETPcjs = require('./chunk-7CMTKETP.cjs');
|
|
8
7
|
|
|
9
8
|
// src/commands/generate.ts
|
|
10
|
-
|
|
11
|
-
var _logger = require('@kubb/core/logger');
|
|
9
|
+
_chunk7CMTKETPcjs.init_cjs_shims.call(void 0, );
|
|
12
10
|
var _citty = require('citty');
|
|
13
|
-
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
14
11
|
|
|
15
12
|
// src/utils/getConfig.ts
|
|
16
|
-
|
|
13
|
+
_chunk7CMTKETPcjs.init_cjs_shims.call(void 0, );
|
|
17
14
|
var _utils = require('@kubb/core/utils');
|
|
18
15
|
|
|
19
16
|
// src/utils/getPlugins.ts
|
|
20
|
-
|
|
21
|
-
var _core = require('@kubb/core');
|
|
17
|
+
_chunk7CMTKETPcjs.init_cjs_shims.call(void 0, );
|
|
22
18
|
function isJSONPlugins(plugins) {
|
|
23
19
|
return !!_optionalChain([plugins, 'optionalAccess', _2 => _2.some, 'call', _3 => _3((plugin) => {
|
|
24
20
|
return Array.isArray(plugin) && typeof _optionalChain([plugin, 'optionalAccess', _4 => _4.at, 'call', _5 => _5(0)]) === "string";
|
|
@@ -66,7 +62,7 @@ async function getConfig(result, args2) {
|
|
|
66
62
|
}
|
|
67
63
|
|
|
68
64
|
// src/utils/getCosmiConfig.ts
|
|
69
|
-
|
|
65
|
+
_chunk7CMTKETPcjs.init_cjs_shims.call(void 0, );
|
|
70
66
|
var _bundlerequire = require('bundle-require');
|
|
71
67
|
var _cosmiconfig = require('cosmiconfig');
|
|
72
68
|
var tsLoader = async (configFile) => {
|
|
@@ -115,27 +111,30 @@ async function getCosmiConfig(moduleName, config) {
|
|
|
115
111
|
}
|
|
116
112
|
|
|
117
113
|
// src/utils/watcher.ts
|
|
118
|
-
|
|
114
|
+
_chunk7CMTKETPcjs.init_cjs_shims.call(void 0, );
|
|
115
|
+
var _logger = require('@kubb/core/logger');
|
|
119
116
|
async function startWatcher(path2, cb) {
|
|
120
117
|
const { watch } = await Promise.resolve().then(() => _interopRequireWildcard(require("chokidar")));
|
|
121
118
|
const ignored = ["**/{.git,node_modules}/**"];
|
|
119
|
+
const logger = _logger.createLogger.call(void 0, );
|
|
122
120
|
const watcher = watch(path2, {
|
|
123
121
|
ignorePermissionErrors: true,
|
|
124
122
|
ignored
|
|
125
123
|
});
|
|
126
124
|
watcher.on("all", (type, file) => {
|
|
127
|
-
|
|
128
|
-
_chunkNKSXZ2SMcjs.spinner.spinner = "clock";
|
|
125
|
+
logger.emit("info", _chunk7CMTKETPcjs.p.yellow(_chunk7CMTKETPcjs.p.bold(`Change detected: ${type} ${file}`)));
|
|
129
126
|
try {
|
|
130
127
|
cb(path2);
|
|
131
128
|
} catch (e) {
|
|
132
|
-
|
|
129
|
+
_optionalChain([logger, 'optionalAccess', _8 => _8.emit, 'call', _9 => _9("warning", _chunk7CMTKETPcjs.p.red("Watcher failed"))]);
|
|
133
130
|
}
|
|
134
131
|
});
|
|
135
132
|
return;
|
|
136
133
|
}
|
|
137
134
|
|
|
138
135
|
// src/commands/generate.ts
|
|
136
|
+
var _core = require('@kubb/core');
|
|
137
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
139
138
|
|
|
140
139
|
var args = {
|
|
141
140
|
config: {
|
|
@@ -147,8 +146,8 @@ var args = {
|
|
|
147
146
|
type: "string",
|
|
148
147
|
description: "Info, silent or debug",
|
|
149
148
|
alias: "l",
|
|
150
|
-
default:
|
|
151
|
-
valueHint:
|
|
149
|
+
default: "info",
|
|
150
|
+
valueHint: "silent|info|debug"
|
|
152
151
|
},
|
|
153
152
|
watch: {
|
|
154
153
|
type: "boolean",
|
|
@@ -181,9 +180,6 @@ var command = _citty.defineCommand.call(void 0, {
|
|
|
181
180
|
description: "[input] Generate files based on a 'kubb.config.ts' file"
|
|
182
181
|
},
|
|
183
182
|
args,
|
|
184
|
-
setup() {
|
|
185
|
-
_chunkNKSXZ2SMcjs.spinner.start("\u{1F50D} Loading config");
|
|
186
|
-
},
|
|
187
183
|
async run({ args: args2 }) {
|
|
188
184
|
const input = args2._[0];
|
|
189
185
|
if (args2.help) {
|
|
@@ -191,15 +187,20 @@ var command = _citty.defineCommand.call(void 0, {
|
|
|
191
187
|
return;
|
|
192
188
|
}
|
|
193
189
|
if (args2.debug) {
|
|
194
|
-
args2.logLevel =
|
|
190
|
+
args2.logLevel = "debug";
|
|
195
191
|
}
|
|
196
192
|
if (args2.bun) {
|
|
197
193
|
const command2 = process.argv.splice(2).filter((item) => item !== "--bun");
|
|
198
|
-
await
|
|
194
|
+
await _chunk7CMTKETPcjs.execa.call(void 0, "bkubb", command2, { stdout: process.stdout, stderr: process.stderr });
|
|
199
195
|
return;
|
|
200
196
|
}
|
|
197
|
+
const logLevel = _logger.LogMapper[args2.logLevel] || 3;
|
|
198
|
+
const logger = _logger.createLogger.call(void 0, {
|
|
199
|
+
logLevel
|
|
200
|
+
});
|
|
201
|
+
logger.emit("start", "\u{1F50D} Loading config");
|
|
201
202
|
const result = await getCosmiConfig("kubb", args2.config);
|
|
202
|
-
|
|
203
|
+
logger.emit("success", `\u{1F50D} Config loaded(${_chunk7CMTKETPcjs.p.dim(_path2.default.relative(process.cwd(), result.filepath))})`);
|
|
203
204
|
const config = await getConfig(result, args2);
|
|
204
205
|
if (args2.watch) {
|
|
205
206
|
if (Array.isArray(config)) {
|
|
@@ -207,22 +208,21 @@ var command = _citty.defineCommand.call(void 0, {
|
|
|
207
208
|
}
|
|
208
209
|
if (_core.isInputPath.call(void 0, config)) {
|
|
209
210
|
return startWatcher([input || config.input.path], async (paths) => {
|
|
210
|
-
await
|
|
211
|
-
|
|
212
|
-
_chunkNKSXZ2SMcjs.spinner.start(_chunkNKSXZ2SMcjs.p.yellow(_chunkNKSXZ2SMcjs.p.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
211
|
+
await _chunk7CMTKETPcjs.generate.call(void 0, { config, args: args2 });
|
|
212
|
+
logger.emit("start", _chunk7CMTKETPcjs.p.yellow(_chunk7CMTKETPcjs.p.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
216
|
if (Array.isArray(config)) {
|
|
217
217
|
const promiseManager = new (0, _core.PromiseManager)();
|
|
218
|
-
const promises = config.map((item) => () =>
|
|
218
|
+
const promises = config.map((item) => () => _chunk7CMTKETPcjs.generate.call(void 0, { input, config: item, args: args2 }));
|
|
219
219
|
return promiseManager.run("seq", promises);
|
|
220
220
|
}
|
|
221
|
-
await
|
|
221
|
+
await _chunk7CMTKETPcjs.generate.call(void 0, { input, config, args: args2 });
|
|
222
222
|
}
|
|
223
223
|
});
|
|
224
224
|
var generate_default = command;
|
|
225
225
|
|
|
226
226
|
|
|
227
227
|
exports.default = generate_default;
|
|
228
|
-
//# sourceMappingURL=generate-
|
|
228
|
+
//# sourceMappingURL=generate-ZGEX2WSJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/cli/dist/generate-ZGEX2WSJ.cjs","../src/commands/generate.ts","../src/utils/getConfig.ts","../src/utils/getPlugins.ts","../src/utils/getCosmiConfig.ts","../src/utils/watcher.ts"],"names":["args"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/cli/dist/generate-ZGEX2WSJ.cjs","sourcesContent":[null,"import { defineCommand, showUsage } from 'citty'\nimport type { ArgsDef, ParsedArgs } from 'citty'\nimport { execa } from 'execa'\nimport c from 'tinyrainbow'\n\nimport { getConfig } from '../utils/getConfig.ts'\nimport { getCosmiConfig } from '../utils/getCosmiConfig.ts'\nimport { startWatcher } from '../utils/watcher.ts'\n\nimport { PromiseManager, isInputPath } from '@kubb/core'\nimport { generate } from '../generate.ts'\nimport path from 'node:path'\nimport { createLogger, LogMapper } from '@kubb/core/logger'\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 bun: {\n type: 'boolean',\n description: 'Run Kubb with Bun',\n alias: 'b',\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({ args }) {\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 if (args.bun) {\n const command = process.argv.splice(2).filter((item) => item !== '--bun')\n\n await execa('bkubb', command, { stdout: process.stdout, stderr: process.stderr })\n return\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(${c.dim(path.relative(process.cwd(), result.filepath))})`)\n\n const config = await getConfig(result, args)\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 generate({ config, args })\n logger.emit('start', c.yellow(c.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n }\n\n if (Array.isArray(config)) {\n const promiseManager = new PromiseManager()\n const promises = config.map((item) => () => generate({ input, config: item, args }))\n\n return promiseManager.run('seq', promises)\n }\n\n await generate({ input, config, args })\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 { bundleRequire } from 'bundle-require'\nimport { cosmiconfig } from 'cosmiconfig'\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 { mod } = await bundleRequire({\n filepath: configFile,\n preserveTemporaryFile: false,\n })\n\n return mod.default\n}\n\nconst jsLoader = async (configFile: string) => {\n const { mod } = await bundleRequire({\n filepath: configFile,\n preserveTemporaryFile: false,\n format: 'cjs',\n })\n\n return mod.default || 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 c from 'tinyrainbow'\nimport { createLogger } from '@kubb/core/logger'\n\nexport async function startWatcher(path: string[], cb: (path: string[]) => Promise<void>): Promise<void> {\n const { watch } = await import('chokidar')\n\n const ignored = ['**/{.git,node_modules}/**']\n const logger = createLogger()\n\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n logger.emit('info', c.yellow(c.bold(`Change detected: ${type} ${file}`)))\n\n try {\n cb(path)\n } catch (e) {\n logger?.emit('warning', c.red('Watcher failed'))\n }\n })\n\n return\n}\n"]}
|