@kubb/cli 3.0.0-alpha.9 → 3.0.0-beta.10
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-CZ3C3WQD.js → chunk-LA3QWVJI.js} +63 -99
- package/dist/chunk-LA3QWVJI.js.map +1 -0
- package/dist/{chunk-LK3JKOEH.cjs → chunk-LV33XAJU.cjs} +593 -701
- package/dist/chunk-LV33XAJU.cjs.map +1 -0
- package/dist/{generate-IFZ2Y6PO.js → generate-E3BIV7UD.js} +38 -53
- package/dist/generate-E3BIV7UD.js.map +1 -0
- package/dist/generate-HD6YYTQO.cjs +244 -0
- package/dist/generate-HD6YYTQO.cjs.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 -45
- 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-CZ3C3WQD.js.map +0 -1
- package/dist/chunk-LK3JKOEH.cjs.map +0 -1
- package/dist/generate-CMBXNVHT.cjs +0 -228
- package/dist/generate-CMBXNVHT.cjs.map +0 -1
- package/dist/generate-IFZ2Y6PO.js.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,77 +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;
|
|
96
|
+
return [...logs];
|
|
108
97
|
}
|
|
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 });
|
|
127
|
-
}
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
} : {
|
|
148
|
-
format: "{percentage}% {bar} {value}/{total} {id}",
|
|
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(
|
|
112
|
+
{
|
|
113
|
+
format: "{percentage}% {bar} {value}/{total} | {message}",
|
|
149
114
|
barsize: 30,
|
|
150
115
|
clearOnComplete: true,
|
|
151
116
|
emptyOnZero: true
|
|
152
117
|
},
|
|
153
118
|
Presets.shades_grey
|
|
154
119
|
);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
logger.on("debug", async ({ logs, override, fileName }) => {
|
|
173
|
-
await writeLog({ data: logs.join("\n"), fileName, override });
|
|
174
|
-
});
|
|
175
|
-
const { root = process.cwd(), ...userConfig } = config;
|
|
176
|
-
const inputPath = input ?? ("path" in userConfig.input ? userConfig.input.path : void 0);
|
|
177
|
-
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) : ""}`);
|
|
178
135
|
const definedConfig = {
|
|
179
136
|
root,
|
|
180
137
|
...userConfig,
|
|
@@ -184,7 +141,10 @@ async function generate({ input, config, args }) {
|
|
|
184
141
|
} : userConfig.input,
|
|
185
142
|
output: {
|
|
186
143
|
write: true,
|
|
187
|
-
|
|
144
|
+
barrelType: "named",
|
|
145
|
+
extension: {
|
|
146
|
+
".ts": ".ts"
|
|
147
|
+
},
|
|
188
148
|
...userConfig.output
|
|
189
149
|
}
|
|
190
150
|
};
|
|
@@ -193,17 +153,22 @@ async function generate({ input, config, args }) {
|
|
|
193
153
|
config: definedConfig,
|
|
194
154
|
logger
|
|
195
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
|
+
}
|
|
196
162
|
const summary = getSummary({
|
|
197
163
|
filesCreated: files.length,
|
|
198
164
|
pluginManager,
|
|
199
165
|
config: definedConfig,
|
|
200
166
|
status: error ? "failed" : "success",
|
|
201
|
-
hrStart
|
|
202
|
-
logger
|
|
167
|
+
hrStart
|
|
203
168
|
});
|
|
204
169
|
if (error && logger.consola) {
|
|
205
170
|
logger.consola?.resumeLogs();
|
|
206
|
-
logger.consola.error(`Build failed ${logLevel !==
|
|
171
|
+
logger.consola.error(`Build failed ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
207
172
|
logger.consola.box({
|
|
208
173
|
title: `${config.name || ""}`,
|
|
209
174
|
message: summary.join(""),
|
|
@@ -214,7 +179,7 @@ async function generate({ input, config, args }) {
|
|
|
214
179
|
}
|
|
215
180
|
});
|
|
216
181
|
const errors = getErrorCauses([error]);
|
|
217
|
-
if (logger.consola && errors.length && logLevel ===
|
|
182
|
+
if (logger.consola && errors.length && logger.logLevel === LogMapper.debug) {
|
|
218
183
|
errors.forEach((err) => {
|
|
219
184
|
logger.consola?.error(err);
|
|
220
185
|
});
|
|
@@ -225,7 +190,7 @@ async function generate({ input, config, args }) {
|
|
|
225
190
|
if (config.hooks) {
|
|
226
191
|
await executeHooks({ hooks: config.hooks, logger });
|
|
227
192
|
}
|
|
228
|
-
logger.consola?.log(`\u26A1Build completed ${logLevel !==
|
|
193
|
+
logger.consola?.log(`\u26A1Build completed ${logger.logLevel !== LogMapper.silent ? c3.dim(inputPath) : ""}`);
|
|
229
194
|
logger.consola?.box({
|
|
230
195
|
title: `${config.name || ""}`,
|
|
231
196
|
message: summary.join(""),
|
|
@@ -237,7 +202,6 @@ async function generate({ input, config, args }) {
|
|
|
237
202
|
});
|
|
238
203
|
}
|
|
239
204
|
|
|
240
|
-
export {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
//# sourceMappingURL=chunk-CZ3C3WQD.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"]}
|