@kubb/cli 3.0.0-alpha.8 → 3.0.0-beta.1
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/README.md +14 -5
- package/dist/{chunk-OCZD7TTT.js → chunk-LA3QWVJI.js} +63 -94
- package/dist/chunk-LA3QWVJI.js.map +1 -0
- package/dist/{chunk-WV2IQQKV.cjs → chunk-PAOUPXAG.cjs} +583 -690
- package/dist/chunk-PAOUPXAG.cjs.map +1 -0
- package/dist/generate-IZ3C56MV.cjs +244 -0
- package/dist/generate-IZ3C56MV.cjs.map +1 -0
- package/dist/{generate-C7COXU7B.js → generate-JA5KME2H.js} +38 -53
- package/dist/generate-JA5KME2H.js.map +1 -0
- package/dist/index.cjs +26 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -6
- package/dist/index.d.ts +3 -6
- package/dist/index.js +11 -18
- package/dist/index.js.map +1 -1
- package/package.json +15 -19
- package/src/commands/generate.ts +23 -17
- package/src/generate.ts +43 -42
- package/src/index.ts +1 -1
- package/src/utils/Writables.ts +2 -2
- package/src/utils/executeHooks.ts +5 -5
- package/src/utils/getCosmiConfig.ts +4 -15
- package/src/utils/getSummary.ts +4 -6
- package/src/utils/watcher.ts +4 -6
- package/bin/bkubb.cjs +0 -6
- package/dist/chunk-OCZD7TTT.js.map +0 -1
- package/dist/chunk-WV2IQQKV.cjs.map +0 -1
- package/dist/generate-C7COXU7B.js.map +0 -1
- package/dist/generate-YWYQOKO4.cjs +0 -228
- package/dist/generate-YWYQOKO4.cjs.map +0 -1
- package/src/utils/writeLog.ts +0 -28
package/README.md
CHANGED
|
@@ -13,12 +13,8 @@
|
|
|
13
13
|
[![Coverage][coverage-src]][coverage-href]
|
|
14
14
|
[![License][license-src]][license-href]
|
|
15
15
|
|
|
16
|
-
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
17
|
-
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
18
|
-
</p>
|
|
19
|
-
|
|
20
16
|
<h4>
|
|
21
|
-
<a href="https://codesandbox.io/s/github/kubb-labs/kubb/tree/
|
|
17
|
+
<a href="https://codesandbox.io/s/github/kubb-labs/kubb/tree/main//examples/typescript" target="_blank">View Demo</a>
|
|
22
18
|
<span> · </span>
|
|
23
19
|
<a href="https://kubb.dev/" target="_blank">Documentation</a>
|
|
24
20
|
<span> · </span>
|
|
@@ -28,6 +24,19 @@
|
|
|
28
24
|
</h4>
|
|
29
25
|
</div>
|
|
30
26
|
|
|
27
|
+
## Supporting Kubb
|
|
28
|
+
|
|
29
|
+
Kubb uses an MIT-licensed open source project with its ongoing development made possible entirely by the support of Sponsors. If you would like to become a sponsor, please consider:
|
|
30
|
+
|
|
31
|
+
- [Become a Sponsor on GitHub](https://github.com/sponsors/stijnvanhulle)
|
|
32
|
+
|
|
33
|
+
<p align="center">
|
|
34
|
+
<a href="https://github.com/sponsors/stijnvanhulle">
|
|
35
|
+
<img src="https://raw.githubusercontent.com/stijnvanhulle/sponsors/main/sponsors.svg" alt="My sponsors" />
|
|
36
|
+
</a>
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
|
|
31
40
|
<!-- Badges -->
|
|
32
41
|
|
|
33
42
|
[npm-version-src]: https://img.shields.io/npm/v/@kubb/cli?flat&colorA=18181B&colorB=f58517
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
1
|
+
import { LogMapper, createLogger, randomCliColour } from '@kubb/core/logger';
|
|
2
|
+
import c3 from 'tinyrainbow';
|
|
3
|
+
import { safeBuild } from '@kubb/core';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { parseArgsStringToArgv } from 'string-argv';
|
|
6
|
+
import { Writable } from 'node:stream';
|
|
7
|
+
import * as process2 from 'node:process';
|
|
8
|
+
import PQueue from 'p-queue';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import { SingleBar, Presets } from 'cli-progress';
|
|
10
11
|
|
|
11
|
-
// src/
|
|
12
|
-
import { Writable } from "node:stream";
|
|
13
|
-
import c from "tinyrainbow";
|
|
14
|
-
import * as process2 from "node:process";
|
|
12
|
+
// src/generate.ts
|
|
15
13
|
var ConsolaWritable = class extends Writable {
|
|
16
14
|
consola;
|
|
17
15
|
command;
|
|
@@ -21,14 +19,10 @@ var ConsolaWritable = class extends Writable {
|
|
|
21
19
|
this.consola = consola;
|
|
22
20
|
}
|
|
23
21
|
_write(chunk, _encoding, callback) {
|
|
24
|
-
process2.stdout.write(`${
|
|
22
|
+
process2.stdout.write(`${c3.dim(chunk?.toString())}`);
|
|
25
23
|
callback();
|
|
26
24
|
}
|
|
27
25
|
};
|
|
28
|
-
|
|
29
|
-
// src/utils/executeHooks.ts
|
|
30
|
-
import { LogMapper } from "@kubb/core/logger";
|
|
31
|
-
import PQueue from "p-queue";
|
|
32
26
|
async function executeHooks({ hooks, logger }) {
|
|
33
27
|
const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done].filter(Boolean);
|
|
34
28
|
const queue = new PQueue({ concurrency: 1 });
|
|
@@ -39,17 +33,17 @@ async function executeHooks({ hooks, logger }) {
|
|
|
39
33
|
return null;
|
|
40
34
|
}
|
|
41
35
|
await queue.add(async () => {
|
|
42
|
-
logger
|
|
43
|
-
|
|
36
|
+
logger?.emit("start", `Executing hook ${logger.logLevel !== LogMapper.silent ? c3.dim(command) : ""}`);
|
|
37
|
+
await execa(cmd, _args, {
|
|
44
38
|
detached: true,
|
|
45
|
-
stdout: logger
|
|
39
|
+
stdout: logger?.logLevel === LogMapper.silent ? void 0 : ["pipe", consolaWritable],
|
|
46
40
|
stripFinalNewline: true
|
|
47
41
|
});
|
|
48
|
-
logger
|
|
42
|
+
logger?.emit("success", `Executed hook ${logger.logLevel !== LogMapper.silent ? c3.dim(command) : ""}`);
|
|
49
43
|
});
|
|
50
44
|
});
|
|
51
45
|
await Promise.all(promises);
|
|
52
|
-
logger
|
|
46
|
+
logger?.emit("success", "Executed hooks");
|
|
53
47
|
}
|
|
54
48
|
|
|
55
49
|
// src/utils/getErrorCauses.ts
|
|
@@ -65,11 +59,6 @@ function getErrorCauses(errors) {
|
|
|
65
59
|
}, []).filter(Boolean);
|
|
66
60
|
}
|
|
67
61
|
|
|
68
|
-
// src/utils/getSummary.ts
|
|
69
|
-
import path from "node:path";
|
|
70
|
-
import { randomCliColour } from "@kubb/core/logger";
|
|
71
|
-
import c3 from "tinyrainbow";
|
|
72
|
-
|
|
73
62
|
// src/utils/parseHrtimeToSeconds.ts
|
|
74
63
|
function parseHrtimeToSeconds(hrtime) {
|
|
75
64
|
const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3);
|
|
@@ -78,7 +67,7 @@ function parseHrtimeToSeconds(hrtime) {
|
|
|
78
67
|
|
|
79
68
|
// src/utils/getSummary.ts
|
|
80
69
|
function getSummary({ pluginManager, filesCreated, status, hrStart, config }) {
|
|
81
|
-
const logs =
|
|
70
|
+
const logs = /* @__PURE__ */ new Set();
|
|
82
71
|
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrStart));
|
|
83
72
|
const buildStartPlugins = pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
84
73
|
const buildEndPlugins = pluginManager.executed.filter((item) => item.hookName === "buildEnd" && item.plugin.name !== "core").map((item) => item.plugin.name);
|
|
@@ -91,7 +80,7 @@ function getSummary({ pluginManager, filesCreated, status, hrStart, config }) {
|
|
|
91
80
|
time: `${c3.yellow(`${elapsedSeconds}s`)}`,
|
|
92
81
|
output: path.isAbsolute(config.root) ? path.resolve(config.root, config.output.path) : config.root
|
|
93
82
|
};
|
|
94
|
-
logs.
|
|
83
|
+
logs.add(
|
|
95
84
|
[
|
|
96
85
|
[`${c3.bold("Plugins:")} ${meta.plugins}`, true],
|
|
97
86
|
[`${c3.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
|
|
@@ -104,72 +93,45 @@ function getSummary({ pluginManager, filesCreated, status, hrStart, config }) {
|
|
|
104
93
|
return void 0;
|
|
105
94
|
}).filter(Boolean).join("\n")
|
|
106
95
|
);
|
|
107
|
-
return logs;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// src/utils/writeLog.ts
|
|
111
|
-
import { resolve } from "node:path";
|
|
112
|
-
import { read, write } from "@kubb/fs";
|
|
113
|
-
async function writeLog({ data, override, fileName = "kubb.log" }) {
|
|
114
|
-
if (data.trim() === "") {
|
|
115
|
-
return void 0;
|
|
116
|
-
}
|
|
117
|
-
const path2 = resolve(process.cwd(), fileName);
|
|
118
|
-
let previousLogs = "";
|
|
119
|
-
try {
|
|
120
|
-
previousLogs = await read(resolve(path2));
|
|
121
|
-
} catch (_err) {
|
|
122
|
-
}
|
|
123
|
-
if (override) {
|
|
124
|
-
return write(path2, data.trim(), { sanity: false });
|
|
125
|
-
}
|
|
126
|
-
return write(path2, [previousLogs, data.trim()].filter(Boolean).join("\n"), { sanity: false });
|
|
96
|
+
return [...logs];
|
|
127
97
|
}
|
|
128
|
-
|
|
129
|
-
// src/generate.ts
|
|
130
|
-
import { Presets, SingleBar } from "cli-progress";
|
|
131
98
|
async function generate({ input, config, args }) {
|
|
132
|
-
const logLevel =
|
|
99
|
+
const logLevel = LogMapper[args.logLevel] || 3;
|
|
133
100
|
const logger = createLogger({
|
|
134
101
|
logLevel,
|
|
135
102
|
name: config.name
|
|
136
103
|
});
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
104
|
+
const { root = process.cwd(), ...userConfig } = config;
|
|
105
|
+
const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
|
|
106
|
+
if (logger.logLevel !== LogMapper.debug) {
|
|
107
|
+
const progressCache = /* @__PURE__ */ new Map();
|
|
108
|
+
logger.on("progress_start", ({ id, size, message = "" }) => {
|
|
109
|
+
logger.consola?.pauseLogs();
|
|
110
|
+
const payload = { id, message };
|
|
111
|
+
const progressBar = new SingleBar(
|
|
142
112
|
{
|
|
143
|
-
format:
|
|
144
|
-
barsize:
|
|
113
|
+
format: "{percentage}% {bar} {value}/{total} | {message}",
|
|
114
|
+
barsize: 30,
|
|
145
115
|
clearOnComplete: true,
|
|
146
116
|
emptyOnZero: true
|
|
147
117
|
},
|
|
148
118
|
Presets.shades_grey
|
|
149
119
|
);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
logger.on("debug", async ({ logs, override, fileName }) => {
|
|
168
|
-
await writeLog({ data: logs.join("\n"), fileName, override });
|
|
169
|
-
});
|
|
170
|
-
const { root = process.cwd(), ...userConfig } = config;
|
|
171
|
-
const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
|
|
172
|
-
logger.emit("start", `Building ${logLevel !== LogMapper2.silent ? c4.dim(inputPath) : ""}`);
|
|
120
|
+
if (!progressCache.has(id)) {
|
|
121
|
+
progressCache.set(id, progressBar);
|
|
122
|
+
progressBar.start(size, 1, payload);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
logger.on("progress_stop", ({ id }) => {
|
|
126
|
+
progressCache.get(id)?.stop();
|
|
127
|
+
logger.consola?.resumeLogs();
|
|
128
|
+
});
|
|
129
|
+
logger.on("progressed", ({ id, message = "" }) => {
|
|
130
|
+
const payload = { id, message };
|
|
131
|
+
progressCache.get(id)?.increment(1, payload);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
logger.emit("start", `Building ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
173
135
|
const definedConfig = {
|
|
174
136
|
root,
|
|
175
137
|
...userConfig,
|
|
@@ -179,7 +141,10 @@ async function generate({ input, config, args }) {
|
|
|
179
141
|
} : userConfig.input,
|
|
180
142
|
output: {
|
|
181
143
|
write: true,
|
|
182
|
-
|
|
144
|
+
barrelType: "named",
|
|
145
|
+
extension: {
|
|
146
|
+
".ts": ".ts"
|
|
147
|
+
},
|
|
183
148
|
...userConfig.output
|
|
184
149
|
}
|
|
185
150
|
};
|
|
@@ -188,17 +153,22 @@ async function generate({ input, config, args }) {
|
|
|
188
153
|
config: definedConfig,
|
|
189
154
|
logger
|
|
190
155
|
});
|
|
156
|
+
if (logger.logLevel === LogMapper.debug) {
|
|
157
|
+
logger.consola?.start("Writing logs");
|
|
158
|
+
const logFiles = await logger.writeLogs();
|
|
159
|
+
logger.consola?.success(`Written logs:
|
|
160
|
+
${logFiles.join("\n")}`);
|
|
161
|
+
}
|
|
191
162
|
const summary = getSummary({
|
|
192
163
|
filesCreated: files.length,
|
|
193
164
|
pluginManager,
|
|
194
165
|
config: definedConfig,
|
|
195
166
|
status: error ? "failed" : "success",
|
|
196
|
-
hrStart
|
|
197
|
-
logger
|
|
167
|
+
hrStart
|
|
198
168
|
});
|
|
199
169
|
if (error && logger.consola) {
|
|
200
170
|
logger.consola?.resumeLogs();
|
|
201
|
-
logger.consola.error(`Build failed ${logLevel !==
|
|
171
|
+
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
202
172
|
logger.consola.box({
|
|
203
173
|
title: `${config.name || ""}`,
|
|
204
174
|
message: summary.join(""),
|
|
@@ -209,7 +179,7 @@ async function generate({ input, config, args }) {
|
|
|
209
179
|
}
|
|
210
180
|
});
|
|
211
181
|
const errors = getErrorCauses([error]);
|
|
212
|
-
if (logger.consola && errors.length && logLevel ===
|
|
182
|
+
if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {
|
|
213
183
|
errors.forEach((err) => {
|
|
214
184
|
logger.consola?.error(err);
|
|
215
185
|
});
|
|
@@ -220,7 +190,7 @@ async function generate({ input, config, args }) {
|
|
|
220
190
|
if (config.hooks) {
|
|
221
191
|
await executeHooks({ hooks: config.hooks, logger });
|
|
222
192
|
}
|
|
223
|
-
logger.consola?.log(`\u26A1Build completed ${logLevel !==
|
|
193
|
+
logger.consola?.log(`\u26A1Build completed ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
224
194
|
logger.consola?.box({
|
|
225
195
|
title: `${config.name || ""}`,
|
|
226
196
|
message: summary.join(""),
|
|
@@ -232,7 +202,6 @@ async function generate({ input, config, args }) {
|
|
|
232
202
|
});
|
|
233
203
|
}
|
|
234
204
|
|
|
235
|
-
export {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
//# sourceMappingURL=chunk-OCZD7TTT.js.map
|
|
205
|
+
export { generate };
|
|
206
|
+
//# sourceMappingURL=chunk-LA3QWVJI.js.map
|
|
207
|
+
//# sourceMappingURL=chunk-LA3QWVJI.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":["c","LogMapper"],"mappings":"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","file":"chunk-LA3QWVJI.js","sourcesContent":["import { Writable } from 'node:stream'\n\nimport c from 'tinyrainbow'\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(`${c.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 c from 'tinyrainbow'\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 ? c.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 ? c.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 c from 'tinyrainbow'\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 ? `${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: filesCreated,\n time: `${c.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 [`${c.bold('Plugins:')} ${meta.plugins}`, true],\n [`${c.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${c.bold('Generated:')} ${meta.filesCreated} files in ${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","import { LogMapper } from '@kubb/core/logger'\n\nimport c from 'tinyrainbow'\n\nimport { type Config, safeBuild } 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'\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 = LogMapper[args.logLevel as keyof typeof LogMapper] || 3\n const logger = createLogger({\n logLevel,\n name: config.name,\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 const progressCache = new Map<string, SingleBar>()\n\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 logger.emit('start', `Building ${logger.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 barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n ...userConfig.output,\n },\n }\n const hrStart = process.hrtime()\n const { pluginManager, files, error } = await safeBuild({\n config: definedConfig,\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 ? 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 && 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 ? 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"]}
|