@kubb/cli 2.21.0 → 2.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,251 @@
1
+ // src/utils/spinner.ts
2
+ import ora from "ora";
3
+ var spinner = ora({
4
+ spinner: "clock"
5
+ });
6
+
7
+ // src/generate.ts
8
+ import { LogLevel as LogLevel2, LogMapper, createLogger, randomCliColour as randomCliColour2 } from "@kubb/core/logger";
9
+ import c4 from "tinyrainbow";
10
+ import { Warning, safeBuild } from "@kubb/core";
11
+ import { createConsola } from "consola";
12
+
13
+ // src/utils/executeHooks.ts
14
+ import { LogLevel } from "@kubb/core/logger";
15
+ import { execa } from "execa";
16
+ import { parseArgsStringToArgv } from "string-argv";
17
+ import c2 from "tinyrainbow";
18
+
19
+ // src/utils/OraWritable.ts
20
+ import { Writable } from "stream";
21
+ import c from "tinyrainbow";
22
+ var OraWritable = class extends Writable {
23
+ constructor(spinner2, command, opts) {
24
+ super(opts);
25
+ this.command = command;
26
+ this.spinner = spinner2;
27
+ }
28
+ _write(chunk, _encoding, callback) {
29
+ this.spinner.suffixText = `
30
+
31
+ ${c.bold(c.blue(this.command))}: ${chunk?.toString()}`;
32
+ callback();
33
+ }
34
+ };
35
+
36
+ // src/utils/executeHooks.ts
37
+ async function executeHooks({ hooks, logLevel }) {
38
+ if (!hooks?.done) {
39
+ return;
40
+ }
41
+ const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done];
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);
47
+ const abortController = new AbortController();
48
+ const [cmd, ..._args] = [...parseArgsStringToArgv(command)];
49
+ if (!cmd) {
50
+ return null;
51
+ }
52
+ spinner.start(`Executing hook ${logLevel !== "silent" ? c2.dim(command) : ""}`);
53
+ const subProcess = await execa(cmd, _args, {
54
+ detached: true,
55
+ signal: abortController.signal
56
+ }).pipeStdout?.(oraWritable);
57
+ spinner.suffixText = "";
58
+ if (logLevel === LogLevel.silent) {
59
+ spinner.succeed(`Executing hook ${logLevel !== "silent" ? c2.dim(command) : ""}`);
60
+ if (subProcess) {
61
+ console.log(subProcess.stdout);
62
+ }
63
+ }
64
+ oraWritable.destroy();
65
+ return { subProcess, abort: abortController.abort.bind(abortController) };
66
+ }).filter(Boolean);
67
+ await Promise.all(executers);
68
+ if (logLevel === LogLevel.silent) {
69
+ spinner.succeed("Executing hooks");
70
+ }
71
+ }
72
+
73
+ // src/utils/getErrorCauses.ts
74
+ function getErrorCauses(errors) {
75
+ return errors.reduce((prev, error) => {
76
+ const causedError = error?.cause;
77
+ if (causedError) {
78
+ prev = [...prev, ...getErrorCauses([causedError])];
79
+ return prev;
80
+ }
81
+ prev = [...prev, error];
82
+ return prev;
83
+ }, []).filter(Boolean);
84
+ }
85
+
86
+ // src/utils/getSummary.ts
87
+ import path from "path";
88
+ import { randomCliColour } from "@kubb/core/logger";
89
+ import c3 from "tinyrainbow";
90
+
91
+ // src/utils/parseHrtimeToSeconds.ts
92
+ function parseHrtimeToSeconds(hrtime) {
93
+ const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3);
94
+ return seconds;
95
+ }
96
+
97
+ // src/utils/getSummary.ts
98
+ function getSummary({ pluginManager, status, hrstart, config, logger }) {
99
+ const { logLevel } = logger;
100
+ const logs = [];
101
+ const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrstart));
102
+ const buildStartPlugins = pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name);
103
+ const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === "buildEnd" && item.plugin.name !== "core").map((item) => item.plugin.name);
104
+ const failedPlugins = config.plugins?.filter((plugin) => !buildEndPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
105
+ const pluginsCount = config.plugins?.length || 0;
106
+ const files = pluginManager.fileManager.files.sort((a, b) => {
107
+ if (!a.meta?.pluginKey?.[0] || !b.meta?.pluginKey?.[0]) {
108
+ return 0;
109
+ }
110
+ if (a.meta?.pluginKey?.[0]?.length < b.meta?.pluginKey?.[0]?.length) {
111
+ return 1;
112
+ }
113
+ if (a.meta?.pluginKey?.[0]?.length > b.meta?.pluginKey?.[0]?.length) {
114
+ return -1;
115
+ }
116
+ return 0;
117
+ });
118
+ const meta = {
119
+ name: config.name,
120
+ plugins: status === "success" ? `${c3.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total` : `${c3.red(`${failedPlugins?.length ?? 1} failed`)}, ${pluginsCount} total`,
121
+ pluginsFailed: status === "failed" ? failedPlugins?.map((name) => randomCliColour(name))?.join(", ") : void 0,
122
+ filesCreated: files.length,
123
+ time: c3.yellow(`${elapsedSeconds}s`),
124
+ endTime: c3.yellow(Date()),
125
+ output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root
126
+ };
127
+ logger.emit("debug", ["\nGenerated files:\n"]);
128
+ logger.emit(
129
+ "debug",
130
+ files.map((file) => `${randomCliColour(JSON.stringify(file.meta?.pluginKey))} ${file.path}`)
131
+ );
132
+ logs.push(
133
+ [
134
+ ["\n", true],
135
+ [` ${c3.bold("Name:")} ${meta.name}`, !!meta.name],
136
+ [` ${c3.bold("Plugins:")} ${meta.plugins}`, true],
137
+ [` ${c3.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
138
+ [`${c3.bold("Generated:")} ${meta.filesCreated} files`, true],
139
+ [` ${c3.bold("Time:")} ${meta.time}`, true],
140
+ [` ${c3.bold("Ended:")} ${meta.endTime}`, true],
141
+ [` ${c3.bold("Output:")} ${meta.output}`, true]
142
+ ].map((item) => {
143
+ if (item.at(1)) {
144
+ return item.at(0);
145
+ }
146
+ return void 0;
147
+ }).filter(Boolean).join("\n")
148
+ );
149
+ return logs;
150
+ }
151
+
152
+ // src/utils/writeLog.ts
153
+ import { resolve } from "path";
154
+ import { read, write } from "@kubb/fs";
155
+ async function writeLog(data) {
156
+ if (data.trim() === "") {
157
+ return void 0;
158
+ }
159
+ const path2 = resolve(process.cwd(), "kubb-log.log");
160
+ let previousLogs = "";
161
+ try {
162
+ previousLogs = await read(resolve(path2));
163
+ } catch (_err) {
164
+ }
165
+ return write(path2, [previousLogs, data.trim()].filter(Boolean).join("\n\n\n"), { sanity: false });
166
+ }
167
+
168
+ // src/generate.ts
169
+ async function generate({ input, config, args }) {
170
+ const logLevel = args.logLevel || LogLevel2.silent;
171
+ const logger = createLogger({
172
+ logLevel,
173
+ name: config.name,
174
+ spinner,
175
+ consola: createConsola({
176
+ level: LogMapper[logLevel] || 3
177
+ })
178
+ });
179
+ logger.on("debug", async (messages) => {
180
+ if (logLevel === LogLevel2.debug) {
181
+ await writeLog(messages.join("\n"));
182
+ }
183
+ });
184
+ logger.consola?.wrapConsole();
185
+ if (logger.name) {
186
+ spinner.prefixText = randomCliColour2(logger.name);
187
+ }
188
+ const hrstart = process.hrtime();
189
+ if (args.logLevel === LogLevel2.debug) {
190
+ const { performance, PerformanceObserver } = await import("perf_hooks");
191
+ const performanceOpserver = new PerformanceObserver((items) => {
192
+ const message = `${items.getEntries()[0]?.duration.toFixed(0)}ms`;
193
+ spinner.suffixText = c4.yellow(message);
194
+ performance.clearMarks();
195
+ });
196
+ performanceOpserver.observe({ type: "measure" });
197
+ }
198
+ const { root = process.cwd(), ...userConfig } = config;
199
+ const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
200
+ spinner.start(`\u{1F680} Building ${logLevel !== "silent" ? c4.dim(inputPath) : ""}`);
201
+ const definedConfig = {
202
+ root,
203
+ ...userConfig,
204
+ input: inputPath ? {
205
+ ...userConfig.input,
206
+ path: inputPath
207
+ } : userConfig.input,
208
+ output: {
209
+ write: true,
210
+ ...userConfig.output
211
+ }
212
+ };
213
+ const { pluginManager, error } = await safeBuild({
214
+ config: definedConfig,
215
+ logger
216
+ });
217
+ const summary = getSummary({
218
+ pluginManager,
219
+ config: definedConfig,
220
+ status: error ? "failed" : "success",
221
+ hrstart,
222
+ logger
223
+ });
224
+ if (error) {
225
+ spinner.suffixText = "";
226
+ spinner.fail(`\u{1F680} Build failed ${logLevel !== "silent" ? c4.dim(inputPath) : ""}`);
227
+ console.log(summary.join(""));
228
+ if (error instanceof Warning) {
229
+ spinner.warn(c4.yellow(error.message));
230
+ process.exit(0);
231
+ }
232
+ const errors = getErrorCauses([error]);
233
+ if (logger.consola && errors.length && logLevel === LogLevel2.debug) {
234
+ errors.forEach((err) => {
235
+ logger.consola.error(err);
236
+ });
237
+ }
238
+ logger.consola?.error(error);
239
+ process.exit(0);
240
+ }
241
+ await executeHooks({ hooks: config.hooks, logLevel });
242
+ spinner.suffixText = "";
243
+ spinner.succeed(`\u{1F680} Build completed ${logLevel !== "silent" ? c4.dim(inputPath) : ""}`);
244
+ console.log(summary.join(""));
245
+ }
246
+
247
+ export {
248
+ spinner,
249
+ generate
250
+ };
251
+ //# sourceMappingURL=chunk-FUT7JJ3R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/spinner.ts","../src/generate.ts","../src/utils/executeHooks.ts","../src/utils/OraWritable.ts","../src/utils/getErrorCauses.ts","../src/utils/getSummary.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/writeLog.ts"],"sourcesContent":["import ora from 'ora'\n\nexport const spinner = ora({\n spinner: 'clock',\n})\n","import { LogLevel, LogMapper, createLogger, randomCliColour } from '@kubb/core/logger'\n\nimport c from 'tinyrainbow'\n\nimport { spinner } from './utils/spinner.ts'\n\nimport { type Config, Warning, safeBuild } from '@kubb/core'\nimport { createConsola } from 'consola'\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'\n\ntype GenerateProps = {\n input?: string\n config: Config\n args: Args\n}\n\nexport async function generate({ input, config, args }: GenerateProps): Promise<void> {\n const logLevel = (args.logLevel as LogLevel) || LogLevel.silent\n const logger = createLogger({\n logLevel,\n name: config.name,\n spinner,\n consola: createConsola({\n level: LogMapper[logLevel] || 3,\n }),\n })\n\n logger.on('debug', async (messages: string[]) => {\n if (logLevel === LogLevel.debug) {\n await writeLog(messages.join('\\n'))\n }\n })\n\n logger.consola?.wrapConsole()\n\n if (logger.name) {\n spinner.prefixText = randomCliColour(logger.name)\n }\n\n const hrstart = process.hrtime()\n\n if (args.logLevel === LogLevel.debug) {\n const { performance, PerformanceObserver } = await import('node:perf_hooks')\n\n const performanceOpserver = new PerformanceObserver((items) => {\n const message = `${items.getEntries()[0]?.duration.toFixed(0)}ms`\n\n spinner.suffixText = c.yellow(message)\n\n performance.clearMarks()\n })\n\n performanceOpserver.observe({ type: 'measure' })\n }\n\n const { root = process.cwd(), ...userConfig } = config\n const inputPath = input ?? ('path' in userConfig.input ? userConfig.input.path : undefined)\n\n spinner.start(`🚀 Building ${logLevel !== '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 { 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) {\n spinner.suffixText = ''\n spinner.fail(`🚀 Build failed ${logLevel !== 'silent' ? c.dim(inputPath) : ''}`)\n\n console.log(summary.join(''))\n\n if (error instanceof Warning) {\n spinner.warn(c.yellow(error.message))\n process.exit(0)\n }\n\n const errors = getErrorCauses([error])\n if (logger.consola && errors.length && logLevel === LogLevel.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 await executeHooks({ hooks: config.hooks, logLevel })\n\n spinner.suffixText = ''\n spinner.succeed(`🚀 Build completed ${logLevel !== 'silent' ? c.dim(inputPath) : ''}`)\n\n console.log(summary.join(''))\n}\n","import { LogLevel } from '@kubb/core/logger'\nimport { execa } from 'execa'\nimport { parseArgsStringToArgv } from 'string-argv'\nimport c from 'tinyrainbow'\n\nimport { OraWritable } from './OraWritable.ts'\nimport { spinner } from './spinner.ts'\n\nimport type { Writable } from 'node:stream'\nimport type { Config } from '@kubb/core'\n\ntype ExecutingHooksProps = {\n hooks: Config['hooks']\n logLevel: LogLevel\n}\n\nexport async function executeHooks({ hooks, logLevel }: ExecutingHooksProps): Promise<void> {\n if (!hooks?.done) {\n return\n }\n\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done]\n\n if (logLevel === LogLevel.silent) {\n spinner.start('Executing hooks')\n }\n\n const executers = commands\n .map(async (command) => {\n const oraWritable = new OraWritable(spinner, command)\n const abortController = new AbortController()\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n if (!cmd) {\n return null\n }\n\n spinner.start(`Executing hook ${logLevel !== 'silent' ? c.dim(command) : ''}`)\n\n const subProcess = await execa(cmd, _args, {\n detached: true,\n signal: abortController.signal,\n }).pipeStdout?.(oraWritable as Writable)\n spinner.suffixText = ''\n\n if (logLevel === LogLevel.silent) {\n spinner.succeed(`Executing hook ${logLevel !== 'silent' ? c.dim(command) : ''}`)\n\n if (subProcess) {\n console.log(subProcess.stdout)\n }\n }\n\n oraWritable.destroy()\n return { subProcess, abort: abortController.abort.bind(abortController) }\n })\n .filter(Boolean)\n\n await Promise.all(executers)\n\n if (logLevel === LogLevel.silent) {\n spinner.succeed('Executing hooks')\n }\n}\n","import { Writable } from 'node:stream'\n\nimport c from 'tinyrainbow'\n\nimport type { WritableOptions } from 'node:stream'\nimport type { Ora } from 'ora'\n\nexport class OraWritable extends Writable {\n public command: string\n public spinner: Ora\n constructor(spinner: Ora, command: string, opts?: WritableOptions) {\n super(opts)\n\n this.command = command\n this.spinner = spinner\n }\n _write(chunk: any, _encoding: BufferEncoding, callback: (error?: Error | null) => void): void {\n this.spinner.suffixText = `\\n\\n${c.bold(c.blue(this.command))}: ${chunk?.toString()}`\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 { logLevel } = logger\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 name: config.name,\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`),\n endTime: c.yellow(Date()),\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 ['\\n', true],\n [` ${c.bold('Name:')} ${meta.name}`, !!meta.name],\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('Ended:')} ${meta.endTime}`, 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":["LogLevel","randomCliColour","c","c","spinner","c","c","c","path","LogLevel","randomCliColour","c"]}