@kubb/cli 5.0.0-beta.13 → 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-C75Hr-Ke.js → agent-BTvJ7IUq.js} +2 -2
  2. package/dist/{agent-C75Hr-Ke.js.map → agent-BTvJ7IUq.js.map} +1 -1
  3. package/dist/{agent-BeYTwPeX.cjs → agent-vzaMEbPS.cjs} +2 -2
  4. package/dist/{agent-BeYTwPeX.cjs.map → agent-vzaMEbPS.cjs.map} +1 -1
  5. package/dist/{generate-CmWpaxKe.js → generate-BczcDWHS.js} +2 -2
  6. package/dist/{generate-CmWpaxKe.js.map → generate-BczcDWHS.js.map} +1 -1
  7. package/dist/{generate-BF3AjiUf.cjs → generate-BkKnYYok.cjs} +2 -2
  8. package/dist/{generate-BF3AjiUf.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-PsSoaB9c.js → init-CGLK93Ny.js} +2 -2
  12. package/dist/{init-PsSoaB9c.js.map → init-CGLK93Ny.js.map} +1 -1
  13. package/dist/{init-0T26Xghs.cjs → init-DH-tkhDa.cjs} +2 -2
  14. package/dist/{init-0T26Xghs.cjs.map → init-DH-tkhDa.cjs.map} +1 -1
  15. package/dist/{mcp-hqkY4lKq.cjs → mcp-BzuRPhN0.cjs} +2 -2
  16. package/dist/{mcp-hqkY4lKq.cjs.map → mcp-BzuRPhN0.cjs.map} +1 -1
  17. package/dist/{mcp-Dfx8XKiP.js → mcp-CmSOtsiY.js} +2 -2
  18. package/dist/{mcp-Dfx8XKiP.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-Cljxf8a3.cjs → package-rMKbcyw1.cjs} +2 -2
  22. package/dist/package-rMKbcyw1.cjs.map +1 -0
  23. package/dist/{run-34ctJY6B.js → run-BvsacB4B.js} +135 -70
  24. package/dist/run-BvsacB4B.js.map +1 -0
  25. package/dist/{run-N_c1Hr2j.cjs → run-ftIEu5xK.cjs} +135 -70
  26. package/dist/run-ftIEu5xK.cjs.map +1 -0
  27. package/dist/{validate-Bbijcex8.cjs → validate--WZ6E0gu.cjs} +2 -2
  28. package/dist/{validate-Bbijcex8.cjs.map → validate--WZ6E0gu.cjs.map} +1 -1
  29. package/dist/{validate-DU_icVNM.js → validate-D3p-TOu4.js} +2 -2
  30. package/dist/{validate-DU_icVNM.js.map → validate-D3p-TOu4.js.map} +1 -1
  31. package/package.json +7 -7
  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 +30 -7
  37. package/src/runners/generate/utils.ts +3 -3
  38. package/dist/package-Cljxf8a3.cjs.map +0 -1
  39. package/dist/package-DTbBkfHc.js +0 -6
  40. package/dist/package-DTbBkfHc.js.map +0 -1
  41. package/dist/run-34ctJY6B.js.map +0 -1
  42. package/dist/run-N_c1Hr2j.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-Cljxf8a3.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", () => {
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 }) => {
1068
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") {
@@ -1544,12 +1593,28 @@ async function runToolPass({ toolValue, detect, toolMap, toolLabel, successPrefi
1544
1593
  "successfully"
1545
1594
  ].filter(Boolean).join(" ");
1546
1595
  try {
1596
+ const hookArgs = toolConfig.args(outputPath);
1597
+ const commandWithArgs = [toolConfig.command, ...hookArgs].join(" ");
1547
1598
  const hookEndPromise = waitForHookEnd(hooks, hookId, () => hooks.emit("kubb:success", { message: successMessage }), toolConfig.errorMessage);
1548
1599
  await hooks.emit("kubb:hook:start", {
1549
1600
  id: hookId,
1550
1601
  command: toolConfig.command,
1551
- args: toolConfig.args(outputPath)
1602
+ args: hookArgs
1552
1603
  });
1604
+ const { stream = false, onLine, onStdout, onStderr } = makeSink?.(commandWithArgs, hookId) ?? {};
1605
+ runHook({
1606
+ id: hookId,
1607
+ command: toolConfig.command,
1608
+ args: hookArgs,
1609
+ commandWithArgs,
1610
+ context: hooks,
1611
+ stream,
1612
+ sink: {
1613
+ onLine,
1614
+ onStdout,
1615
+ onStderr
1616
+ }
1617
+ }).catch(() => {});
1553
1618
  await hookEndPromise;
1554
1619
  } catch (caughtError) {
1555
1620
  const err = require_errors.toError(caughtError);
@@ -1573,12 +1638,12 @@ async function generate(options) {
1573
1638
  ...options.config.output
1574
1639
  };
1575
1640
  const kubb = (0, _kubb_core.createKubb)(config, { hooks });
1576
- await kubb.setup();
1577
1641
  await hooks.emit("kubb:generation:start", { config });
1578
1642
  await hooks.emit("kubb:info", {
1579
1643
  message: config.name ? `Setup generation ${(0, node_util.styleText)("bold", config.name)}` : "Setup generation",
1580
1644
  info: inputPath
1581
1645
  });
1646
+ await kubb.setup();
1582
1647
  await hooks.emit("kubb:info", {
1583
1648
  message: config.name ? `Build generation ${(0, node_util.styleText)("bold", config.name)}` : "Build generation",
1584
1649
  info: inputPath
@@ -1648,7 +1713,8 @@ async function generate(options) {
1648
1713
  configName: config.name,
1649
1714
  outputPath,
1650
1715
  logLevel,
1651
- hooks
1716
+ hooks,
1717
+ makeSink
1652
1718
  });
1653
1719
  if (config.hooks) {
1654
1720
  await hooks.emit("kubb:hooks:start");
@@ -1689,14 +1755,15 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1689
1755
  const logLevel = _kubb_core.logLevel[logLevelKey] ?? _kubb_core.logLevel.info;
1690
1756
  const hooks = new AsyncEventEmitter();
1691
1757
  const makeSink = await setupLogger(hooks, { logLevel });
1758
+ await hooks.emit("kubb:lifecycle:start", { version: require_package.version });
1692
1759
  await checkForUpdate(hooks);
1693
1760
  try {
1761
+ await hooks.emit("kubb:config:start");
1694
1762
  const { configs, configPath: resolvedConfigPath } = await getConfigs({
1695
1763
  configPath,
1696
1764
  input
1697
1765
  });
1698
1766
  const relativeConfigPath = node_path.default.relative(node_process.default.cwd(), resolvedConfigPath);
1699
- await hooks.emit("kubb:config:start");
1700
1767
  await hooks.emit("kubb:info", {
1701
1768
  message: "Config loaded",
1702
1769
  info: relativeConfigPath
@@ -1706,10 +1773,8 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1706
1773
  info: relativeConfigPath
1707
1774
  });
1708
1775
  await hooks.emit("kubb:config:end", { configs });
1709
- await hooks.emit("kubb:lifecycle:start", { version: require_package.version });
1710
1776
  let anyFailed = false;
1711
1777
  for (const config of configs) if ((0, _kubb_core.isInputPath)(config) && watch) await startWatcher([input || config.input.path], async (paths) => {
1712
- hooks.removeAll();
1713
1778
  await generate({
1714
1779
  input,
1715
1780
  config,
@@ -1744,4 +1809,4 @@ async function run({ input, configPath, logLevel: logLevelKey, watch }) {
1744
1809
  //#endregion
1745
1810
  exports.run = run;
1746
1811
 
1747
- //# sourceMappingURL=run-N_c1Hr2j.cjs.map
1812
+ //# sourceMappingURL=run-ftIEu5xK.cjs.map