@kubb/cli 1.2.0 → 1.2.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.
- package/dist/index.cjs +175 -141
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.js +175 -142
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var pathParser = require('path');
|
|
4
|
-
var commander = require('commander');
|
|
5
4
|
var ora = require('ora');
|
|
5
|
+
var cac = require('cac');
|
|
6
6
|
var pc3 = require('picocolors');
|
|
7
7
|
var core = require('@kubb/core');
|
|
8
8
|
var execa = require('execa');
|
|
9
|
+
var perf_hooks = require('perf_hooks');
|
|
9
10
|
var stringArgv = require('string-argv');
|
|
10
11
|
var stream = require('stream');
|
|
11
12
|
var cosmiconfig = require('cosmiconfig');
|
|
@@ -17,6 +18,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
17
18
|
|
|
18
19
|
var pathParser__default = /*#__PURE__*/_interopDefault(pathParser);
|
|
19
20
|
var ora__default = /*#__PURE__*/_interopDefault(ora);
|
|
21
|
+
var cac__default = /*#__PURE__*/_interopDefault(cac);
|
|
20
22
|
var pc3__default = /*#__PURE__*/_interopDefault(pc3);
|
|
21
23
|
var tsNode__default = /*#__PURE__*/_interopDefault(tsNode);
|
|
22
24
|
var yaml__default = /*#__PURE__*/_interopDefault(yaml);
|
|
@@ -31,7 +33,7 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
31
33
|
});
|
|
32
34
|
|
|
33
35
|
// package.json
|
|
34
|
-
var version = "1.2.
|
|
36
|
+
var version = "1.2.2";
|
|
35
37
|
var presets = {
|
|
36
38
|
simple: {
|
|
37
39
|
"kubb.config": `
|
|
@@ -59,7 +61,7 @@ export default defineConfig({
|
|
|
59
61
|
packages: ["@kubb/core", "@kubb/cli", "@kubb/swagger", "@kubb/swagger-ts", "@kubb/swagger-tanstack-query"]
|
|
60
62
|
}
|
|
61
63
|
};
|
|
62
|
-
async function init({ preset = "simple", logLevel =
|
|
64
|
+
async function init({ preset = "simple", logLevel = core.LogLevel.silent, packageManager = "pnpm" }) {
|
|
63
65
|
spinner.start("\u{1F4E6} Initializing Kubb");
|
|
64
66
|
const presetMeta = presets[preset];
|
|
65
67
|
const path = pathParser__default.default.resolve(process.cwd(), "./kubb.config.js");
|
|
@@ -76,7 +78,7 @@ async function init({ preset = "simple", logLevel = "silent", packageManager = "
|
|
|
76
78
|
return stdout;
|
|
77
79
|
})
|
|
78
80
|
]);
|
|
79
|
-
if (logLevel
|
|
81
|
+
if (core.canLogHierarchy(logLevel, core.LogLevel.info)) {
|
|
80
82
|
results.forEach((result) => {
|
|
81
83
|
if (core.isPromiseFulfilledResult(result)) {
|
|
82
84
|
console.log(result.value);
|
|
@@ -92,9 +94,7 @@ function parseHrtimeToSeconds(hrtime) {
|
|
|
92
94
|
const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3);
|
|
93
95
|
return seconds;
|
|
94
96
|
}
|
|
95
|
-
|
|
96
|
-
// src/utils/parseText.ts
|
|
97
|
-
function parseText(baseText, config, logLevel = "silent") {
|
|
97
|
+
function parseText(baseText, config, logLevel = core.LogLevel.silent) {
|
|
98
98
|
return `${baseText}${config[logLevel] || ""}`;
|
|
99
99
|
}
|
|
100
100
|
var OraWritable = class extends stream.Writable {
|
|
@@ -114,90 +114,100 @@ ${pc3__default.default.bold(pc3__default.default.blue(this.command))}: ${chunk?.
|
|
|
114
114
|
};
|
|
115
115
|
|
|
116
116
|
// src/run.ts
|
|
117
|
-
async function
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
async function executeHooks({ hooks, logLevel }) {
|
|
118
|
+
if (!hooks?.done) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done];
|
|
122
|
+
if (core.canLogHierarchy(logLevel, core.LogLevel.silent)) {
|
|
123
|
+
spinner.start(`Executing hooks`);
|
|
124
|
+
}
|
|
125
|
+
const executers = commands.map(async (command) => {
|
|
126
|
+
const oraWritable = new OraWritable(spinner, command);
|
|
127
|
+
const abortController = new AbortController();
|
|
128
|
+
const [cmd, ..._args] = [...stringArgv.parseArgsStringToArgv(command)];
|
|
129
|
+
spinner.start(parseText(`Executing hook`, { info: ` ${pc3__default.default.dim(command)}` }, logLevel));
|
|
130
|
+
const subProcess = await execa.execa(cmd, _args, { detached: true, signal: abortController.signal }).pipeStdout(oraWritable);
|
|
131
|
+
spinner.suffixText = "";
|
|
132
|
+
if (core.canLogHierarchy(logLevel, core.LogLevel.info)) {
|
|
133
|
+
spinner.succeed(parseText(`Executing hook`, { info: ` ${pc3__default.default.dim(command)}` }, logLevel));
|
|
134
|
+
console.log(subProcess.stdout);
|
|
123
135
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
136
|
+
await core.timeout(100);
|
|
137
|
+
oraWritable.destroy();
|
|
138
|
+
return { subProcess, abort: abortController.abort.bind(abortController) };
|
|
139
|
+
});
|
|
140
|
+
await Promise.all(executers);
|
|
141
|
+
if (core.canLogHierarchy(logLevel, core.LogLevel.silent)) {
|
|
142
|
+
spinner.succeed(`Executing hooks`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function getSummary({ pluginManager, status, hrstart, config, logLevel }) {
|
|
146
|
+
const logs = [];
|
|
147
|
+
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrstart));
|
|
148
|
+
const buildStartPlugins = [
|
|
149
|
+
...new Set(pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name))
|
|
150
|
+
];
|
|
151
|
+
const failedPlugins = config.plugins?.filter((plugin) => !buildStartPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
152
|
+
const pluginsCount = config.plugins?.length || 0;
|
|
153
|
+
const files = pluginManager.fileManager.files.sort((a, b) => {
|
|
154
|
+
if (!a.meta?.pluginName || !b.meta?.pluginName) {
|
|
155
|
+
return 0;
|
|
127
156
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const abortController = new AbortController();
|
|
131
|
-
const [cmd, ..._args] = [...stringArgv.parseArgsStringToArgv(command)];
|
|
132
|
-
spinner.start(parseText(`\u{1FA82} Executing hook`, { info: ` ${pc3__default.default.dim(command)}` }, logLevel));
|
|
133
|
-
const subProcess = await execa.execa(cmd, _args, { detached: true, signal: abortController.signal }).pipeStdout(oraWritable);
|
|
134
|
-
spinner.suffixText = "";
|
|
135
|
-
if (logLevel === "info") {
|
|
136
|
-
spinner.succeed(parseText(`\u{1FA82} Executing hook`, { info: ` ${pc3__default.default.dim(command)}` }, logLevel));
|
|
137
|
-
console.log(subProcess.stdout);
|
|
138
|
-
}
|
|
139
|
-
await core.timeout(50);
|
|
140
|
-
oraWritable.destroy();
|
|
141
|
-
return { subProcess, abort: abortController.abort.bind(abortController) };
|
|
142
|
-
});
|
|
143
|
-
await Promise.all(executers);
|
|
144
|
-
if (logLevel === "silent") {
|
|
145
|
-
spinner.succeed(`\u{1FA82} Executing hooks`);
|
|
157
|
+
if (a.meta?.pluginName.length < b.meta?.pluginName.length) {
|
|
158
|
+
return 1;
|
|
146
159
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const logs = [];
|
|
150
|
-
const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrstart));
|
|
151
|
-
const buildStartPlugins = [
|
|
152
|
-
...new Set(pluginManager.executed.filter((item) => item.hookName === "buildStart" && item.plugin.name !== "core").map((item) => item.plugin.name))
|
|
153
|
-
];
|
|
154
|
-
const failedPlugins = config.plugins?.filter((plugin) => !buildStartPlugins.includes(plugin.name))?.map((plugin) => plugin.name);
|
|
155
|
-
const pluginsCount = config.plugins?.length || 0;
|
|
156
|
-
const files = pluginManager.fileManager.files.sort((a, b) => {
|
|
157
|
-
if (!a.meta?.pluginName || !b.meta?.pluginName) {
|
|
158
|
-
return 0;
|
|
159
|
-
}
|
|
160
|
-
if (a.meta?.pluginName.length < b.meta?.pluginName.length) {
|
|
161
|
-
return 1;
|
|
162
|
-
}
|
|
163
|
-
if (a.meta?.pluginName.length > b.meta?.pluginName.length) {
|
|
164
|
-
return -1;
|
|
165
|
-
}
|
|
166
|
-
return 0;
|
|
167
|
-
});
|
|
168
|
-
const meta = {
|
|
169
|
-
plugins: status === "success" ? `${pc3__default.default.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total` : `${pc3__default.default.red(`${failedPlugins?.length || 0} failed`)}, ${pluginsCount} total`,
|
|
170
|
-
pluginsFailed: status === "failed" ? failedPlugins?.join(", ") : void 0,
|
|
171
|
-
filesCreated: files.length,
|
|
172
|
-
time: pc3__default.default.yellow(`${elapsedSeconds}s`),
|
|
173
|
-
output: pathParser__default.default.resolve(config.root, config.output.path)
|
|
174
|
-
};
|
|
175
|
-
if (options.debug) {
|
|
176
|
-
logs.push(pc3__default.default.bold("Generated files:\n"));
|
|
177
|
-
logs.push(files.map((file) => `${pc3__default.default.blue(file.meta?.pluginName)} ${file.path}`).join("\n"));
|
|
160
|
+
if (a.meta?.pluginName.length > b.meta?.pluginName.length) {
|
|
161
|
+
return -1;
|
|
178
162
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
`, true]
|
|
188
|
-
].map((item) => {
|
|
189
|
-
if (item.at(1)) {
|
|
190
|
-
return item.at(0);
|
|
191
|
-
}
|
|
192
|
-
return void 0;
|
|
193
|
-
}).filter(Boolean).join("\n")
|
|
194
|
-
);
|
|
195
|
-
return logs;
|
|
163
|
+
return 0;
|
|
164
|
+
});
|
|
165
|
+
const meta = {
|
|
166
|
+
plugins: status === "success" ? `${pc3__default.default.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total` : `${pc3__default.default.red(`${failedPlugins?.length || 0} failed`)}, ${pluginsCount} total`,
|
|
167
|
+
pluginsFailed: status === "failed" ? failedPlugins?.map((name) => core.randomPicoColour(name))?.join(", ") : void 0,
|
|
168
|
+
filesCreated: files.length,
|
|
169
|
+
time: pc3__default.default.yellow(`${elapsedSeconds}s`),
|
|
170
|
+
output: pathParser__default.default.resolve(config.root, config.output.path)
|
|
196
171
|
};
|
|
172
|
+
if (core.canLogHierarchy(logLevel, "stacktrace")) {
|
|
173
|
+
logs.push(pc3__default.default.bold("Generated files:\n"));
|
|
174
|
+
logs.push(files.map((file) => `${core.randomPicoColour(file.meta?.pluginName)} ${file.path}`).join("\n"));
|
|
175
|
+
}
|
|
176
|
+
logs.push(
|
|
177
|
+
[
|
|
178
|
+
[`
|
|
179
|
+
`, true],
|
|
180
|
+
[` ${pc3__default.default.bold("Plugins:")} ${meta.plugins}`, true],
|
|
181
|
+
[` ${pc3__default.default.dim("Failed:")} ${meta.pluginsFailed || "none"}`, !!meta.pluginsFailed],
|
|
182
|
+
[`${pc3__default.default.bold("Generated:")} ${meta.filesCreated} files`, true],
|
|
183
|
+
[` ${pc3__default.default.bold("Time:")} ${meta.time}`, true],
|
|
184
|
+
[` ${pc3__default.default.bold("Output:")} ${meta.output}`, true],
|
|
185
|
+
[`
|
|
186
|
+
`, true]
|
|
187
|
+
].map((item) => {
|
|
188
|
+
if (item.at(1)) {
|
|
189
|
+
return item.at(0);
|
|
190
|
+
}
|
|
191
|
+
return void 0;
|
|
192
|
+
}).filter(Boolean).join("\n")
|
|
193
|
+
);
|
|
194
|
+
return logs;
|
|
195
|
+
}
|
|
196
|
+
async function run({ input, config, CLIOptions }) {
|
|
197
|
+
const hrstart = process.hrtime();
|
|
198
|
+
const logger = core.createLogger(spinner);
|
|
199
|
+
const performanceOpserver = new perf_hooks.PerformanceObserver((items) => {
|
|
200
|
+
const message = `${items.getEntries()[0].duration.toFixed(0)}ms`;
|
|
201
|
+
spinner.suffixText = pc3__default.default.yellow(message);
|
|
202
|
+
perf_hooks.performance.clearMarks();
|
|
203
|
+
});
|
|
204
|
+
if (CLIOptions.debug) {
|
|
205
|
+
performanceOpserver.observe({ type: "measure" });
|
|
206
|
+
}
|
|
197
207
|
try {
|
|
198
208
|
const { root: _root, ...userConfig } = config;
|
|
199
|
-
const logLevel =
|
|
200
|
-
const inputPath =
|
|
209
|
+
const logLevel = CLIOptions.logLevel ?? userConfig.logLevel ?? core.LogLevel.silent;
|
|
210
|
+
const inputPath = input ?? userConfig.input.path;
|
|
201
211
|
spinner.start(parseText(`\u{1F680} Building`, { info: `(${pc3__default.default.dim(inputPath)})` }, logLevel));
|
|
202
212
|
const output = await core.build({
|
|
203
213
|
config: {
|
|
@@ -213,18 +223,21 @@ async function run({ config, options }) {
|
|
|
213
223
|
...userConfig.output
|
|
214
224
|
}
|
|
215
225
|
},
|
|
216
|
-
logger
|
|
226
|
+
logger,
|
|
227
|
+
debug: CLIOptions.debug
|
|
217
228
|
});
|
|
229
|
+
spinner.suffixText = "";
|
|
218
230
|
spinner.succeed(parseText(`\u{1F680} Build completed`, { info: `(${pc3__default.default.dim(inputPath)})` }, logLevel));
|
|
219
|
-
await
|
|
220
|
-
|
|
231
|
+
await core.timeout(100);
|
|
232
|
+
await executeHooks({ hooks: config.hooks, logLevel, debug: CLIOptions.debug });
|
|
233
|
+
const summary = getSummary({ pluginManager: output.pluginManager, config, status: "success", hrstart, logLevel: CLIOptions.logLevel });
|
|
221
234
|
console.log(summary.join(""));
|
|
222
235
|
} catch (error) {
|
|
236
|
+
let summary = [];
|
|
223
237
|
if (error instanceof core.PluginError || error instanceof core.ParallelPluginError) {
|
|
224
|
-
|
|
225
|
-
throw new core.SummaryError("Something went wrong\n", { cause: error, summary });
|
|
238
|
+
summary = getSummary({ pluginManager: error.pluginManager, config, status: "failed", hrstart, logLevel: CLIOptions.logLevel });
|
|
226
239
|
}
|
|
227
|
-
throw new core.SummaryError("Something went wrong\n", { cause: error });
|
|
240
|
+
throw new core.SummaryError("Something went wrong\n", { cause: error, summary });
|
|
228
241
|
}
|
|
229
242
|
}
|
|
230
243
|
function isJSONPlugins(plugins) {
|
|
@@ -257,11 +270,11 @@ function getPlugins(plugins) {
|
|
|
257
270
|
}
|
|
258
271
|
|
|
259
272
|
// src/utils/getConfig.ts
|
|
260
|
-
async function getConfig(result,
|
|
273
|
+
async function getConfig(result, CLIOptions) {
|
|
261
274
|
const config = result?.config;
|
|
262
275
|
let kubbUserConfig = Promise.resolve(config);
|
|
263
276
|
if (typeof config === "function") {
|
|
264
|
-
const possiblePromise = config(
|
|
277
|
+
const possiblePromise = config(CLIOptions);
|
|
265
278
|
if (core.isPromise(possiblePromise)) {
|
|
266
279
|
kubbUserConfig = possiblePromise;
|
|
267
280
|
}
|
|
@@ -307,11 +320,12 @@ var tsLoader = (configFile) => {
|
|
|
307
320
|
const module = __require(configFile);
|
|
308
321
|
return module.default;
|
|
309
322
|
} catch (err) {
|
|
310
|
-
|
|
323
|
+
const error = err;
|
|
324
|
+
if (error.name === "MODULE_NOT_FOUND") {
|
|
311
325
|
throw new Error(`'ts-node' is required for the TypeScript configuration files. Make sure it is installed
|
|
312
|
-
Error: ${
|
|
326
|
+
Error: ${error.message}`);
|
|
313
327
|
}
|
|
314
|
-
throw
|
|
328
|
+
throw error;
|
|
315
329
|
} finally {
|
|
316
330
|
registerer.enabled();
|
|
317
331
|
}
|
|
@@ -350,7 +364,7 @@ async function getCosmiConfig(moduleName2, config) {
|
|
|
350
364
|
}
|
|
351
365
|
return result;
|
|
352
366
|
}
|
|
353
|
-
var prettyError = new PrettyError__default.default().skipPackage("commander").skip(function(traceLine
|
|
367
|
+
var prettyError = new PrettyError__default.default().skipPackage("commander").skip(function(traceLine) {
|
|
354
368
|
const pattern = new RegExp("renderErrors");
|
|
355
369
|
const hasMatch = traceLine?.file?.match(pattern);
|
|
356
370
|
if (typeof traceLine.packageName !== "undefined" && hasMatch) {
|
|
@@ -367,14 +381,14 @@ function getErrorCauses(errors) {
|
|
|
367
381
|
return prev;
|
|
368
382
|
}, []).filter(Boolean);
|
|
369
383
|
}
|
|
370
|
-
function renderErrors(error, { prefixText,
|
|
384
|
+
function renderErrors(error, { prefixText, logLevel = core.LogLevel.silent }) {
|
|
371
385
|
if (!error) {
|
|
372
386
|
return "";
|
|
373
387
|
}
|
|
374
388
|
if (error instanceof core.ParallelPluginError) {
|
|
375
|
-
return [prefixText, ...error.errors.map((e) => renderErrors(e, {
|
|
389
|
+
return [prefixText, ...error.errors.map((e) => renderErrors(e, { logLevel }))].filter(Boolean).join("\n");
|
|
376
390
|
}
|
|
377
|
-
if (
|
|
391
|
+
if (core.canLogHierarchy(logLevel, "stacktrace")) {
|
|
378
392
|
const errors = getErrorCauses([error]);
|
|
379
393
|
return [prefixText, ...errors].filter(Boolean).join("\n");
|
|
380
394
|
}
|
|
@@ -388,56 +402,76 @@ var moduleName = "kubb";
|
|
|
388
402
|
var spinner = ora__default.default({
|
|
389
403
|
spinner: "clock"
|
|
390
404
|
});
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
405
|
+
function programCatcher(e, CLIOptions) {
|
|
406
|
+
const originalError = e;
|
|
407
|
+
let error = originalError;
|
|
408
|
+
const summaryError = error instanceof core.SummaryError ? error : void 0;
|
|
409
|
+
if (summaryError) {
|
|
410
|
+
error = summaryError.cause;
|
|
394
411
|
}
|
|
395
|
-
})
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
renderErrors(new Error(message, { cause: void 0 }), { debug: options.debug, prefixText: pc3__default.default.red("Something went wrong with processing the CLI\n") }) + "\n"
|
|
400
|
-
);
|
|
412
|
+
const message = renderErrors(error, { logLevel: CLIOptions.logLevel, prefixText: pc3__default.default.red(originalError?.message) });
|
|
413
|
+
if (error instanceof core.Warning) {
|
|
414
|
+
spinner.warn(pc3__default.default.yellow(error.message));
|
|
415
|
+
process.exit(0);
|
|
401
416
|
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
417
|
+
if (core.canLogHierarchy(CLIOptions.logLevel, core.LogLevel.silent)) {
|
|
418
|
+
spinner.fail(message);
|
|
419
|
+
process.exit(1);
|
|
420
|
+
}
|
|
421
|
+
spinner.fail([message, ...summaryError?.summary || []].join("\n"));
|
|
422
|
+
process.exit(1);
|
|
423
|
+
}
|
|
424
|
+
async function createProgram(argv) {
|
|
425
|
+
const program = cac__default.default(moduleName);
|
|
426
|
+
const programAction = async (input, options) => {
|
|
427
|
+
try {
|
|
428
|
+
spinner.start("\u{1F4BE} Loading config");
|
|
429
|
+
const result = await getCosmiConfig(moduleName, options.config);
|
|
430
|
+
spinner.succeed(`\u{1F4BE} Config loaded(${pc3__default.default.dim(pathParser__default.default.relative(process.cwd(), result.filepath))})`);
|
|
431
|
+
if (options.watch) {
|
|
432
|
+
const config2 = await getConfig(result, options);
|
|
433
|
+
return startWatcher([input || config2.input.path], async (paths) => {
|
|
434
|
+
await run({ config: config2, CLIOptions: options });
|
|
435
|
+
spinner.spinner = "simpleDotsScrolling";
|
|
436
|
+
spinner.start(pc3__default.default.yellow(pc3__default.default.bold(`Watching for changes in ${paths.join(" and ")}`)));
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
const config = await getConfig(result, options);
|
|
440
|
+
await run({ input, config, CLIOptions: options });
|
|
441
|
+
} catch (e) {
|
|
442
|
+
programCatcher(e, options);
|
|
418
443
|
}
|
|
419
|
-
|
|
420
|
-
|
|
444
|
+
};
|
|
445
|
+
program.command("[input]", "Path of the input file(overrides the one in `kubb.config.js`)").action(programAction);
|
|
446
|
+
program.command("generate [input]", "Path of the input file(overrides the one in `kubb.config.js`)").option("-c, --config <path>", "Path to the Kubb config").option("-l, --log-level <type>", "Type of the logging(overrides the one in `kubb.config.js`)").option("-d, --debug", "Debug mode", { default: false }).option("-w, --watch", "Watch mode based on the input file").action(programAction);
|
|
447
|
+
program.command("init", "Init Kubb").action(async () => {
|
|
448
|
+
return init({ logLevel: "info" });
|
|
449
|
+
});
|
|
450
|
+
program.help();
|
|
451
|
+
program.version(version);
|
|
452
|
+
program.on("command:*", () => {
|
|
453
|
+
console.log(prettyError.render(`Invalid command: ${program.args.join(" ")}`));
|
|
454
|
+
process.exit(1);
|
|
455
|
+
});
|
|
456
|
+
try {
|
|
457
|
+
program.parse(argv, { run: false });
|
|
458
|
+
await program.runMatchedCommand();
|
|
421
459
|
} catch (e) {
|
|
422
|
-
const
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
if (error instanceof core.Warning) {
|
|
430
|
-
spinner.warn(pc3__default.default.yellow(error.message));
|
|
431
|
-
process.exit(0);
|
|
432
|
-
}
|
|
433
|
-
spinner.fail([message, ...summaryError?.summary || []].join("\n"));
|
|
460
|
+
const error = e;
|
|
461
|
+
console.log(
|
|
462
|
+
renderErrors(new Error(error.message, { cause: void 0 }), {
|
|
463
|
+
logLevel: "info",
|
|
464
|
+
prefixText: pc3__default.default.red("Something went wrong with processing the CLI\n")
|
|
465
|
+
})
|
|
466
|
+
);
|
|
434
467
|
process.exit(1);
|
|
435
468
|
}
|
|
436
|
-
|
|
469
|
+
return program;
|
|
470
|
+
}
|
|
437
471
|
|
|
438
472
|
// src/index.ts
|
|
439
|
-
function runCLI(argv) {
|
|
440
|
-
|
|
473
|
+
async function runCLI(argv) {
|
|
474
|
+
await createProgram(argv);
|
|
441
475
|
}
|
|
442
476
|
|
|
443
477
|
module.exports = runCLI;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/program.ts","../package.json","../src/init.ts","../src/run.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/parseText.ts","../src/utils/OraWritable.ts","../src/utils/getConfig.ts","../src/utils/getPlugins.ts","../src/utils/watcher.ts","../src/utils/getCosmiConfig.ts","../src/utils/renderErrors.ts","../src/index.ts"],"names":["pathParser","pc","spinner","importModule","moduleName","ParallelPluginError","SummaryError","write","config"],"mappings":"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","sourcesContent":["import pathParser from 'node:path'\n\nimport { Command, CommanderError, Option } from 'commander'\nimport ora from 'ora'\nimport pc from 'picocolors'\n\nimport { version } from '../package.json'\nimport { init } from './init.ts'\nimport { run } from './run.ts'\nimport { getConfig, getCosmiConfig, renderErrors, startWatcher } from './utils/index.ts'\n\nimport { SummaryError } from '@kubb/core'\nimport type { CLIOptions } from '@kubb/core'\nimport { Warning } from '@kubb/core'\n\nconst moduleName = 'kubb'\n\nexport const spinner = ora({\n spinner: 'clock',\n})\n\nexport const program = new Command(moduleName)\n .name(moduleName)\n .description('Kubb')\n .version(version, '-v')\n .exitOverride((err) => {\n if (err instanceof CommanderError) {\n process.exit(1)\n }\n })\n .configureOutput({\n outputError: (message, write) => {\n const options: CLIOptions = program.opts()\n\n write(\n renderErrors(new Error(message, { cause: undefined }), { debug: options.debug, prefixText: pc.red('Something went wrong with processing the CLI\\n') }) +\n '\\n'\n )\n },\n })\n .addOption(new Option('-c, --config <path>', 'Path to the Kubb config'))\n .addOption(new Option('-i, --input <path>', 'Path of the input file(overrides the one in `kubb.config.js`)'))\n .addOption(new Option('-l, --logLevel <type>', 'Type of the logging(overrides the one in `kubb.config.js`)').choices(['error', 'info', 'silent']))\n .addOption(new Option('--init', 'Init Kubb'))\n .addOption(new Option('-d, --debug', 'Debug mode').default(false))\n .addOption(new Option('-w, --watch', 'Watch mode based on the input file'))\n .action(async (options: CLIOptions) => {\n try {\n spinner.start()\n\n if (options.init) {\n return init({ logLevel: options.logLevel })\n }\n\n // CONFIG\n // TODO use options.config to show path instead of relying on the `result`\n spinner.start('💾 Loading config')\n const result = await getCosmiConfig(moduleName, options.config)\n spinner.succeed(`💾 Config loaded(${pc.dim(pathParser.relative(process.cwd(), result.filepath))})`)\n // END CONFIG\n\n if (options.watch) {\n const config = await getConfig(result, options)\n\n return startWatcher([config.input.path], async (paths) => {\n await run({ config, options })\n spinner.spinner = 'simpleDotsScrolling'\n spinner.start(pc.yellow(pc.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n\n const config = await getConfig(result, options)\n\n await run({ config, options })\n } catch (e: any) {\n const originalError = e as Error\n let error = originalError\n\n // summaryError check\n const summaryError = error instanceof SummaryError ? error : undefined\n\n if (summaryError) {\n // use the real error from summaryError and use the case of SummaryError to display a summary of plugins that failed\n error = summaryError.cause as Error\n }\n\n const message = renderErrors(error, { debug: options.debug, prefixText: pc.red(originalError?.message) })\n\n if (error instanceof Warning) {\n spinner.warn(pc.yellow(error.message))\n process.exit(0)\n }\n\n spinner.fail([message, ...(summaryError?.summary || [])].join('\\n'))\n process.exit(1)\n }\n })\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"1.2.0\",\n \"description\": \"Generator cli\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/kubb-project/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"Stijn Van Hulle <stijn@stijnvanhulle.be\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"kubb\": \"bin/kubb.js\"\n },\n \"files\": [\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"rimraf ./dist\",\n \"lint\": \"eslint --format pretty ./src\",\n \"lint-fix\": \"bun run lint --quiet --fix\",\n \"release\": \"pnpm publish --no-git-check\",\n \"start\": \"tsup --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@swc/core\": \"^1.3.64\",\n \"chokidar\": \"^3.5.3\",\n \"commander\": \"^10.0.1\",\n \"cosmiconfig\": \"^8.2.0\",\n \"execa\": \"^7.1.1\",\n \"ora\": \"^6.3.1\",\n \"picocolors\": \"^1.0.0\",\n \"pretty-error\": \"^4.0.0\",\n \"string-argv\": \"^0.3.2\",\n \"ts-node\": \"^10.9.1\",\n \"yaml\": \"^2.3.1\"\n },\n \"devDependencies\": {\n \"@kubb/swagger\": \"workspace:*\",\n \"@kubb/ts-config\": \"workspace:*\",\n \"@kubb/tsup-config\": \"workspace:*\",\n \"@types/node\": \"^20.3.1\",\n \"source-map-support\": \"^0.5.21\",\n \"tsup\": \"^6.7.0\",\n \"typescript\": \"^5.1.3\"\n },\n \"packageManager\": \"pnpm@8.3.0\",\n \"engines\": {\n \"node\": \">=18\",\n \"pnpm\": \">=8.3.0\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import pathParser from 'node:path'\n\nimport { isPromiseFulfilledResult, write } from '@kubb/core'\n\nimport { $ } from 'execa'\nimport pc from 'picocolors'\n\nimport type { LogLevel } from '@kubb/core'\nimport { spinner } from './program.ts'\n\nexport type Preset = 'simple'\n\nexport type PackageManager = 'pnpm' | 'npm' | 'yarn'\n\nexport type PresetMeta = {\n 'kubb.config': string\n packages: string[]\n}\n\ntype RunProps = {\n /**\n * @default `'silent'`\n */\n logLevel?: LogLevel\n /**\n * @default `'simple'`\n */\n preset?: Preset\n /**\n * @default `'pnpm'`\n */\n packageManager?: PackageManager\n}\n\nconst presets: Record<Preset, PresetMeta> = {\n simple: {\n 'kubb.config': `\nimport { defineConfig } from '@kubb/core'\nimport createSwagger from '@kubb/swagger'\nimport createSwaggerTS from '@kubb/swagger-ts'\nimport createSwaggerTanstackQuery from '@kubb/swagger-tanstack-query'\n\nexport default defineConfig({\n root: '.',\n input: {\n path: 'https://petstore3.swagger.io/api/v3/openapi.json',\n },\n output: {\n path: './src/gen',\n clean: true,\n },\n hooks: {\n done: 'echo \"🎉 done\"',\n },\n logLevel: 'info',\n plugins: [createSwagger({}), createSwaggerTS({ output: 'models', enumType: 'enum' }), createSwaggerTanstackQuery({ output: './hooks' })],\n})\n `,\n packages: ['@kubb/core', '@kubb/cli', '@kubb/swagger', '@kubb/swagger-ts', '@kubb/swagger-tanstack-query'],\n },\n}\n\nexport async function init({ preset = 'simple', logLevel = 'silent', packageManager = 'pnpm' }: RunProps): Promise<undefined> {\n spinner.start('📦 Initializing Kubb')\n\n const presetMeta = presets[preset]\n const path = pathParser.resolve(process.cwd(), './kubb.config.js')\n const installCommand = packageManager === 'npm' ? 'install' : 'add'\n\n spinner.start(`📀 Writing \\`kubb.config.js\\` ${pc.dim(path)}`)\n await write(presetMeta['kubb.config'], path)\n spinner.succeed(`📀 Wrote \\`kubb.config.js\\` ${pc.dim(path)}`)\n\n const results = await Promise.allSettled([\n $`npm init es6 -y`,\n ...presetMeta.packages.map(async (pack) => {\n spinner.start(`📀 Installing ${pc.dim(pack)}`)\n const { stdout } = await $({ preferLocal: false })`${packageManager} ${installCommand} ${pack}`\n spinner.succeed(`📀 Installed ${pc.dim(pack)}`)\n\n return stdout\n }),\n ])\n\n if (logLevel === 'info') {\n results.forEach((result) => {\n if (isPromiseFulfilledResult(result)) {\n console.log(result.value)\n }\n })\n }\n spinner.succeed(`📦 initialized Kubb`)\n\n return\n}\n","import pathParser from 'node:path'\n\nimport { build, ParallelPluginError, PluginError, SummaryError, timeout, createLogger } from '@kubb/core'\n\nimport type { ExecaReturnValue } from 'execa'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\n\nimport { parseArgsStringToArgv } from 'string-argv'\n\nimport { parseHrtimeToSeconds } from './utils/parseHrtimeToSeconds.ts'\nimport { parseText } from './utils/parseText.ts'\n\nimport type { BuildOutput, CLIOptions, KubbConfig, LogLevel } from '@kubb/core'\nimport { OraWritable } from './utils/OraWritable.ts'\nimport { spinner } from './program.ts'\n\ntype RunProps = {\n config: KubbConfig\n options: CLIOptions\n}\n\nexport async function run({ config, options }: RunProps): Promise<void> {\n const hrstart = process.hrtime()\n\n const logger = createLogger(spinner)\n\n const executeHooks = async (hooks: KubbConfig['hooks'], logLevel: LogLevel) => {\n if (!hooks?.done) {\n return\n }\n\n const commands = Array.isArray(hooks.done) ? hooks.done : [hooks.done]\n\n if (logLevel === 'silent') {\n spinner.start(`🪂 Executing hooks`)\n }\n type Executer = { subProcess: ExecaReturnValue<string>; abort: AbortController['abort'] }\n\n const executers: Promise<Executer>[] = commands.map(async (command) => {\n const oraWritable = new OraWritable(spinner, command)\n const abortController = new AbortController()\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n spinner.start(parseText(`🪂 Executing hook`, { info: ` ${pc.dim(command)}` }, logLevel))\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const subProcess = await execa(cmd, _args, { detached: true, signal: abortController.signal }).pipeStdout!(oraWritable)\n spinner.suffixText = ''\n\n if (logLevel === 'info') {\n spinner.succeed(parseText(`🪂 Executing hook`, { info: ` ${pc.dim(command)}` }, logLevel))\n\n console.log(subProcess.stdout)\n }\n\n // wait for 50ms to be sure that all open files are close(fs)\n await timeout(50)\n\n oraWritable.destroy()\n return { subProcess, abort: abortController.abort.bind(abortController) }\n })\n\n await Promise.all(executers)\n\n if (logLevel === 'silent') {\n spinner.succeed(`🪂 Executing hooks`)\n }\n }\n\n const getSummary = (pluginManager: BuildOutput['pluginManager'], status: 'success' | 'failed'): string[] => {\n const logs: string[] = []\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrstart))\n\n const buildStartPlugins = [\n ...new Set(pluginManager.executed.filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core').map((item) => item.plugin.name)),\n ]\n\n const failedPlugins = config.plugins?.filter((plugin) => !buildStartPlugins.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?.pluginName || !b.meta?.pluginName) {\n return 0\n }\n if (a.meta?.pluginName.length < b.meta?.pluginName.length) {\n return 1\n }\n if (a.meta?.pluginName.length > b.meta?.pluginName.length) {\n return -1\n }\n return 0\n })\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins?.length || 0} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.join(', ') : undefined,\n filesCreated: files.length,\n time: pc.yellow(`${elapsedSeconds}s`),\n output: pathParser.resolve(config.root, config.output.path),\n } as const\n\n if (options.debug) {\n logs.push(pc.bold('Generated files:\\n'))\n logs.push(files.map((file) => `${pc.blue(file.meta?.pluginName)} ${file.path}`).join('\\n'))\n }\n\n logs.push(\n [\n [` ${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [` ${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files`, true],\n [` ${pc.bold('Time:')} ${meta.time}`, true],\n [` ${pc.bold('Output:')} ${meta.output}`, true],\n [`\\n`, 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\n try {\n const { root: _root, ...userConfig } = config\n const logLevel = options.logLevel ?? userConfig.logLevel ?? 'silent'\n const inputPath = options.input ?? userConfig.input.path\n\n spinner.start(parseText(`🚀 Building`, { info: `(${pc.dim(inputPath)})` }, logLevel))\n\n const output = await build({\n config: {\n root: process.cwd(),\n ...userConfig,\n logLevel,\n input: {\n ...userConfig.input,\n path: inputPath,\n },\n output: {\n write: true,\n ...userConfig.output,\n },\n },\n logger,\n })\n\n spinner.succeed(parseText(`🚀 Build completed`, { info: `(${pc.dim(inputPath)})` }, logLevel))\n\n await executeHooks(config.hooks, logLevel)\n\n const summary = getSummary(output.pluginManager, 'success')\n console.log(summary.join(''))\n } catch (error: any) {\n if (error instanceof PluginError || error instanceof ParallelPluginError) {\n const summary = getSummary(error.pluginManager, 'failed')\n\n throw new SummaryError('Something went wrong\\n', { cause: error, summary })\n }\n\n throw new SummaryError('Something went wrong\\n', { cause: error })\n }\n}\n","export function parseHrtimeToSeconds(hrtime: [number, number]) {\n const seconds = (hrtime[0] + hrtime[1] / 1e9).toFixed(3)\n return seconds\n}\n","import type { LogLevel } from '@kubb/core'\n\nexport function parseText(baseText: string, config: Partial<Record<LogLevel, string>>, logLevel: LogLevel = 'silent') {\n return `${baseText}${config[logLevel] || ''}`\n}\n","import type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { Ora } from 'ora'\nimport pc from 'picocolors'\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: NodeJS.BufferEncoding, callback: (error?: Error | null) => void) {\n this.spinner.suffixText = `\\n\\n${pc.bold(pc.blue(this.command))}: ${chunk?.toString()}`\n\n callback()\n }\n}\n","import { isPromise } from '@kubb/core'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { CLIOptions, KubbConfig, KubbUserConfig } from '@kubb/core'\nimport type { CosmiconfigResult } from '../types.ts'\n\nexport async function getConfig(result: CosmiconfigResult, options: CLIOptions): Promise<KubbConfig> {\n const config = result?.config\n let kubbUserConfig: Promise<KubbUserConfig> = Promise.resolve(config) as Promise<KubbUserConfig>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(options)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n JSONConfig = {\n ...JSONConfig,\n plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : undefined,\n }\n\n return JSONConfig as KubbConfig\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nimport { importModule } from '@kubb/core'\n\nimport type { KubbJSONPlugins, KubbObjectPlugin, KubbUserConfig } from '@kubb/core'\n\nfunction isJSONPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[]): plugins is KubbJSONPlugins[] {\n return !!(plugins as KubbJSONPlugins[])?.some((plugin) => {\n return typeof plugin?.[0] === 'string'\n })\n}\n\nfunction isObjectPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[]): plugins is KubbObjectPlugin {\n return plugins instanceof Object && !Array.isArray(plugins)\n}\n\nasync function importPlugin(name: string, options: object): Promise<KubbUserConfig['plugins']> {\n const importedPlugin: any = process.env.NODE_ENV === 'test' ? await import(name) : await importModule(name, process.cwd())\n\n // eslint-disable-next-line\n return importedPlugin?.default ? importedPlugin.default(options) : importedPlugin(options)\n}\n\nexport function getPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[] | KubbObjectPlugin[]): Promise<KubbUserConfig['plugins']> {\n if (isObjectPlugins(plugins)) {\n const promises = Object.keys(plugins).map((name) => {\n return importPlugin(name, plugins[name as keyof typeof plugins])\n })\n return Promise.all(promises)\n }\n\n if (isJSONPlugins(plugins)) {\n const promises = plugins.map((plugin) => {\n const [name, options = {}] = plugin\n return importPlugin(name, options)\n })\n return Promise.all(promises)\n }\n\n return Promise.resolve(plugins)\n}\n","import pc from 'picocolors'\n\nimport { spinner } from '../program'\n\nexport async function startWatcher(path: string[], cb: (path: string[]) => Promise<void>) {\n const { watch } = await import('chokidar')\n\n const ignored = ['**/{.git,node_modules}/**']\n\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n spinner.succeed(pc.yellow(pc.bold(`Change detected: ${type} ${file}`)))\n // revert back\n spinner.spinner = 'clock'\n\n try {\n cb(path)\n } catch (e) {\n spinner.warn(pc.red('Watcher failed'))\n }\n })\n\n return\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { importModule } from '@kubb/core'\n\nimport { cosmiconfig } from 'cosmiconfig'\nimport tsNode from 'ts-node'\nimport yaml from 'yaml'\n\nimport type { CosmiconfigResult } from '../types.ts'\n\nconst jsLoader = async (configFile: string) => {\n return importModule(configFile)\n}\n// TODO fix tsLoader for node 20 when using ESM only\n// https://github.com/TypeStrong/ts-node/issues/1997\nconst tsLoader = (configFile: string) => {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let registerer = { enabled() {} }\n\n try {\n // Register TypeScript compiler instance\n registerer = tsNode.register({\n compilerOptions: { module: 'commonjs' },\n swc: true,\n typeCheck: false,\n })\n\n const module = require(configFile)\n\n return module.default\n } catch (err: any) {\n if (err.code === 'MODULE_NOT_FOUND') {\n throw new Error(`'ts-node' is required for the TypeScript configuration files. Make sure it is installed\\nError: ${err.message}`)\n }\n\n throw err\n } finally {\n registerer.enabled()\n }\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string) {\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n 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.cjs`,\n `.${moduleName}rc.mjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.cjs`,\n `${moduleName}.config.mjs`,\n ],\n loaders: {\n '.yaml': (filepath, content) => yaml.parse(content),\n '.yml': (filepath, content) => yaml.parse(content),\n '.js': jsLoader,\n '.cjs': jsLoader,\n '.mjs': jsLoader,\n '.ts': tsLoader,\n noExt: jsLoader,\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 { ParallelPluginError } from '@kubb/core'\nimport PrettyError from 'pretty-error'\n\nexport const prettyError = new PrettyError()\n .skipPackage('commander')\n .skip(function (traceLine, lineNumber) {\n // exclude renderErrors.ts\n const pattern = new RegExp('renderErrors')\n\n const hasMatch = traceLine?.file?.match(pattern)\n\n if (typeof traceLine.packageName !== 'undefined' && hasMatch) {\n return true\n }\n } as PrettyError.Callback)\n .start()\n\nfunction getErrorCauses(errors: Error[]): string[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n }\n prev = [...prev, prettyError.render(error)]\n\n return prev\n }, [] as string[])\n .filter(Boolean)\n}\n\nexport function renderErrors(error: Error | undefined, { prefixText, debug = false }: { prefixText?: string; debug?: boolean }): string {\n if (!error) {\n return ''\n }\n\n if (error instanceof ParallelPluginError) {\n return [prefixText, ...error.errors.map((e) => renderErrors(e, { debug }))].filter(Boolean).join('\\n')\n }\n\n if (debug) {\n const errors = getErrorCauses([error])\n\n return [prefixText, ...errors].filter(Boolean).join('\\n')\n }\n\n // skip when no debug is set\n prettyError.skipNodeFiles()\n prettyError.skip(function () {\n return true\n } as PrettyError.Callback)\n\n return [prefixText, prettyError.render(error.message)].filter(Boolean).join('\\n')\n}\n","import type { Command } from 'commander'\n\nimport { program } from './program.ts'\n\nexport default function runCLI(argv?: readonly string[]): Command {\n return program.parse(argv)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/program.ts","../package.json","../src/init.ts","../src/run.ts","../src/utils/parseHrtimeToSeconds.ts","../src/utils/parseText.ts","../src/utils/OraWritable.ts","../src/utils/getConfig.ts","../src/utils/getPlugins.ts","../src/utils/watcher.ts","../src/utils/getCosmiConfig.ts","../src/utils/renderErrors.ts","../src/index.ts"],"names":["pathParser","pc","LogLevel","canLogHierarchy","spinner","importModule","moduleName","ParallelPluginError","SummaryError","config"],"mappings":";;;;;;;;;AAAA,OAAOA,iBAAgB;AAEvB,OAAO,SAAS;AAEhB,OAAO,SAAS;AAChB,OAAOC,SAAQ;;;ACHb,cAAW;;;ACFb,OAAO,gBAAgB;AAEvB,SAAS,UAAU,0BAA0B,OAAO,uBAAuB;AAE3E,SAAS,SAAS;AAClB,OAAO,QAAQ;AA6Bf,IAAM,UAAsC;AAAA,EAC1C,QAAQ;AAAA,IACN,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBf,UAAU,CAAC,cAAc,aAAa,iBAAiB,oBAAoB,8BAA8B;AAAA,EAC3G;AACF;AAEA,eAAsB,KAAK,EAAE,SAAS,UAAU,WAAW,SAAS,QAAQ,iBAAiB,OAAO,GAAiC;AACnI,UAAQ,MAAM,6BAAsB;AAEpC,QAAM,aAAa,QAAQ,MAAM;AACjC,QAAM,OAAO,WAAW,QAAQ,QAAQ,IAAI,GAAG,kBAAkB;AACjE,QAAM,iBAAiB,mBAAmB,QAAQ,YAAY;AAE9D,UAAQ,MAAM,wCAAiC,GAAG,IAAI,IAAI,GAAG;AAC7D,QAAM,MAAM,WAAW,aAAa,GAAG,IAAI;AAC3C,UAAQ,QAAQ,sCAA+B,GAAG,IAAI,IAAI,GAAG;AAE7D,QAAM,UAAU,MAAM,QAAQ,WAAW;AAAA,IACvC;AAAA,IACA,GAAG,WAAW,SAAS,IAAI,OAAO,SAAS;AACzC,cAAQ,MAAM,wBAAiB,GAAG,IAAI,IAAI,GAAG;AAC7C,YAAM,EAAE,OAAO,IAAI,MAAM,EAAE,EAAE,aAAa,MAAM,CAAC,IAAI,kBAAkB,kBAAkB;AACzF,cAAQ,QAAQ,uBAAgB,GAAG,IAAI,IAAI,GAAG;AAE9C,aAAO;AAAA,IACT,CAAC;AAAA,EACH,CAAC;AAED,MAAI,gBAAgB,UAAU,SAAS,IAAI,GAAG;AAC5C,YAAQ,QAAQ,CAAC,WAAW;AAC1B,UAAI,yBAAyB,MAAM,GAAG;AACpC,gBAAQ,IAAI,OAAO,KAAK;AAAA,MAC1B;AAAA,IACF,CAAC;AAAA,EACH;AACA,UAAQ,QAAQ,4BAAqB;AAErC;AACF;;;AC9FA,OAAOD,iBAAgB;AAEvB,SAAS,OAAO,qBAAqB,aAAa,cAAc,SAAS,cAAc,kBAAkB,YAAAE,WAAU,mBAAAC,wBAAuB;AAI1I,SAAS,aAAa,2BAA2B;AACjD,SAAS,aAAa;AACtB,OAAOF,SAAQ;AAEf,SAAS,6BAA6B;;;ACV/B,SAAS,qBAAqB,QAAkC;AACrE,QAAM,WAAW,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvD,SAAO;AACT;;;ACHA,SAAS,YAAAC,iBAAgB;AAGlB,SAAS,UAAU,UAAkB,QAA4C,WAAsBA,UAAS,QAAgB;AACrI,SAAO,GAAG,WAAW,OAAO,QAAQ,KAAK;AAC3C;;;ACCA,SAAS,gBAAgB;AAEzB,OAAOD,SAAQ;AAER,IAAM,cAAN,cAA0B,SAAS;AAAA,EACjC;AAAA,EACA;AAAA,EACP,YAAYG,UAAc,SAAiB,MAAwB;AACjE,UAAM,IAAI;AAEV,SAAK,UAAU;AACf,SAAK,UAAUA;AAAA,EACjB;AAAA,EACA,OAAO,OAAY,WAAkC,UAAgD;AACnG,SAAK,QAAQ,aAAa;AAAA;AAAA,EAAOH,IAAG,KAAKA,IAAG,KAAK,KAAK,OAAO,CAAC,MAAM,OAAO,SAAS;AAEpF,aAAS;AAAA,EACX;AACF;;;AHOA,eAAe,aAAa,EAAE,OAAO,SAAS,GAAuC;AACnF,MAAI,CAAC,OAAO,MAAM;AAChB;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;AAErE,MAAIE,iBAAgB,UAAUD,UAAS,MAAM,GAAG;AAC9C,YAAQ,MAAM,iBAAiB;AAAA,EACjC;AAGA,QAAM,YAAiC,SAAS,IAAI,OAAO,YAAY;AACrE,UAAM,cAAc,IAAI,YAAY,SAAS,OAAO;AACpD,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,UAAM,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,sBAAsB,OAAO,CAAC;AAE1D,YAAQ,MAAM,UAAU,kBAAkB,EAAE,MAAM,IAAID,IAAG,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC;AAGpF,UAAM,aAAa,MAAM,MAAM,KAAK,OAAO,EAAE,UAAU,MAAM,QAAQ,gBAAgB,OAAO,CAAC,EAAE,WAAY,WAAW;AACtH,YAAQ,aAAa;AAErB,QAAIE,iBAAgB,UAAUD,UAAS,IAAI,GAAG;AAC5C,cAAQ,QAAQ,UAAU,kBAAkB,EAAE,MAAM,IAAID,IAAG,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC;AAEtF,cAAQ,IAAI,WAAW,MAAM;AAAA,IAC/B;AAGA,UAAM,QAAQ,GAAG;AAEjB,gBAAY,QAAQ;AACpB,WAAO,EAAE,YAAY,OAAO,gBAAgB,MAAM,KAAK,eAAe,EAAE;AAAA,EAC1E,CAAC;AAED,QAAM,QAAQ,IAAI,SAAS;AAE3B,MAAIE,iBAAgB,UAAUD,UAAS,MAAM,GAAG;AAC9C,YAAQ,QAAQ,iBAAiB;AAAA,EACnC;AACF;AAUA,SAAS,WAAW,EAAE,eAAe,QAAQ,SAAS,QAAQ,SAAS,GAA2B;AAChG,QAAM,OAAiB,CAAC;AACxB,QAAM,iBAAiB,qBAAqB,QAAQ,OAAO,OAAO,CAAC;AAEnE,QAAM,oBAAoB;AAAA,IACxB,GAAG,IAAI,IAAI,cAAc,SAAS,OAAO,CAAC,SAAS,KAAK,aAAa,gBAAgB,KAAK,OAAO,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC;AAAA,EACnJ;AAEA,QAAM,gBAAgB,OAAO,SAAS,OAAO,CAAC,WAAW,CAAC,kBAAkB,SAAS,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,OAAO,IAAI;AAC/H,QAAM,eAAe,OAAO,SAAS,UAAU;AAC/C,QAAM,QAAQ,cAAc,YAAY,MAAM,KAAK,CAAC,GAAG,MAAM;AAC3D,QAAI,CAAC,EAAE,MAAM,cAAc,CAAC,EAAE,MAAM,YAAY;AAC9C,aAAO;AAAA,IACT;AACA,QAAI,EAAE,MAAM,WAAW,SAAS,EAAE,MAAM,WAAW,QAAQ;AACzD,aAAO;AAAA,IACT;AACA,QAAI,EAAE,MAAM,WAAW,SAAS,EAAE,MAAM,WAAW,QAAQ;AACzD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AAED,QAAM,OAAO;AAAA,IACX,SACE,WAAW,YACP,GAAGD,IAAG,MAAM,GAAG,kBAAkB,mBAAmB,MAAM,uBAC1D,GAAGA,IAAG,IAAI,GAAG,eAAe,UAAU,UAAU,MAAM;AAAA,IAC5D,eAAe,WAAW,WAAW,eAAe,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI;AAAA,IACxG,cAAc,MAAM;AAAA,IACpB,MAAMA,IAAG,OAAO,GAAG,iBAAiB;AAAA,IACpC,QAAQD,YAAW,QAAQ,OAAO,MAAM,OAAO,OAAO,IAAI;AAAA,EAC5D;AAEA,MAAIG,iBAAgB,UAAU,YAAY,GAAG;AAC3C,SAAK,KAAKF,IAAG,KAAK,oBAAoB,CAAC;AACvC,SAAK,KAAK,MAAM,IAAI,CAAC,SAAS,GAAG,iBAAiB,KAAK,MAAM,UAAU,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI,CAAC;AAAA,EACrG;AAEA,OAAK;AAAA,IACH;AAAA,MACE,CAAC;AAAA,GAAM,IAAI;AAAA,MACX,CAAC,KAAKA,IAAG,KAAK,UAAU,UAAU,KAAK,WAAW,IAAI;AAAA,MACtD,CAAC,MAAMA,IAAG,IAAI,SAAS,UAAU,KAAK,iBAAiB,UAAU,CAAC,CAAC,KAAK,aAAa;AAAA,MACrF,CAAC,GAAGA,IAAG,KAAK,YAAY,UAAU,KAAK,sBAAsB,IAAI;AAAA,MACjE,CAAC,QAAQA,IAAG,KAAK,OAAO,UAAU,KAAK,QAAQ,IAAI;AAAA,MACnD,CAAC,MAAMA,IAAG,KAAK,SAAS,UAAU,KAAK,UAAU,IAAI;AAAA,MACrD,CAAC;AAAA,GAAM,IAAI;AAAA,IACb,EACG,IAAI,CAAC,SAAS;AACb,UAAI,KAAK,GAAG,CAAC,GAAG;AACd,eAAO,KAAK,GAAG,CAAC;AAAA,MAClB;AACA,aAAO;AAAA,IACT,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEA,eAAsB,IAAI,EAAE,OAAO,QAAQ,WAAW,GAA4B;AAChF,QAAM,UAAU,QAAQ,OAAO;AAC/B,QAAM,SAAS,aAAa,OAAO;AAEnC,QAAM,sBAAsB,IAAI,oBAAoB,CAAC,UAAU;AAC7D,UAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAC,EAAE,SAAS,QAAQ,CAAC;AAE3D,YAAQ,aAAaA,IAAG,OAAO,OAAO;AAEtC,gBAAY,WAAW;AAAA,EACzB,CAAC;AAED,MAAI,WAAW,OAAO;AACpB,wBAAoB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,EACjD;AAEA,MAAI;AACF,UAAM,EAAE,MAAM,OAAO,GAAG,WAAW,IAAI;AACvC,UAAM,WAAW,WAAW,YAAY,WAAW,YAAYC,UAAS;AACxE,UAAM,YAAY,SAAS,WAAW,MAAM;AAE5C,YAAQ,MAAM,UAAU,sBAAe,EAAE,MAAM,IAAID,IAAG,IAAI,SAAS,KAAK,GAAG,QAAQ,CAAC;AAEpF,UAAM,SAAS,MAAM,MAAM;AAAA,MACzB,QAAQ;AAAA,QACN,MAAM,QAAQ,IAAI;AAAA,QAClB,GAAG;AAAA,QACH;AAAA,QACA,OAAO;AAAA,UACL,GAAG,WAAW;AAAA,UACd,MAAM;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,GAAG,WAAW;AAAA,QAChB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,WAAW;AAAA,IACpB,CAAC;AAED,YAAQ,aAAa;AACrB,YAAQ,QAAQ,UAAU,6BAAsB,EAAE,MAAM,IAAIA,IAAG,IAAI,SAAS,KAAK,GAAG,QAAQ,CAAC;AAE7F,UAAM,QAAQ,GAAG;AACjB,UAAM,aAAa,EAAE,OAAO,OAAO,OAAO,UAAU,OAAO,WAAW,MAAM,CAAC;AAE7E,UAAM,UAAU,WAAW,EAAE,eAAe,OAAO,eAAe,QAAQ,QAAQ,WAAW,SAAS,UAAU,WAAW,SAAS,CAAC;AACrI,YAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC;AAAA,EAC9B,SAAS,OAAP;AACA,QAAI,UAAoB,CAAC;AAEzB,QAAI,iBAAiB,eAAe,iBAAiB,qBAAqB;AACxE,gBAAU,WAAW,EAAE,eAAe,MAAM,eAAe,QAAQ,QAAQ,UAAU,SAAS,UAAU,WAAW,SAAS,CAAC;AAAA,IAC/H;AAEA,UAAM,IAAI,aAAa,0BAA0B,EAAE,OAAO,OAAgB,QAAQ,CAAC;AAAA,EACrF;AACF;;;AI1MA,SAAS,iBAAiB;;;ACG1B,SAAS,oBAAoB;AAI7B,SAAS,cAAc,SAAsF;AAC3G,SAAO,CAAC,CAAE,SAA+B,KAAK,CAAC,WAAW;AACxD,WAAO,OAAO,SAAS,CAAC,MAAM;AAAA,EAChC,CAAC;AACH;AAEA,SAAS,gBAAgB,SAAqF;AAC5G,SAAO,mBAAmB,UAAU,CAAC,MAAM,QAAQ,OAAO;AAC5D;AAEA,eAAe,aAAa,MAAc,SAAqD;AAE7F,QAAM,iBAAsB,QAAQ,IAAI,aAAa,SAAS,MAAM,OAAO,QAAQ,MAAM,aAAa,MAAM,QAAQ,IAAI,CAAC;AAGzH,SAAO,gBAAgB,UAAU,eAAe,QAAQ,OAAO,IAAI,eAAe,OAAO;AAC3F;AAEO,SAAS,WAAW,SAAiH;AAC1I,MAAI,gBAAgB,OAAO,GAAG;AAC5B,UAAM,WAAW,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC,SAAS;AAClD,aAAO,aAAa,MAAM,QAAQ,IAA4B,CAAC;AAAA,IACjE,CAAC;AACD,WAAO,QAAQ,IAAI,QAAQ;AAAA,EAC7B;AAEA,MAAI,cAAc,OAAO,GAAG;AAC1B,UAAM,WAAW,QAAQ,IAAI,CAAC,WAAW;AACvC,YAAM,CAAC,MAAM,UAAU,CAAC,CAAC,IAAI;AAC7B,aAAO,aAAa,MAAM,OAAO;AAAA,IACnC,CAAC;AACD,WAAO,QAAQ,IAAI,QAAQ;AAAA,EAC7B;AAEA,SAAO,QAAQ,QAAQ,OAAO;AAChC;;;ADnCA,eAAsB,UAAU,QAA2B,YAA6C;AACtG,QAAM,SAAS,QAAQ;AACvB,MAAI,iBAA0C,QAAQ,QAAQ,MAAM;AAGpE,MAAI,OAAO,WAAW,YAAY;AAChC,UAAM,kBAAkB,OAAO,UAAU;AACzC,QAAI,UAAU,eAAe,GAAG;AAC9B,uBAAiB;AAAA,IACnB;AACA,qBAAiB,QAAQ,QAAQ,eAAe;AAAA,EAClD;AAEA,MAAI,aAAa,MAAM;AACvB,eAAa;AAAA,IACX,GAAG;AAAA,IACH,SAAS,WAAW,UAAU,MAAM,WAAW,WAAW,OAAO,IAAI;AAAA,EACvE;AAEA,SAAO;AACT;;;AE3BA,OAAOA,SAAQ;AAIf,eAAsB,aAAa,MAAgB,IAAsD;AACvG,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,UAAU;AAEzC,QAAM,UAAU,CAAC,2BAA2B;AAE5C,QAAM,UAAU,MAAM,MAAM;AAAA,IAC1B,wBAAwB;AAAA,IACxB;AAAA,EACF,CAAC;AACD,UAAQ,GAAG,OAAO,CAAC,MAAM,SAAS;AAChC,YAAQ,QAAQA,IAAG,OAAOA,IAAG,KAAK,oBAAoB,QAAQ,MAAM,CAAC,CAAC;AAEtE,YAAQ,UAAU;AAElB,QAAI;AACF,SAAG,IAAI;AAAA,IACT,SAAS,GAAP;AACA,cAAQ,KAAKA,IAAG,IAAI,gBAAgB,CAAC;AAAA,IACvC;AAAA,EACF,CAAC;AAED;AACF;;;ACvBA,SAAS,gBAAAI,qBAAoB;AAE7B,SAAS,mBAAmB;AAC5B,OAAO,YAAY;AACnB,OAAO,UAAU;AAIjB,IAAM,WAAW,OAAO,eAAuB;AAC7C,SAAOA,cAAa,UAAU;AAChC;AAGA,IAAM,WAAW,CAAC,eAAuB;AAEvC,MAAI,aAAa,EAAE,UAAU;AAAA,EAAC,EAAE;AAEhC,MAAI;AAEF,iBAAa,OAAO,SAAS;AAAA,MAC3B,iBAAiB,EAAE,QAAQ,WAAW;AAAA,MACtC,KAAK;AAAA,MACL,WAAW;AAAA,IACb,CAAC;AAED,UAAM,SAAS,UAAQ,UAAU;AAEjC,WAAO,OAAO;AAAA,EAChB,SAAS,KAAP;AACA,UAAM,QAAQ;AAEd,QAAI,MAAM,SAAS,oBAAoB;AACrC,YAAM,IAAI,MAAM;AAAA,SAAmG,MAAM,SAAS;AAAA,IACpI;AAEA,UAAM;AAAA,EACR,UAAE;AACA,eAAW,QAAQ;AAAA,EACrB;AACF;AAEA,eAAsB,eAAeC,aAAoB,QAA6C;AACpG,QAAM,WAAW,YAAYA,aAAY;AAAA,IACvC,OAAO;AAAA,IACP,cAAc;AAAA,MACZ;AAAA,MACA,IAAIA;AAAA,MACJ,IAAIA;AAAA,MACJ,IAAIA;AAAA,MACJ,IAAIA;AAAA,MAEJ,IAAIA;AAAA,MACJ,IAAIA;AAAA,MACJ,IAAIA;AAAA,MACJ,IAAIA;AAAA,MAEJ,GAAGA;AAAA,MACH,GAAGA;AAAA,MACH,GAAGA;AAAA,MACH,GAAGA;AAAA,IACL;AAAA,IACA,SAAS;AAAA,MACP,SAAS,CAAC,UAAU,YAAY,KAAK,MAAM,OAAO;AAAA,MAClD,QAAQ,CAAC,UAAU,YAAY,KAAK,MAAM,OAAO;AAAA,MACjD,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,QAAM,SAAS,SAAS,MAAM,SAAS,KAAK,MAAM,IAAI,MAAM,SAAS,OAAO;AAE5E,MAAI,QAAQ,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ;AAChD,UAAM,IAAI,MAAM,kGAAkG;AAAA,EACpH;AAEA,SAAO;AACT;;;AC7EA,SAAS,YAAAJ,WAAU,uBAAAK,sBAAqB,mBAAAJ,wBAAuB;AAC/D,OAAO,iBAAiB;AAEjB,IAAM,cAAc,IAAI,YAAY,EACxC,YAAY,WAAW,EACvB,KAAK,SAAU,WAAgB;AAE9B,QAAM,UAAU,IAAI,OAAO,cAAc;AAEzC,QAAM,WAAW,WAAW,MAAM,MAAM,OAAO;AAE/C,MAAI,OAAO,UAAU,gBAAgB,eAAe,UAAU;AAC5D,WAAO;AAAA,EACT;AACF,CAAyB,EACxB,MAAM;AAET,SAAS,eAAe,QAA2B;AACjD,SAAO,OACJ,OAAO,CAAC,MAAM,UAAU;AACvB,UAAM,cAAc,OAAO;AAC3B,QAAI,aAAa;AACf,aAAO,CAAC,GAAG,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAAA,IACnD;AACA,WAAO,CAAC,GAAG,MAAM,YAAY,OAAO,KAAK,CAAC;AAE1C,WAAO;AAAA,EACT,GAAG,CAAC,CAAa,EAChB,OAAO,OAAO;AACnB;AAEO,SAAS,aAAa,OAA0B,EAAE,YAAY,WAAWD,UAAS,OAAO,GAA0D;AACxJ,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiBK,sBAAqB;AACxC,WAAO,CAAC,YAAY,GAAG,MAAM,OAAO,IAAI,CAAC,MAAM,aAAa,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,EAC1G;AAEA,MAAIJ,iBAAgB,UAAU,YAAY,GAAG;AAC3C,UAAM,SAAS,eAAe,CAAC,KAAK,CAAC;AAErC,WAAO,CAAC,YAAY,GAAG,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,EAC1D;AAGA,cAAY,cAAc;AAC1B,cAAY,KAAK,WAAY;AAC3B,WAAO;AAAA,EACT,CAAyB;AAEzB,SAAO,CAAC,YAAY,YAAY,OAAO,MAAM,OAAO,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAClF;;;AX9CA,SAAS,YAAAD,WAAU,gBAAAM,eAAc,mBAAAL,wBAAuB;AAExD,SAAS,eAAe;AAGxB,IAAM,aAAa;AAEZ,IAAM,UAAU,IAAI;AAAA,EACzB,SAAS;AACX,CAAC;AAED,SAAS,eAAe,GAAY,YAA8B;AAChE,QAAM,gBAAgB;AACtB,MAAI,QAAQ;AAGZ,QAAM,eAAe,iBAAiBK,gBAAe,QAAQ;AAE7D,MAAI,cAAc;AAEhB,YAAQ,aAAa;AAAA,EACvB;AAEA,QAAM,UAAU,aAAa,OAAO,EAAE,UAAU,WAAW,UAAU,YAAYP,IAAG,IAAI,eAAe,OAAO,EAAE,CAAC;AAEjH,MAAI,iBAAiB,SAAS;AAC5B,YAAQ,KAAKA,IAAG,OAAO,MAAM,OAAO,CAAC;AACrC,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAIE,iBAAgB,WAAW,UAAUD,UAAS,MAAM,GAAG;AACzD,YAAQ,KAAK,OAAO;AACpB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,KAAK,CAAC,SAAS,GAAI,cAAc,WAAW,CAAC,CAAE,EAAE,KAAK,IAAI,CAAC;AACnE,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAsB,cAAc,MAA+B;AACjE,QAAM,UAAU,IAAI,UAAU;AAE9B,QAAM,gBAAgB,OAAO,OAAe,YAAwB;AAClE,QAAI;AAEF,cAAQ,MAAM,0BAAmB;AACjC,YAAM,SAAS,MAAM,eAAe,YAAY,QAAQ,MAAM;AAC9D,cAAQ,QAAQ,2BAAoBD,IAAG,IAAID,YAAW,SAAS,QAAQ,IAAI,GAAG,OAAO,QAAQ,CAAC,IAAI;AAGlG,UAAI,QAAQ,OAAO;AACjB,cAAMS,UAAS,MAAM,UAAU,QAAQ,OAAO;AAE9C,eAAO,aAAa,CAAC,SAASA,QAAO,MAAM,IAAI,GAAG,OAAO,UAAU;AACjE,gBAAM,IAAI,EAAE,QAAAA,SAAQ,YAAY,QAAQ,CAAC;AACzC,kBAAQ,UAAU;AAClB,kBAAQ,MAAMR,IAAG,OAAOA,IAAG,KAAK,2BAA2B,MAAM,KAAK,OAAO,GAAG,CAAC,CAAC;AAAA,QACpF,CAAC;AAAA,MACH;AAEA,YAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAE9C,YAAM,IAAI,EAAE,OAAO,QAAQ,YAAY,QAAQ,CAAC;AAAA,IAClD,SAAS,GAAP;AACA,qBAAe,GAAG,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,UAAQ,QAAQ,WAAW,+DAA+D,EAAE,OAAO,aAAa;AAEhH,UACG,QAAQ,oBAAoB,+DAA+D,EAC3F,OAAO,uBAAuB,yBAAyB,EACvD,OAAO,0BAA0B,4DAA4D,EAC7F,OAAO,eAAe,cAAc,EAAE,SAAS,MAAM,CAAC,EACtD,OAAO,eAAe,oCAAoC,EAC1D,OAAO,aAAa;AAEvB,UAAQ,QAAQ,QAAQ,WAAW,EAAE,OAAO,YAAY;AACtD,WAAO,KAAK,EAAE,UAAU,OAAO,CAAC;AAAA,EAClC,CAAC;AAED,UAAQ,KAAK;AACb,UAAQ,QAAQ,OAAO;AAEvB,UAAQ,GAAG,aAAa,MAAM;AAC5B,YAAQ,IAAI,YAAY,OAAO,oBAAoB,QAAQ,KAAK,KAAK,GAAG,GAAG,CAAC;AAE5E,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AAED,MAAI;AACF,YAAQ,MAAM,MAAM,EAAE,KAAK,MAAM,CAAC;AAElC,UAAM,QAAQ,kBAAkB;AAAA,EAClC,SAAS,GAAP;AACA,UAAM,QAAQ;AAEd,YAAQ;AAAA,MACN,aAAa,IAAI,MAAM,MAAM,SAAS,EAAE,OAAO,OAAU,CAAC,GAAG;AAAA,QAC3D,UAAU;AAAA,QACV,YAAYA,IAAG,IAAI,gDAAgD;AAAA,MACrE,CAAC;AAAA,IACH;AAEA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,SAAO;AACT;;;AYvHA,eAAO,OAA8B,MAAgC;AACnE,QAAM,cAAc,IAAI;AAC1B","sourcesContent":["import pathParser from 'node:path'\n\nimport ora from 'ora'\nimport type { CAC } from 'cac'\nimport cac from 'cac'\nimport pc from 'picocolors'\n\nimport { version } from '../package.json'\nimport { init } from './init.ts'\nimport { run } from './run.ts'\nimport { getConfig, getCosmiConfig, renderErrors, startWatcher } from './utils/index.ts'\n\nimport { LogLevel, SummaryError, canLogHierarchy } from '@kubb/core'\nimport type { CLIOptions } from '@kubb/core'\nimport { Warning } from '@kubb/core'\nimport { prettyError } from './utils/renderErrors'\n\nconst moduleName = 'kubb'\n\nexport const spinner = ora({\n spinner: 'clock',\n})\n\nfunction programCatcher(e: unknown, CLIOptions: CLIOptions): void {\n const originalError = e as Error\n let error = originalError\n\n // summaryError check\n const summaryError = error instanceof SummaryError ? error : undefined\n\n if (summaryError) {\n // use the real error from summaryError and use the case of SummaryError to display a summary of plugins that failed\n error = summaryError.cause as Error\n }\n\n const message = renderErrors(error, { logLevel: CLIOptions.logLevel, prefixText: pc.red(originalError?.message) })\n\n if (error instanceof Warning) {\n spinner.warn(pc.yellow(error.message))\n process.exit(0)\n }\n\n if (canLogHierarchy(CLIOptions.logLevel, LogLevel.silent)) {\n spinner.fail(message)\n process.exit(1)\n }\n\n spinner.fail([message, ...(summaryError?.summary || [])].join('\\n'))\n process.exit(1)\n}\n\nexport async function createProgram(argv?: string[]): Promise<CAC> {\n const program = cac(moduleName)\n\n const programAction = async (input: string, options: CLIOptions) => {\n try {\n // CONFIG\n spinner.start('💾 Loading config')\n const result = await getCosmiConfig(moduleName, options.config)\n spinner.succeed(`💾 Config loaded(${pc.dim(pathParser.relative(process.cwd(), result.filepath))})`)\n // END CONFIG\n\n if (options.watch) {\n const config = await getConfig(result, options)\n\n return startWatcher([input || config.input.path], async (paths) => {\n await run({ config, CLIOptions: options })\n spinner.spinner = 'simpleDotsScrolling'\n spinner.start(pc.yellow(pc.bold(`Watching for changes in ${paths.join(' and ')}`)))\n })\n }\n\n const config = await getConfig(result, options)\n\n await run({ input, config, CLIOptions: options })\n } catch (e) {\n programCatcher(e, options)\n }\n }\n\n program.command('[input]', 'Path of the input file(overrides the one in `kubb.config.js`)').action(programAction)\n\n program\n .command('generate [input]', 'Path of the input file(overrides the one in `kubb.config.js`)')\n .option('-c, --config <path>', 'Path to the Kubb config')\n .option('-l, --log-level <type>', 'Type of the logging(overrides the one in `kubb.config.js`)')\n .option('-d, --debug', 'Debug mode', { default: false })\n .option('-w, --watch', 'Watch mode based on the input file')\n .action(programAction)\n\n program.command('init', 'Init Kubb').action(async () => {\n return init({ logLevel: 'info' })\n })\n\n program.help()\n program.version(version)\n\n program.on('command:*', () => {\n console.log(prettyError.render(`Invalid command: ${program.args.join(' ')}`))\n\n process.exit(1)\n })\n\n try {\n program.parse(argv, { run: false })\n\n await program.runMatchedCommand()\n } catch (e) {\n const error = e as Error\n\n console.log(\n renderErrors(new Error(error.message, { cause: undefined }), {\n logLevel: 'info',\n prefixText: pc.red('Something went wrong with processing the CLI\\n'),\n })\n )\n\n process.exit(1)\n }\n\n return program\n}\n","{\n \"name\": \"@kubb/cli\",\n \"version\": \"1.2.2\",\n \"description\": \"Generator cli\",\n \"keywords\": [\n \"typescript\",\n \"plugins\",\n \"kubb\",\n \"codegen\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/kubb-project/kubb.git\",\n \"directory\": \"packages/cli\"\n },\n \"license\": \"MIT\",\n \"author\": \"Stijn Van Hulle <stijn@stijnvanhulle.be\",\n \"sideEffects\": false,\n \"type\": \"module\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"kubb\": \"bin/kubb.js\"\n },\n \"files\": [\n \"dist\",\n \"bin\",\n \"!/**/**.test.**\",\n \"!/**/__tests__/**\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"clean\": \"rimraf ./dist\",\n \"lint\": \"ESLINT_USE_FLAT_CONFIG=true eslint --format pretty .\",\n \"lint-fix\": \"bun run lint --quiet --fix\",\n \"release\": \"pnpm publish --no-git-check\",\n \"start\": \"tsup --watch\",\n \"test\": \"vitest --passWithNoTests\",\n \"typecheck\": \"tsc -p ./tsconfig.json --noEmit --emitDeclarationOnly false\"\n },\n \"dependencies\": {\n \"@kubb/core\": \"workspace:*\",\n \"@swc/core\": \"^1.3.64\",\n \"chokidar\": \"^3.5.3\",\n \"cac\": \"^6.7.14\",\n \"cosmiconfig\": \"^8.2.0\",\n \"execa\": \"^7.1.1\",\n \"ora\": \"^6.3.1\",\n \"picocolors\": \"^1.0.0\",\n \"pretty-error\": \"^4.0.0\",\n \"string-argv\": \"^0.3.2\",\n \"ts-node\": \"^10.9.1\",\n \"yaml\": \"^2.3.1\"\n },\n \"devDependencies\": {\n \"@kubb/swagger\": \"workspace:*\",\n \"@kubb/ts-config\": \"workspace:*\",\n \"@kubb/tsup-config\": \"workspace:*\",\n \"@types/node\": \"^20.3.1\",\n \"source-map-support\": \"^0.5.21\",\n \"tsup\": \"^7.0.0\",\n \"typescript\": \"^5.1.3\"\n },\n \"packageManager\": \"pnpm@8.3.0\",\n \"engines\": {\n \"node\": \">=18\",\n \"pnpm\": \">=8.3.0\"\n },\n \"preferGlobal\": true,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n }\n}\n","import pathParser from 'node:path'\n\nimport { LogLevel, isPromiseFulfilledResult, write, canLogHierarchy } from '@kubb/core'\n\nimport { $ } from 'execa'\nimport pc from 'picocolors'\n\nimport type { LogLevels } from '@kubb/core'\nimport { spinner } from './program.ts'\n\nexport type Preset = 'simple'\n\nexport type PackageManager = 'pnpm' | 'npm' | 'yarn'\n\nexport type PresetMeta = {\n 'kubb.config': string\n packages: string[]\n}\n\ntype RunProps = {\n /**\n * @default `'silent'`\n */\n logLevel?: LogLevels\n /**\n * @default `'simple'`\n */\n preset?: Preset\n /**\n * @default `'pnpm'`\n */\n packageManager?: PackageManager\n}\n\nconst presets: Record<Preset, PresetMeta> = {\n simple: {\n 'kubb.config': `\nimport { defineConfig } from '@kubb/core'\nimport createSwagger from '@kubb/swagger'\nimport createSwaggerTS from '@kubb/swagger-ts'\nimport createSwaggerTanstackQuery from '@kubb/swagger-tanstack-query'\n\nexport default defineConfig({\n root: '.',\n input: {\n path: 'https://petstore3.swagger.io/api/v3/openapi.json',\n },\n output: {\n path: './src/gen',\n clean: true,\n },\n hooks: {\n done: 'echo \"🎉 done\"',\n },\n logLevel: 'info',\n plugins: [createSwagger({}), createSwaggerTS({ output: 'models', enumType: 'enum' }), createSwaggerTanstackQuery({ output: './hooks' })],\n})\n `,\n packages: ['@kubb/core', '@kubb/cli', '@kubb/swagger', '@kubb/swagger-ts', '@kubb/swagger-tanstack-query'],\n },\n}\n\nexport async function init({ preset = 'simple', logLevel = LogLevel.silent, packageManager = 'pnpm' }: RunProps): Promise<undefined> {\n spinner.start('📦 Initializing Kubb')\n\n const presetMeta = presets[preset]\n const path = pathParser.resolve(process.cwd(), './kubb.config.js')\n const installCommand = packageManager === 'npm' ? 'install' : 'add'\n\n spinner.start(`📀 Writing \\`kubb.config.js\\` ${pc.dim(path)}`)\n await write(presetMeta['kubb.config'], path)\n spinner.succeed(`📀 Wrote \\`kubb.config.js\\` ${pc.dim(path)}`)\n\n const results = await Promise.allSettled([\n $`npm init es6 -y`,\n ...presetMeta.packages.map(async (pack) => {\n spinner.start(`📀 Installing ${pc.dim(pack)}`)\n const { stdout } = await $({ preferLocal: false })`${packageManager} ${installCommand} ${pack}`\n spinner.succeed(`📀 Installed ${pc.dim(pack)}`)\n\n return stdout\n }),\n ])\n\n if (canLogHierarchy(logLevel, LogLevel.info)) {\n results.forEach((result) => {\n if (isPromiseFulfilledResult(result)) {\n console.log(result.value)\n }\n })\n }\n spinner.succeed(`📦 initialized Kubb`)\n\n return\n}\n","import pathParser from 'node:path'\n\nimport { build, ParallelPluginError, PluginError, SummaryError, timeout, createLogger, randomPicoColour, LogLevel, canLogHierarchy } from '@kubb/core'\n\nimport type { ExecaReturnValue } from 'execa'\n\nimport { performance, PerformanceObserver } from 'node:perf_hooks'\nimport { execa } from 'execa'\nimport pc from 'picocolors'\n\nimport { parseArgsStringToArgv } from 'string-argv'\n\nimport { parseHrtimeToSeconds } from './utils/parseHrtimeToSeconds.ts'\nimport { parseText } from './utils/parseText.ts'\n\nimport type { BuildOutput, CLIOptions, KubbConfig, LogLevels } from '@kubb/core'\nimport { OraWritable } from './utils/OraWritable.ts'\nimport { spinner } from './program.ts'\n\ntype RunProps = {\n input?: string\n config: KubbConfig\n CLIOptions: CLIOptions\n}\n\ntype ExecutingHooksProps = {\n hooks: KubbConfig['hooks']\n logLevel: LogLevels\n debug?: boolean\n}\n\nasync 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 (canLogHierarchy(logLevel, LogLevel.silent)) {\n spinner.start(`Executing hooks`)\n }\n type Executer = { subProcess: ExecaReturnValue<string>; abort: AbortController['abort'] }\n\n const executers: Promise<Executer>[] = commands.map(async (command) => {\n const oraWritable = new OraWritable(spinner, command)\n const abortController = new AbortController()\n const [cmd, ..._args] = [...parseArgsStringToArgv(command)]\n\n spinner.start(parseText(`Executing hook`, { info: ` ${pc.dim(command)}` }, logLevel))\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const subProcess = await execa(cmd, _args, { detached: true, signal: abortController.signal }).pipeStdout!(oraWritable)\n spinner.suffixText = ''\n\n if (canLogHierarchy(logLevel, LogLevel.info)) {\n spinner.succeed(parseText(`Executing hook`, { info: ` ${pc.dim(command)}` }, logLevel))\n\n console.log(subProcess.stdout)\n }\n\n // wait for 100ms to be sure that all open files are close(fs)\n await timeout(100)\n\n oraWritable.destroy()\n return { subProcess, abort: abortController.abort.bind(abortController) }\n })\n\n await Promise.all(executers)\n\n if (canLogHierarchy(logLevel, LogLevel.silent)) {\n spinner.succeed(`Executing hooks`)\n }\n}\n\ntype SummaryProps = {\n pluginManager: BuildOutput['pluginManager']\n status: 'success' | 'failed'\n hrstart: [number, number]\n config: KubbConfig\n logLevel?: LogLevels\n}\n\nfunction getSummary({ pluginManager, status, hrstart, config, logLevel }: SummaryProps): string[] {\n const logs: string[] = []\n const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(hrstart))\n\n const buildStartPlugins = [\n ...new Set(pluginManager.executed.filter((item) => item.hookName === 'buildStart' && item.plugin.name !== 'core').map((item) => item.plugin.name)),\n ]\n\n const failedPlugins = config.plugins?.filter((plugin) => !buildStartPlugins.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?.pluginName || !b.meta?.pluginName) {\n return 0\n }\n if (a.meta?.pluginName.length < b.meta?.pluginName.length) {\n return 1\n }\n if (a.meta?.pluginName.length > b.meta?.pluginName.length) {\n return -1\n }\n return 0\n })\n\n const meta = {\n plugins:\n status === 'success'\n ? `${pc.green(`${buildStartPlugins.length} successful`)}, ${pluginsCount} total`\n : `${pc.red(`${failedPlugins?.length || 0} failed`)}, ${pluginsCount} total`,\n pluginsFailed: status === 'failed' ? failedPlugins?.map((name) => randomPicoColour(name))?.join(', ') : undefined,\n filesCreated: files.length,\n time: pc.yellow(`${elapsedSeconds}s`),\n output: pathParser.resolve(config.root, config.output.path),\n } as const\n\n if (canLogHierarchy(logLevel, 'stacktrace')) {\n logs.push(pc.bold('Generated files:\\n'))\n logs.push(files.map((file) => `${randomPicoColour(file.meta?.pluginName)} ${file.path}`).join('\\n'))\n }\n\n logs.push(\n [\n [`\\n`, true],\n [` ${pc.bold('Plugins:')} ${meta.plugins}`, true],\n [` ${pc.dim('Failed:')} ${meta.pluginsFailed || 'none'}`, !!meta.pluginsFailed],\n [`${pc.bold('Generated:')} ${meta.filesCreated} files`, true],\n [` ${pc.bold('Time:')} ${meta.time}`, true],\n [` ${pc.bold('Output:')} ${meta.output}`, true],\n [`\\n`, 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\nexport async function run({ input, config, CLIOptions }: RunProps): Promise<void> {\n const hrstart = process.hrtime()\n const logger = createLogger(spinner)\n\n const performanceOpserver = new PerformanceObserver((items) => {\n const message = `${items.getEntries()[0].duration.toFixed(0)}ms`\n\n spinner.suffixText = pc.yellow(message)\n\n performance.clearMarks()\n })\n\n if (CLIOptions.debug) {\n performanceOpserver.observe({ type: 'measure' })\n }\n\n try {\n const { root: _root, ...userConfig } = config\n const logLevel = CLIOptions.logLevel ?? userConfig.logLevel ?? LogLevel.silent\n const inputPath = input ?? userConfig.input.path\n\n spinner.start(parseText(`🚀 Building`, { info: `(${pc.dim(inputPath)})` }, logLevel))\n\n const output = await build({\n config: {\n root: process.cwd(),\n ...userConfig,\n logLevel,\n input: {\n ...userConfig.input,\n path: inputPath,\n },\n output: {\n write: true,\n ...userConfig.output,\n },\n },\n logger,\n debug: CLIOptions.debug,\n })\n\n spinner.suffixText = ''\n spinner.succeed(parseText(`🚀 Build completed`, { info: `(${pc.dim(inputPath)})` }, logLevel))\n\n await timeout(100)\n await executeHooks({ hooks: config.hooks, logLevel, debug: CLIOptions.debug })\n\n const summary = getSummary({ pluginManager: output.pluginManager, config, status: 'success', hrstart, logLevel: CLIOptions.logLevel })\n console.log(summary.join(''))\n } catch (error) {\n let summary: string[] = []\n\n if (error instanceof PluginError || error instanceof ParallelPluginError) {\n summary = getSummary({ pluginManager: error.pluginManager, config, status: 'failed', hrstart, logLevel: CLIOptions.logLevel })\n }\n\n throw new SummaryError('Something went wrong\\n', { cause: error as Error, summary })\n }\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 { LogLevel } from '@kubb/core'\nimport type { LogLevels } from '@kubb/core'\n\nexport function parseText(baseText: string, config: Partial<Record<LogLevels, string>>, logLevel: LogLevels = LogLevel.silent): string {\n return `${baseText}${config[logLevel] || ''}`\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\nimport type { WritableOptions } from 'node:stream'\nimport { Writable } from 'node:stream'\nimport type { Ora } from 'ora'\nimport pc from 'picocolors'\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: NodeJS.BufferEncoding, callback: (error?: Error | null) => void): void {\n this.spinner.suffixText = `\\n\\n${pc.bold(pc.blue(this.command))}: ${chunk?.toString()}`\n\n callback()\n }\n}\n","import { isPromise } from '@kubb/core'\n\nimport { getPlugins } from './getPlugins.ts'\n\nimport type { CLIOptions, KubbConfig, KubbUserConfig } from '@kubb/core'\nimport type { CosmiconfigResult } from '../types.ts'\n\nexport async function getConfig(result: CosmiconfigResult, CLIOptions: CLIOptions): Promise<KubbConfig> {\n const config = result?.config\n let kubbUserConfig: Promise<KubbUserConfig> = Promise.resolve(config) as Promise<KubbUserConfig>\n\n // for ts or js files\n if (typeof config === 'function') {\n const possiblePromise = config(CLIOptions)\n if (isPromise(possiblePromise)) {\n kubbUserConfig = possiblePromise\n }\n kubbUserConfig = Promise.resolve(possiblePromise)\n }\n\n let JSONConfig = await kubbUserConfig\n JSONConfig = {\n ...JSONConfig,\n plugins: JSONConfig.plugins ? await getPlugins(JSONConfig.plugins) : undefined,\n }\n\n return JSONConfig as KubbConfig\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nimport { importModule } from '@kubb/core'\n\nimport type { KubbJSONPlugins, KubbObjectPlugin, KubbUserConfig } from '@kubb/core'\n\nfunction isJSONPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[]): plugins is KubbJSONPlugins[] {\n return !!(plugins as KubbJSONPlugins[])?.some((plugin) => {\n return typeof plugin?.[0] === 'string'\n })\n}\n\nfunction isObjectPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[]): plugins is KubbObjectPlugin {\n return plugins instanceof Object && !Array.isArray(plugins)\n}\n\nasync function importPlugin(name: string, options: object): Promise<KubbUserConfig['plugins']> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any\n const importedPlugin: any = process.env.NODE_ENV === 'test' ? await import(name) : await importModule(name, process.cwd())\n\n // eslint-disable-next-line\n return importedPlugin?.default ? importedPlugin.default(options) : importedPlugin(options)\n}\n\nexport function getPlugins(plugins: KubbUserConfig['plugins'] | KubbJSONPlugins[] | KubbObjectPlugin[]): Promise<KubbUserConfig['plugins']> {\n if (isObjectPlugins(plugins)) {\n const promises = Object.keys(plugins).map((name) => {\n return importPlugin(name, plugins[name as keyof typeof plugins])\n })\n return Promise.all(promises)\n }\n\n if (isJSONPlugins(plugins)) {\n const promises = plugins.map((plugin) => {\n const [name, options = {}] = plugin\n return importPlugin(name, options)\n })\n return Promise.all(promises)\n }\n\n return Promise.resolve(plugins)\n}\n","import pc from 'picocolors'\n\nimport { spinner } from '../program'\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\n const watcher = watch(path, {\n ignorePermissionErrors: true,\n ignored,\n })\n watcher.on('all', (type, file) => {\n spinner.succeed(pc.yellow(pc.bold(`Change detected: ${type} ${file}`)))\n // revert back\n spinner.spinner = 'clock'\n\n try {\n cb(path)\n } catch (e) {\n spinner.warn(pc.red('Watcher failed'))\n }\n })\n\n return\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { importModule } from '@kubb/core'\n\nimport { cosmiconfig } from 'cosmiconfig'\nimport tsNode from 'ts-node'\nimport yaml from 'yaml'\n\nimport type { CosmiconfigResult } from '../types.ts'\n\nconst jsLoader = async (configFile: string) => {\n return importModule(configFile)\n}\n// TODO fix tsLoader for node 20 when using ESM only\n// https://github.com/TypeStrong/ts-node/issues/1997\nconst tsLoader = (configFile: string) => {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let registerer = { enabled() {} }\n\n try {\n // Register TypeScript compiler instance\n registerer = tsNode.register({\n compilerOptions: { module: 'commonjs' },\n swc: true,\n typeCheck: false,\n })\n\n const module = require(configFile)\n\n return module.default\n } catch (err) {\n const error = err as Error\n\n if (error.name === 'MODULE_NOT_FOUND') {\n throw new Error(`'ts-node' is required for the TypeScript configuration files. Make sure it is installed\\nError: ${error.message}`)\n }\n\n throw error\n } finally {\n registerer.enabled()\n }\n}\n\nexport async function getCosmiConfig(moduleName: string, config?: string): Promise<CosmiconfigResult> {\n const explorer = cosmiconfig(moduleName, {\n cache: false,\n 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.cjs`,\n `.${moduleName}rc.mjs`,\n\n `${moduleName}.config.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.cjs`,\n `${moduleName}.config.mjs`,\n ],\n loaders: {\n '.yaml': (filepath, content) => yaml.parse(content),\n '.yml': (filepath, content) => yaml.parse(content),\n '.js': jsLoader,\n '.cjs': jsLoader,\n '.mjs': jsLoader,\n '.ts': tsLoader,\n noExt: jsLoader,\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","/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { LogLevels } from '@kubb/core'\nimport { LogLevel, ParallelPluginError, canLogHierarchy } from '@kubb/core'\nimport PrettyError from 'pretty-error'\n\nexport const prettyError = new PrettyError()\n .skipPackage('commander')\n .skip(function (traceLine: any) {\n // exclude renderErrors.ts\n const pattern = new RegExp('renderErrors')\n\n const hasMatch = traceLine?.file?.match(pattern)\n\n if (typeof traceLine.packageName !== 'undefined' && hasMatch) {\n return true\n }\n } as PrettyError.Callback)\n .start()\n\nfunction getErrorCauses(errors: Error[]): string[] {\n return errors\n .reduce((prev, error) => {\n const causedError = error?.cause as Error\n if (causedError) {\n prev = [...prev, ...getErrorCauses([causedError])]\n }\n prev = [...prev, prettyError.render(error)]\n\n return prev\n }, [] as string[])\n .filter(Boolean)\n}\n\nexport function renderErrors(error: Error | undefined, { prefixText, logLevel = LogLevel.silent }: { prefixText?: string; logLevel?: LogLevels }): string {\n if (!error) {\n return ''\n }\n\n if (error instanceof ParallelPluginError) {\n return [prefixText, ...error.errors.map((e) => renderErrors(e, { logLevel }))].filter(Boolean).join('\\n')\n }\n\n if (canLogHierarchy(logLevel, 'stacktrace')) {\n const errors = getErrorCauses([error])\n\n return [prefixText, ...errors].filter(Boolean).join('\\n')\n }\n\n // skip when no debug is set\n prettyError.skipNodeFiles()\n prettyError.skip(function () {\n return true\n } as PrettyError.Callback)\n\n return [prefixText, prettyError.render(error.message)].filter(Boolean).join('\\n')\n}\n","import { createProgram } from './program.ts'\n\nexport default async function runCLI(argv?: string[]): Promise<void> {\n await createProgram(argv)\n}\n"]}
|
package/dist/index.d.ts
CHANGED