@kubb/cli 5.0.0-beta.14 → 5.0.0-beta.15

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.
Files changed (42) hide show
  1. package/dist/{agent-SCGeyEIE.js → agent-BTvJ7IUq.js} +2 -2
  2. package/dist/{agent-SCGeyEIE.js.map → agent-BTvJ7IUq.js.map} +1 -1
  3. package/dist/{agent-Dn1Kfd_R.cjs → agent-vzaMEbPS.cjs} +2 -2
  4. package/dist/{agent-Dn1Kfd_R.cjs.map → agent-vzaMEbPS.cjs.map} +1 -1
  5. package/dist/{generate-CLYE3RWE.js → generate-BczcDWHS.js} +2 -2
  6. package/dist/{generate-CLYE3RWE.js.map → generate-BczcDWHS.js.map} +1 -1
  7. package/dist/{generate-z_83cgcO.cjs → generate-BkKnYYok.cjs} +2 -2
  8. package/dist/{generate-z_83cgcO.cjs.map → generate-BkKnYYok.cjs.map} +1 -1
  9. package/dist/index.cjs +6 -6
  10. package/dist/index.js +6 -6
  11. package/dist/{init-BvHHgquV.js → init-CGLK93Ny.js} +2 -2
  12. package/dist/{init-BvHHgquV.js.map → init-CGLK93Ny.js.map} +1 -1
  13. package/dist/{init-S-eLRaep.cjs → init-DH-tkhDa.cjs} +2 -2
  14. package/dist/{init-S-eLRaep.cjs.map → init-DH-tkhDa.cjs.map} +1 -1
  15. package/dist/{mcp-BkBwpF6r.cjs → mcp-BzuRPhN0.cjs} +2 -2
  16. package/dist/{mcp-BkBwpF6r.cjs.map → mcp-BzuRPhN0.cjs.map} +1 -1
  17. package/dist/{mcp-DEjoAmP2.js → mcp-CmSOtsiY.js} +2 -2
  18. package/dist/{mcp-DEjoAmP2.js.map → mcp-CmSOtsiY.js.map} +1 -1
  19. package/dist/package-B3fEVBWy.js +6 -0
  20. package/dist/package-B3fEVBWy.js.map +1 -0
  21. package/dist/{package-C7ZmbQd7.cjs → package-rMKbcyw1.cjs} +2 -2
  22. package/dist/package-rMKbcyw1.cjs.map +1 -0
  23. package/dist/{run-BNvaRFvz.js → run-BvsacB4B.js} +127 -72
  24. package/dist/run-BvsacB4B.js.map +1 -0
  25. package/dist/{run-DK-3QOOS.cjs → run-ftIEu5xK.cjs} +127 -72
  26. package/dist/run-ftIEu5xK.cjs.map +1 -0
  27. package/dist/{validate-C3hmnp-x.cjs → validate--WZ6E0gu.cjs} +2 -2
  28. package/dist/{validate-C3hmnp-x.cjs.map → validate--WZ6E0gu.cjs.map} +1 -1
  29. package/dist/{validate-qvniflGp.js → validate-D3p-TOu4.js} +2 -2
  30. package/dist/{validate-qvniflGp.js.map → validate-D3p-TOu4.js.map} +1 -1
  31. package/package.json +6 -6
  32. package/src/loggers/clackLogger.ts +45 -55
  33. package/src/loggers/githubActionsLogger.ts +64 -6
  34. package/src/loggers/plainLogger.ts +47 -11
  35. package/src/loggers/utils.ts +4 -1
  36. package/src/runners/generate/run.ts +20 -8
  37. package/src/runners/generate/utils.ts +2 -2
  38. package/dist/package-C7ZmbQd7.cjs.map +0 -1
  39. package/dist/package-D5eM8mZw.js +0 -6
  40. package/dist/package-D5eM8mZw.js.map +0 -1
  41. package/dist/run-BNvaRFvz.js.map +0 -1
  42. package/dist/run-DK-3QOOS.cjs.map +0 -1
@@ -2,7 +2,7 @@ const require_chunk = require("./chunk-ByKO4r7w.cjs");
2
2
  const require_errors = require("./errors-CLCjoSg0.cjs");
3
3
  const require_telemetry = require("./telemetry-B2iWkY5e.cjs");
4
4
  const require_shell = require("./shell-475fQKaX.cjs");
5
- const require_package = require("./package-C7ZmbQd7.cjs");
5
+ const require_package = require("./package-rMKbcyw1.cjs");
6
6
  const require_constants = require("./constants-BINTA5VZ.cjs");
7
7
  let node_util = require("node:util");
8
8
  let node_events = require("node:events");
@@ -17,7 +17,6 @@ node_process = require_chunk.__toESM(node_process, 1);
17
17
  let _clack_prompts = require("@clack/prompts");
18
18
  _clack_prompts = require_chunk.__toESM(_clack_prompts, 1);
19
19
  let _kubb_core = require("@kubb/core");
20
- let node_stream = require("node:stream");
21
20
  let cosmiconfig = require("cosmiconfig");
22
21
  let jiti = require("jiti");
23
22
  let tinyexec = require("tinyexec");
@@ -491,21 +490,6 @@ async function detectLinter() {
491
490
  //#endregion
492
491
  //#region src/loggers/clackLogger.ts
493
492
  /**
494
- * Node.js `Writable` stream that forwards each chunk to a clack `taskLog` message.
495
- * Used to pipe hook subprocess output into the clack task log UI.
496
- */
497
- var ClackWritable = class extends node_stream.Writable {
498
- taskLog;
499
- constructor(taskLog, opts) {
500
- super(opts);
501
- this.taskLog = taskLog;
502
- }
503
- _write(chunk, _encoding, callback) {
504
- this.taskLog.message(`${(0, node_util.styleText)("dim", chunk.toString())}`);
505
- callback();
506
- }
507
- };
508
- /**
509
493
  * TTY logger with beautiful UI and progress indicators for local development.
510
494
  */
511
495
  const clackLogger = (0, _kubb_core.defineLogger)({
@@ -521,7 +505,8 @@ const clackLogger = (0, _kubb_core.defineLogger)({
521
505
  hrStart: node_process.default.hrtime(),
522
506
  spinner: _clack_prompts.spinner(),
523
507
  isSpinning: false,
524
- activeProgress: /* @__PURE__ */ new Map()
508
+ activeProgress: /* @__PURE__ */ new Map(),
509
+ activeHookLogs: /* @__PURE__ */ new Map()
525
510
  };
526
511
  function reset() {
527
512
  for (const [_key, active] of state.activeProgress) {
@@ -537,6 +522,7 @@ const clackLogger = (0, _kubb_core.defineLogger)({
537
522
  state.spinner = _clack_prompts.spinner();
538
523
  state.isSpinning = false;
539
524
  state.activeProgress.clear();
525
+ state.activeHookLogs.clear();
540
526
  }
541
527
  function showProgressStep() {
542
528
  if (logLevel <= _kubb_core.logLevel.silent) return;
@@ -638,8 +624,10 @@ Run \`npm install -g @kubb/cli\` to update`, "Update available for `Kubb`", {
638
624
  context.on("kubb:generation:start", ({ config }) => {
639
625
  reset();
640
626
  state.totalPlugins = config.plugins?.length ?? 0;
627
+ if (logLevel <= _kubb_core.logLevel.silent) return;
641
628
  const text = getMessage(["Generation started", config.name ? `for ${(0, node_util.styleText)("dim", config.name)}` : void 0].filter(Boolean).join(" "));
642
629
  _clack_prompts.intro(text);
630
+ startSpinner(getMessage("Setting up plugins"));
643
631
  });
644
632
  context.on("kubb:plugin:start", ({ plugin }) => {
645
633
  if (logLevel <= _kubb_core.logLevel.silent) return;
@@ -707,38 +695,44 @@ Run \`npm install -g @kubb/cli\` to update`, "Update available for `Kubb`", {
707
695
  showProgressStep();
708
696
  });
709
697
  context.on("kubb:generation:end", ({ config }) => {
698
+ stopSpinner();
710
699
  const text = getMessage(config.name ? `Generation completed for ${(0, node_util.styleText)("dim", config.name)}` : "Generation completed");
711
700
  _clack_prompts.outro(text);
712
701
  });
713
702
  context.on("kubb:format:start", () => {
714
703
  if (logLevel <= _kubb_core.logLevel.silent) return;
715
- const text = getMessage("Format started");
716
- _clack_prompts.intro(text);
717
- });
718
- context.on("kubb:format:end", () => {
719
- if (logLevel <= _kubb_core.logLevel.silent) return;
720
- const text = getMessage("Format completed");
721
- _clack_prompts.outro(text);
704
+ _clack_prompts.log.step(getMessage("Formatting"));
722
705
  });
723
706
  context.on("kubb:lint:start", () => {
724
707
  if (logLevel <= _kubb_core.logLevel.silent) return;
725
- const text = getMessage("Lint started");
726
- _clack_prompts.intro(text);
708
+ _clack_prompts.log.step(getMessage("Linting"));
727
709
  });
728
- context.on("kubb:lint:end", () => {
710
+ context.on("kubb:hooks:start", () => {
729
711
  if (logLevel <= _kubb_core.logLevel.silent) return;
730
- const text = getMessage("Lint completed");
731
- _clack_prompts.outro(text);
712
+ _clack_prompts.log.step(getMessage("Running hooks"));
732
713
  });
733
- context.on("kubb:hook:start", ({ command, args }) => {
734
- if (logLevel <= _kubb_core.logLevel.silent) return;
735
- const text = getMessage(`Hook ${(0, node_util.styleText)("dim", formatCommandWithArgs(command, args))} started`);
736
- _clack_prompts.intro(text);
714
+ context.on("kubb:hook:start", ({ id, command, args }) => {
715
+ if (logLevel <= _kubb_core.logLevel.silent || !id) return;
716
+ stopSpinner();
717
+ const title = getMessage(`Running ${(0, node_util.styleText)("dim", formatCommandWithArgs(command, args))}`);
718
+ const taskLog = _clack_prompts.taskLog({ title });
719
+ state.activeHookLogs.set(id, {
720
+ taskLog,
721
+ hrStart: node_process.default.hrtime()
722
+ });
737
723
  });
738
- context.on("kubb:hook:end", ({ command, args }) => {
739
- if (logLevel <= _kubb_core.logLevel.silent) return;
740
- const text = getMessage(`Hook ${(0, node_util.styleText)("dim", formatCommandWithArgs(command, args))} successfully executed`);
741
- _clack_prompts.outro(text);
724
+ context.on("kubb:hook:end", ({ id, command, args, success, error }) => {
725
+ if (logLevel <= _kubb_core.logLevel.silent || !id) return;
726
+ const active = state.activeHookLogs.get(id);
727
+ if (!active) return;
728
+ state.activeHookLogs.delete(id);
729
+ const commandWithArgs = formatCommandWithArgs(command, args);
730
+ const duration = formatMsWithColor(getElapsedMs(active.hrStart));
731
+ if (success) active.taskLog.success(getMessage(`${(0, node_util.styleText)("dim", commandWithArgs)} completed in ${duration}`));
732
+ else {
733
+ const reason = error?.message ? ` (${error.message})` : "";
734
+ active.taskLog.error(getMessage(`${(0, node_util.styleText)("dim", commandWithArgs)} failed${reason}`), { showLog: true });
735
+ }
742
736
  });
743
737
  context.on("kubb:generation:summary", ({ config, pluginTimings, failedPlugins, filesCreated, status, hrStart }) => {
744
738
  const summary = getSummary({
@@ -769,18 +763,19 @@ Run \`npm install -g @kubb/cli\` to update`, "Update available for `Kubb`", {
769
763
  context.on("kubb:lifecycle:end", () => {
770
764
  reset();
771
765
  });
772
- return (commandWithArgs) => {
766
+ return (_commandWithArgs, hookId) => {
773
767
  if (logLevel <= _kubb_core.logLevel.silent) return {
774
768
  onStdout: (s) => console.log(s),
775
769
  onStderr: (s) => console.error(s)
776
770
  };
777
- const logger = _clack_prompts.taskLog({ title: getMessage(["Executing hook", logLevel >= _kubb_core.logLevel.info ? (0, node_util.styleText)("dim", commandWithArgs) : void 0].filter(Boolean).join(" ")) });
778
- const writable = new ClackWritable(logger);
771
+ const active = state.activeHookLogs.get(hookId);
772
+ if (!active) return;
773
+ const { taskLog } = active;
779
774
  return {
780
775
  stream: true,
781
- onLine: (line) => writable.write(line),
782
- onStdout: (s) => logger.message(s),
783
- onStderr: (s) => logger.error(s)
776
+ onLine: (line) => taskLog.message((0, node_util.styleText)("dim", line)),
777
+ onStdout: (s) => taskLog.message(s),
778
+ onStderr: (s) => taskLog.message((0, node_util.styleText)("red", s))
784
779
  };
785
780
  };
786
781
  }
@@ -908,17 +903,21 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
908
903
  failedPlugins: 0,
909
904
  totalFiles: 0,
910
905
  processedFiles: 0,
911
- hrStart: process.hrtime(),
912
- currentConfigs: []
906
+ hrStart: node_process.default.hrtime(),
907
+ currentConfigs: [],
908
+ hookStarts: /* @__PURE__ */ new Map(),
909
+ openGroupDepth: 0
913
910
  };
914
911
  function reset() {
912
+ closeAllGroups();
915
913
  state.totalPlugins = 0;
916
914
  state.completedPlugins = 0;
917
915
  state.failedPlugins = 0;
918
916
  state.totalFiles = 0;
919
917
  state.processedFiles = 0;
920
- state.hrStart = process.hrtime();
918
+ state.hrStart = node_process.default.hrtime();
921
919
  state.currentConfigs = [];
920
+ state.hookStarts.clear();
922
921
  }
923
922
  function showProgressStep() {
924
923
  if (logLevel <= _kubb_core.logLevel.silent) return;
@@ -930,9 +929,17 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
930
929
  }
931
930
  function openGroup(name) {
932
931
  console.log(`::group::${name}`);
932
+ state.openGroupDepth++;
933
933
  }
934
934
  function closeGroup(_name) {
935
935
  console.log("::endgroup::");
936
+ if (state.openGroupDepth > 0) state.openGroupDepth--;
937
+ }
938
+ function closeAllGroups() {
939
+ while (state.openGroupDepth > 0) {
940
+ console.log("::endgroup::");
941
+ state.openGroupDepth--;
942
+ }
936
943
  }
937
944
  context.on("kubb:info", ({ message, info = "" }) => {
938
945
  if (logLevel <= _kubb_core.logLevel.silent) return;
@@ -963,6 +970,7 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
963
970
  });
964
971
  context.on("kubb:error", ({ error }) => {
965
972
  const caused = require_errors.toCause(error);
973
+ closeAllGroups();
966
974
  if (logLevel <= _kubb_core.logLevel.silent) return;
967
975
  const message = error.message || String(error);
968
976
  console.error(`::error::${message}`);
@@ -980,6 +988,9 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
980
988
  console.log((0, node_util.styleText)("yellow", `Kubb ${version} 🧩`));
981
989
  reset();
982
990
  });
991
+ context.on("kubb:version:new", ({ currentVersion, latestVersion }) => {
992
+ console.log(`::notice::Update available for Kubb: v${currentVersion} → v${latestVersion}. Run \`npm install -g @kubb/cli\` to update.`);
993
+ });
983
994
  context.on("kubb:config:start", () => {
984
995
  if (logLevel <= _kubb_core.logLevel.silent) return;
985
996
  const text = getMessage("Configuration started");
@@ -1064,18 +1075,35 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
1064
1075
  console.log(text);
1065
1076
  if (state.currentConfigs.length === 1) closeGroup("Linting");
1066
1077
  });
1067
- context.on("kubb:hook:start", ({ command, args }) => {
1078
+ context.on("kubb:hooks:start", () => {
1079
+ if (logLevel <= _kubb_core.logLevel.silent) return;
1080
+ if (state.currentConfigs.length === 1) openGroup("Hooks");
1081
+ console.log(getMessage("Hooks started"));
1082
+ });
1083
+ context.on("kubb:hooks:end", () => {
1068
1084
  if (logLevel <= _kubb_core.logLevel.silent) return;
1085
+ console.log(getMessage("Hooks completed"));
1086
+ if (state.currentConfigs.length === 1) closeGroup("Hooks");
1087
+ });
1088
+ context.on("kubb:hook:start", ({ id, command, args }) => {
1089
+ if (logLevel <= _kubb_core.logLevel.silent) return;
1090
+ if (id) state.hookStarts.set(id, node_process.default.hrtime());
1069
1091
  const commandWithArgs = formatCommandWithArgs(command, args);
1070
1092
  const text = getMessage(`Hook ${(0, node_util.styleText)("dim", commandWithArgs)} started`);
1071
1093
  if (state.currentConfigs.length === 1) openGroup(`Hook ${commandWithArgs}`);
1072
1094
  console.log(text);
1073
1095
  });
1074
- context.on("kubb:hook:end", ({ command, args }) => {
1096
+ context.on("kubb:hook:end", ({ id, command, args, success, error }) => {
1075
1097
  if (logLevel <= _kubb_core.logLevel.silent) return;
1098
+ const hrStart = id ? state.hookStarts.get(id) : void 0;
1099
+ if (id) state.hookStarts.delete(id);
1100
+ const durationStr = hrStart ? ` in ${formatMsWithColor(getElapsedMs(hrStart))}` : "";
1076
1101
  const commandWithArgs = formatCommandWithArgs(command, args);
1077
- const text = getMessage(`Hook ${(0, node_util.styleText)("dim", commandWithArgs)} completed`);
1078
- console.log(text);
1102
+ if (success) console.log(getMessage(`${(0, node_util.styleText)("green", "✓")} Hook ${(0, node_util.styleText)("dim", commandWithArgs)} completed${durationStr}`));
1103
+ else {
1104
+ const reason = error?.message ? ` (${error.message})` : "";
1105
+ console.log(`::error::Hook ${commandWithArgs} failed${durationStr}${reason}`);
1106
+ }
1079
1107
  if (state.currentConfigs.length === 1) closeGroup(`Hook ${commandWithArgs}`);
1080
1108
  });
1081
1109
  context.on("kubb:generation:summary", ({ config, status, hrStart, failedPlugins }) => {
@@ -1089,7 +1117,7 @@ const githubActionsLogger = (0, _kubb_core.defineLogger)({
1089
1117
  context.on("kubb:lifecycle:end", () => {
1090
1118
  reset();
1091
1119
  });
1092
- return (_commandWithArgs) => ({
1120
+ return (_commandWithArgs, _hookId) => ({
1093
1121
  onStdout: logLevel > _kubb_core.logLevel.silent ? (s) => console.log(s) : void 0,
1094
1122
  onStderr: logLevel > _kubb_core.logLevel.silent ? (s) => console.error(`::error::${s}`) : void 0
1095
1123
  });
@@ -1104,6 +1132,7 @@ const plainLogger = (0, _kubb_core.defineLogger)({
1104
1132
  name: "plain",
1105
1133
  install(context, options) {
1106
1134
  const logLevel = options?.logLevel ?? _kubb_core.logLevel.info;
1135
+ const hookStarts = /* @__PURE__ */ new Map();
1107
1136
  function getMessage(message) {
1108
1137
  return formatMessage(message, logLevel);
1109
1138
  }
@@ -1148,8 +1177,12 @@ const plainLogger = (0, _kubb_core.defineLogger)({
1148
1177
  }
1149
1178
  }
1150
1179
  });
1151
- context.on("kubb:lifecycle:start", () => {
1152
- console.log("Kubb CLI 🧩");
1180
+ context.on("kubb:lifecycle:start", ({ version }) => {
1181
+ console.log(`Kubb CLI v${version}`);
1182
+ });
1183
+ context.on("kubb:version:new", ({ currentVersion, latestVersion }) => {
1184
+ if (logLevel <= _kubb_core.logLevel.silent) return;
1185
+ console.log(getMessage(`Update available: v${currentVersion} → v${latestVersion}. Run \`npm install -g @kubb/cli\` to update.`));
1153
1186
  });
1154
1187
  context.on("kubb:config:start", () => {
1155
1188
  if (logLevel <= _kubb_core.logLevel.silent) return;
@@ -1215,15 +1248,31 @@ const plainLogger = (0, _kubb_core.defineLogger)({
1215
1248
  const text = getMessage("Lint completed");
1216
1249
  console.log(text);
1217
1250
  });
1218
- context.on("kubb:hook:start", ({ command, args }) => {
1251
+ context.on("kubb:hooks:start", () => {
1219
1252
  if (logLevel <= _kubb_core.logLevel.silent) return;
1220
- const text = getMessage(`Hook ${formatCommandWithArgs(command, args)} started`);
1221
- console.log(text);
1253
+ console.log(getMessage("Hooks started"));
1222
1254
  });
1223
- context.on("kubb:hook:end", ({ command, args }) => {
1255
+ context.on("kubb:hooks:end", () => {
1224
1256
  if (logLevel <= _kubb_core.logLevel.silent) return;
1225
- const text = getMessage(`Hook ${formatCommandWithArgs(command, args)} completed`);
1226
- console.log(text);
1257
+ console.log(getMessage("Hooks completed"));
1258
+ });
1259
+ context.on("kubb:hook:start", ({ id, command, args }) => {
1260
+ if (logLevel <= _kubb_core.logLevel.silent) return;
1261
+ if (id) hookStarts.set(id, node_process.default.hrtime());
1262
+ const commandWithArgs = formatCommandWithArgs(command, args);
1263
+ console.log(getMessage(`Hook ${commandWithArgs} started`));
1264
+ });
1265
+ context.on("kubb:hook:end", ({ id, command, args, success, error }) => {
1266
+ if (logLevel <= _kubb_core.logLevel.silent) return;
1267
+ const hrStart = id ? hookStarts.get(id) : void 0;
1268
+ if (id) hookStarts.delete(id);
1269
+ const durationStr = hrStart ? ` in ${formatMs(getElapsedMs(hrStart))}` : "";
1270
+ const commandWithArgs = formatCommandWithArgs(command, args);
1271
+ if (success) console.log(getMessage(`✓ Hook ${commandWithArgs} completed${durationStr}`));
1272
+ else {
1273
+ const reason = error?.message ? ` (${error.message})` : "";
1274
+ console.log(getMessage(`✗ Hook ${commandWithArgs} failed${durationStr}${reason}`));
1275
+ }
1227
1276
  });
1228
1277
  context.on("kubb:generation:summary", ({ config, pluginTimings, status, hrStart, failedPlugins, filesCreated }) => {
1229
1278
  const summary = getSummary({
@@ -1238,7 +1287,7 @@ const plainLogger = (0, _kubb_core.defineLogger)({
1238
1287
  console.log(summary.join("\n"));
1239
1288
  console.log(require_constants.SUMMARY_SEPARATOR);
1240
1289
  });
1241
- return (_commandWithArgs) => ({
1290
+ return (_commandWithArgs, _hookId) => ({
1242
1291
  onStdout: logLevel > _kubb_core.logLevel.silent ? (s) => console.log(s) : void 0,
1243
1292
  onStderr: logLevel > _kubb_core.logLevel.silent ? (s) => console.error(s) : void 0
1244
1293
  });
@@ -1425,7 +1474,7 @@ async function executeHooks({ configHooks, hooks, makeSink }) {
1425
1474
  command: cmd,
1426
1475
  args
1427
1476
  });
1428
- const { stream = false, onLine, onStdout, onStderr } = makeSink?.(commandWithArgs) ?? {};
1477
+ const { stream = false, onLine, onStdout, onStderr } = makeSink?.(commandWithArgs, hookId) ?? {};
1429
1478
  await runHook({
1430
1479
  id: hookId,
1431
1480
  command: cmd,
@@ -1523,7 +1572,7 @@ function waitForHookEnd(hooks, hookId, onSuccess, fallbackErrorMessage) {
1523
1572
  hooks.on("kubb:hook:end", handler);
1524
1573
  });
1525
1574
  }
1526
- async function runToolPass({ toolValue, detect, toolMap, toolLabel, successPrefix, noToolMessage, configName, outputPath, logLevel, hooks, onStart, onEnd }) {
1575
+ async function runToolPass({ toolValue, detect, toolMap, toolLabel, successPrefix, noToolMessage, configName, outputPath, logLevel, hooks, makeSink, onStart, onEnd }) {
1527
1576
  await onStart();
1528
1577
  let resolvedTool = toolValue;
1529
1578
  if (resolvedTool === "auto") {
@@ -1545,20 +1594,26 @@ async function runToolPass({ toolValue, detect, toolMap, toolLabel, successPrefi
1545
1594
  ].filter(Boolean).join(" ");
1546
1595
  try {
1547
1596
  const hookArgs = toolConfig.args(outputPath);
1597
+ const commandWithArgs = [toolConfig.command, ...hookArgs].join(" ");
1548
1598
  const hookEndPromise = waitForHookEnd(hooks, hookId, () => hooks.emit("kubb:success", { message: successMessage }), toolConfig.errorMessage);
1549
1599
  await hooks.emit("kubb:hook:start", {
1550
1600
  id: hookId,
1551
1601
  command: toolConfig.command,
1552
1602
  args: hookArgs
1553
1603
  });
1604
+ const { stream = false, onLine, onStdout, onStderr } = makeSink?.(commandWithArgs, hookId) ?? {};
1554
1605
  runHook({
1555
1606
  id: hookId,
1556
1607
  command: toolConfig.command,
1557
1608
  args: hookArgs,
1558
- commandWithArgs: [toolConfig.command, ...hookArgs].join(" "),
1609
+ commandWithArgs,
1559
1610
  context: hooks,
1560
- stream: false,
1561
- sink: {}
1611
+ stream,
1612
+ sink: {
1613
+ onLine,
1614
+ onStdout,
1615
+ onStderr
1616
+ }
1562
1617
  }).catch(() => {});
1563
1618
  await hookEndPromise;
1564
1619
  } catch (caughtError) {
@@ -1583,12 +1638,12 @@ async function generate(options) {
1583
1638
  ...options.config.output
1584
1639
  };
1585
1640
  const kubb = (0, _kubb_core.createKubb)(config, { hooks });
1586
- await kubb.setup();
1587
1641
  await hooks.emit("kubb:generation:start", { config });
1588
1642
  await hooks.emit("kubb:info", {
1589
1643
  message: config.name ? `Setup generation ${(0, node_util.styleText)("bold", config.name)}` : "Setup generation",
1590
1644
  info: inputPath
1591
1645
  });
1646
+ await kubb.setup();
1592
1647
  await hooks.emit("kubb:info", {
1593
1648
  message: config.name ? `Build generation ${(0, node_util.styleText)("bold", config.name)}` : "Build generation",
1594
1649
  info: inputPath
@@ -1658,7 +1713,8 @@ async function generate(options) {
1658
1713
  configName: config.name,
1659
1714
  outputPath,
1660
1715
  logLevel,
1661
- hooks
1716
+ hooks,
1717
+ makeSink
1662
1718
  });
1663
1719
  if (config.hooks) {
1664
1720
  await hooks.emit("kubb:hooks:start");
@@ -1699,14 +1755,15 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1699
1755
  const logLevel = _kubb_core.logLevel[logLevelKey] ?? _kubb_core.logLevel.info;
1700
1756
  const hooks = new AsyncEventEmitter();
1701
1757
  const makeSink = await setupLogger(hooks, { logLevel });
1758
+ await hooks.emit("kubb:lifecycle:start", { version: require_package.version });
1702
1759
  await checkForUpdate(hooks);
1703
1760
  try {
1761
+ await hooks.emit("kubb:config:start");
1704
1762
  const { configs, configPath: resolvedConfigPath } = await getConfigs({
1705
1763
  configPath,
1706
1764
  input
1707
1765
  });
1708
1766
  const relativeConfigPath = node_path.default.relative(node_process.default.cwd(), resolvedConfigPath);
1709
- await hooks.emit("kubb:config:start");
1710
1767
  await hooks.emit("kubb:info", {
1711
1768
  message: "Config loaded",
1712
1769
  info: relativeConfigPath
@@ -1716,10 +1773,8 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1716
1773
  info: relativeConfigPath
1717
1774
  });
1718
1775
  await hooks.emit("kubb:config:end", { configs });
1719
- await hooks.emit("kubb:lifecycle:start", { version: require_package.version });
1720
1776
  let anyFailed = false;
1721
1777
  for (const config of configs) if ((0, _kubb_core.isInputPath)(config) && watch) await startWatcher([input || config.input.path], async (paths) => {
1722
- hooks.removeAll();
1723
1778
  await generate({
1724
1779
  input,
1725
1780
  config,
@@ -1754,4 +1809,4 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1754
1809
  //#endregion
1755
1810
  exports.run = run;
1756
1811
 
1757
- //# sourceMappingURL=run-DK-3QOOS.cjs.map
1812
+ //# sourceMappingURL=run-ftIEu5xK.cjs.map