@kubb/cli 5.0.0-alpha.8 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/README.md +4 -2
  2. package/bin/kubb.js +6 -0
  3. package/dist/agent-B_pirbeB.cjs +116 -0
  4. package/dist/agent-B_pirbeB.cjs.map +1 -0
  5. package/dist/{agent-B116NMCE.cjs → agent-CUmEyiqY.cjs} +5 -5
  6. package/dist/agent-CUmEyiqY.cjs.map +1 -0
  7. package/dist/agent-Ev5hU5hH.js +112 -0
  8. package/dist/agent-Ev5hU5hH.js.map +1 -0
  9. package/dist/{agent-CFRroclh.js → agent-v_2S-bnN.js} +5 -5
  10. package/dist/agent-v_2S-bnN.js.map +1 -0
  11. package/dist/{constants-BTUap0zs.cjs → constants-CnDXa1R6.cjs} +60 -20
  12. package/dist/constants-CnDXa1R6.cjs.map +1 -0
  13. package/dist/constants-aL3CP_Wq.js +95 -0
  14. package/dist/constants-aL3CP_Wq.js.map +1 -0
  15. package/dist/define-Bdn8j5VM.cjs +54 -0
  16. package/dist/define-Bdn8j5VM.cjs.map +1 -0
  17. package/dist/define-Ctii4bel.js +43 -0
  18. package/dist/define-Ctii4bel.js.map +1 -0
  19. package/dist/{errors-DBW0N9w4.cjs → errors-CLCjoSg0.cjs} +22 -6
  20. package/dist/errors-CLCjoSg0.cjs.map +1 -0
  21. package/dist/errors-CjPmyZHy.js +43 -0
  22. package/dist/errors-CjPmyZHy.js.map +1 -0
  23. package/dist/{generate-B8tpu0Dc.js → generate-BaJRhbCS.js} +3 -3
  24. package/dist/generate-BaJRhbCS.js.map +1 -0
  25. package/dist/{generate-BblrHXQC.js → generate-CuxArvEk.js} +556 -262
  26. package/dist/generate-CuxArvEk.js.map +1 -0
  27. package/dist/{generate-D58EaZny.cjs → generate-TL8zY_IT.cjs} +3 -3
  28. package/dist/generate-TL8zY_IT.cjs.map +1 -0
  29. package/dist/{generate-D_pi7lhe.cjs → generate-UCP0qpDp.cjs} +563 -269
  30. package/dist/generate-UCP0qpDp.cjs.map +1 -0
  31. package/dist/index.cjs +48 -21
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.js +48 -21
  35. package/dist/index.js.map +1 -1
  36. package/dist/{init-hmolV6B4.cjs → init-CZ5Xq2Hd.cjs} +45 -58
  37. package/dist/init-CZ5Xq2Hd.cjs.map +1 -0
  38. package/dist/{init-B56F3Qon.cjs → init-DRR_YWIq.cjs} +4 -4
  39. package/dist/init-DRR_YWIq.cjs.map +1 -0
  40. package/dist/{init-v0GeyJkz.js → init-DSnRd1RJ.js} +4 -4
  41. package/dist/init-DSnRd1RJ.js.map +1 -0
  42. package/dist/{init-C-InrmSY.js → init-eNRlotJK.js} +41 -54
  43. package/dist/init-eNRlotJK.js.map +1 -0
  44. package/dist/{mcp-ChHFPRzD.cjs → mcp-CLcDV4Jm.cjs} +5 -6
  45. package/dist/mcp-CLcDV4Jm.cjs.map +1 -0
  46. package/dist/{mcp-D2SHEg_d.js → mcp-D7EIR9fR.js} +4 -5
  47. package/dist/mcp-D7EIR9fR.js.map +1 -0
  48. package/dist/{mcp-0AmU5JUD.js → mcp-Dakxi9CL.js} +4 -4
  49. package/dist/{mcp-0AmU5JUD.js.map → mcp-Dakxi9CL.js.map} +1 -1
  50. package/dist/{mcp-B0Jz5z2r.cjs → mcp-Dr_RY-hd.cjs} +4 -4
  51. package/dist/{mcp-B0Jz5z2r.cjs.map → mcp-Dr_RY-hd.cjs.map} +1 -1
  52. package/dist/{package-CbrJTkI2.cjs → package-Cdo6lNjF.cjs} +2 -2
  53. package/dist/package-Cdo6lNjF.cjs.map +1 -0
  54. package/dist/package-DPooAj2l.js +6 -0
  55. package/dist/package-DPooAj2l.js.map +1 -0
  56. package/dist/{shell-7HPrTCJ5.cjs → shell-475fQKaX.cjs} +8 -3
  57. package/dist/shell-475fQKaX.cjs.map +1 -0
  58. package/dist/{shell-DqqWsHCD.js → shell-DLzN4fRo.js} +8 -3
  59. package/dist/shell-DLzN4fRo.js.map +1 -0
  60. package/dist/{telemetry-Cn9X1I5B.cjs → telemetry-DN95_2pF.cjs} +50 -8
  61. package/dist/telemetry-DN95_2pF.cjs.map +1 -0
  62. package/dist/{telemetry-DxiR7clS.js → telemetry-LgT_sdPe.js} +48 -6
  63. package/dist/telemetry-LgT_sdPe.js.map +1 -0
  64. package/dist/{validate-D5CuvkLl.js → validate-B1o-rY9o.js} +4 -4
  65. package/dist/validate-B1o-rY9o.js.map +1 -0
  66. package/dist/{validate-D8Zb-dns.cjs → validate-CXFY-mHL.cjs} +4 -4
  67. package/dist/validate-CXFY-mHL.cjs.map +1 -0
  68. package/dist/{validate-l8vLmwKA.js → validate-kLJoT_hi.js} +5 -13
  69. package/dist/validate-kLJoT_hi.js.map +1 -0
  70. package/dist/{validate-Bbrn3Q-A.cjs → validate-yKKzqEZ5.cjs} +6 -14
  71. package/dist/validate-yKKzqEZ5.cjs.map +1 -0
  72. package/package.json +47 -46
  73. package/src/commands/agent/start.ts +20 -4
  74. package/src/commands/generate.ts +35 -6
  75. package/src/commands/init.ts +6 -1
  76. package/src/commands/validate.ts +6 -1
  77. package/src/constants.ts +50 -22
  78. package/src/index.ts +10 -12
  79. package/src/loggers/clackLogger.ts +57 -50
  80. package/src/loggers/fileSystemLogger.ts +17 -18
  81. package/src/loggers/githubActionsLogger.ts +25 -26
  82. package/src/loggers/plainLogger.ts +24 -25
  83. package/src/runners/agent.ts +81 -34
  84. package/src/runners/generate.ts +90 -100
  85. package/src/runners/init.ts +24 -51
  86. package/src/runners/mcp.ts +17 -4
  87. package/src/runners/validate.ts +19 -15
  88. package/src/types.ts +11 -0
  89. package/src/utils/executeHooks.ts +15 -15
  90. package/src/utils/flags.ts +9 -0
  91. package/src/utils/getConfig.ts +10 -0
  92. package/src/utils/getCosmiConfig.ts +21 -12
  93. package/src/utils/getSummary.ts +1 -1
  94. package/src/utils/runHook.ts +29 -13
  95. package/src/utils/telemetry.ts +16 -3
  96. package/bin/kubb.cjs +0 -18
  97. package/dist/agent-B116NMCE.cjs.map +0 -1
  98. package/dist/agent-C6o_6GSJ.cjs +0 -92
  99. package/dist/agent-C6o_6GSJ.cjs.map +0 -1
  100. package/dist/agent-CFRroclh.js.map +0 -1
  101. package/dist/agent-L50VNhXv.js +0 -88
  102. package/dist/agent-L50VNhXv.js.map +0 -1
  103. package/dist/constants-BTUap0zs.cjs.map +0 -1
  104. package/dist/constants-CM3dJzjK.js +0 -67
  105. package/dist/constants-CM3dJzjK.js.map +0 -1
  106. package/dist/define--M_JMcDC.js +0 -25
  107. package/dist/define--M_JMcDC.js.map +0 -1
  108. package/dist/define-D6Kfm7-Z.cjs +0 -36
  109. package/dist/define-D6Kfm7-Z.cjs.map +0 -1
  110. package/dist/errors-6mF_WKxg.js +0 -27
  111. package/dist/errors-6mF_WKxg.js.map +0 -1
  112. package/dist/errors-DBW0N9w4.cjs.map +0 -1
  113. package/dist/generate-B8tpu0Dc.js.map +0 -1
  114. package/dist/generate-BblrHXQC.js.map +0 -1
  115. package/dist/generate-D58EaZny.cjs.map +0 -1
  116. package/dist/generate-D_pi7lhe.cjs.map +0 -1
  117. package/dist/init-B56F3Qon.cjs.map +0 -1
  118. package/dist/init-C-InrmSY.js.map +0 -1
  119. package/dist/init-hmolV6B4.cjs.map +0 -1
  120. package/dist/init-v0GeyJkz.js.map +0 -1
  121. package/dist/jiti-Cd3S0xwr.cjs +0 -16
  122. package/dist/jiti-Cd3S0xwr.cjs.map +0 -1
  123. package/dist/jiti-e08mD2Ph.js +0 -11
  124. package/dist/jiti-e08mD2Ph.js.map +0 -1
  125. package/dist/mcp-ChHFPRzD.cjs.map +0 -1
  126. package/dist/mcp-D2SHEg_d.js.map +0 -1
  127. package/dist/package-BAVK5o-U.js +0 -6
  128. package/dist/package-BAVK5o-U.js.map +0 -1
  129. package/dist/package-CbrJTkI2.cjs.map +0 -1
  130. package/dist/shell-7HPrTCJ5.cjs.map +0 -1
  131. package/dist/shell-DqqWsHCD.js.map +0 -1
  132. package/dist/telemetry-Cn9X1I5B.cjs.map +0 -1
  133. package/dist/telemetry-DxiR7clS.js.map +0 -1
  134. package/dist/validate-Bbrn3Q-A.cjs.map +0 -1
  135. package/dist/validate-D5CuvkLl.js.map +0 -1
  136. package/dist/validate-D8Zb-dns.cjs.map +0 -1
  137. package/dist/validate-l8vLmwKA.js.map +0 -1
  138. package/src/utils/getIntro.ts +0 -1
  139. package/src/utils/jiti.ts +0 -9
@@ -2,19 +2,17 @@ import { relative } from 'node:path'
2
2
  import process from 'node:process'
3
3
  import { styleText } from 'node:util'
4
4
  import * as clack from '@clack/prompts'
5
- import { formatMs, formatMsWithColor, toCause } from '@internals/utils'
6
- import { createLogger, logLevel as logLevelMap } from '@kubb/core'
7
- import { getIntro } from '../utils/getIntro.ts'
5
+ import { formatMs, formatMsWithColor, getIntro, toCause } from '@internals/utils'
6
+ import { defineLogger, logLevel as logLevelMap } from '@kubb/core'
8
7
  import { getSummary } from '../utils/getSummary.ts'
9
8
  import { runHook } from '../utils/runHook.ts'
10
9
  import { ClackWritable } from '../utils/Writables.ts'
11
10
  import { buildProgressLine, formatCommandWithArgs, formatMessage } from './utils.ts'
12
11
 
13
12
  /**
14
- * Clack adapter for local TTY environments
15
- * Provides a beautiful CLI UI with flat structure inspired by Claude's CLI patterns
13
+ * TTY logger with beautiful UI and progress indicators for local development.
16
14
  */
17
- export const clackLogger = createLogger({
15
+ export const clackLogger = defineLogger({
18
16
  name: 'clack',
19
17
  install(context, options) {
20
18
  const logLevel = options?.logLevel ?? logLevelMap.info
@@ -74,7 +72,7 @@ export const clackLogger = createLogger({
74
72
  state.isSpinning = false
75
73
  }
76
74
 
77
- context.on('info', (message, info = '') => {
75
+ context.on('kubb:info', ({ message, info = '' }) => {
78
76
  if (logLevel <= logLevelMap.silent) {
79
77
  return
80
78
  }
@@ -88,7 +86,7 @@ export const clackLogger = createLogger({
88
86
  }
89
87
  })
90
88
 
91
- context.on('success', (message, info = '') => {
89
+ context.on('kubb:success', ({ message, info = '' }) => {
92
90
  if (logLevel <= logLevelMap.silent) {
93
91
  return
94
92
  }
@@ -102,7 +100,7 @@ export const clackLogger = createLogger({
102
100
  }
103
101
  })
104
102
 
105
- context.on('warn', (message, info) => {
103
+ context.on('kubb:warn', ({ message, info }) => {
106
104
  if (logLevel < logLevelMap.warn) {
107
105
  return
108
106
  }
@@ -114,7 +112,7 @@ export const clackLogger = createLogger({
114
112
  clack.log.warn(text)
115
113
  })
116
114
 
117
- context.on('error', (error) => {
115
+ context.on('kubb:error', ({ error }) => {
118
116
  const caused = toCause(error)
119
117
 
120
118
  const text = [styleText('red', '✗'), error.message].join(' ')
@@ -143,33 +141,38 @@ export const clackLogger = createLogger({
143
141
  }
144
142
  })
145
143
 
146
- context.on('version:new', (version, latestVersion) => {
144
+ context.on('kubb:version:new', ({ currentVersion, latestVersion }) => {
147
145
  if (logLevel <= logLevelMap.silent) {
148
146
  return
149
147
  }
150
148
 
151
- clack.box(
152
- `\`v${version}\` → \`v${latestVersion}\`
149
+ try {
150
+ clack.box(
151
+ `\`v${currentVersion}\` → \`v${latestVersion}\`
153
152
  Run \`npm install -g @kubb/cli\` to update`,
154
- 'Update available for `Kubb`',
155
- {
156
- width: 'auto',
157
- formatBorder: (s: string) => styleText('yellow', s),
158
- rounded: true,
159
- withGuide: false,
160
- contentAlign: 'center',
161
- titleAlign: 'center',
162
- },
163
- )
153
+ 'Update available for `Kubb`',
154
+ {
155
+ width: 'auto',
156
+ formatBorder: (s: string) => styleText('yellow', s),
157
+ rounded: true,
158
+ withGuide: false,
159
+ contentAlign: 'center',
160
+ titleAlign: 'center',
161
+ },
162
+ )
163
+ } catch {
164
+ console.log(`Update available for Kubb: v${currentVersion} → v${latestVersion}`)
165
+ console.log('Run `npm install -g @kubb/cli` to update')
166
+ }
164
167
  })
165
168
 
166
- context.on('lifecycle:start', async (version) => {
169
+ context.on('kubb:lifecycle:start', async ({ version }) => {
167
170
  console.log(`\n${getIntro({ title: 'The ultimate toolkit for working with APIs', description: 'Ready to start', version, areEyesOpen: true })}\n`)
168
171
 
169
172
  reset()
170
173
  })
171
174
 
172
- context.on('config:start', () => {
175
+ context.on('kubb:config:start', () => {
173
176
  if (logLevel <= logLevelMap.silent) {
174
177
  return
175
178
  }
@@ -180,7 +183,7 @@ Run \`npm install -g @kubb/cli\` to update`,
180
183
  startSpinner(getMessage('Configuration loading'))
181
184
  })
182
185
 
183
- context.on('config:end', (_configs) => {
186
+ context.on('kubb:config:end', () => {
184
187
  if (logLevel <= logLevelMap.silent) {
185
188
  return
186
189
  }
@@ -190,7 +193,7 @@ Run \`npm install -g @kubb/cli\` to update`,
190
193
  clack.outro(text)
191
194
  })
192
195
 
193
- context.on('generation:start', (config) => {
196
+ context.on('kubb:generation:start', ({ config }) => {
194
197
  reset()
195
198
 
196
199
  // Initialize progress tracking for this generation
@@ -201,7 +204,7 @@ Run \`npm install -g @kubb/cli\` to update`,
201
204
  clack.intro(text)
202
205
  })
203
206
 
204
- context.on('plugin:start', (plugin) => {
207
+ context.on('kubb:plugin:start', ({ plugin }) => {
205
208
  if (logLevel <= logLevelMap.silent) {
206
209
  return
207
210
  }
@@ -223,7 +226,7 @@ Run \`npm install -g @kubb/cli\` to update`,
223
226
  state.activeProgress.set(plugin.name, { progressBar, interval })
224
227
  })
225
228
 
226
- context.on('plugin:end', (plugin, { duration, success }) => {
229
+ context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
227
230
  stopSpinner()
228
231
 
229
232
  const active = state.activeProgress.get(plugin.name)
@@ -254,7 +257,7 @@ Run \`npm install -g @kubb/cli\` to update`,
254
257
  showProgressStep()
255
258
  })
256
259
 
257
- context.on('files:processing:start', (files) => {
260
+ context.on('kubb:files:processing:start', ({ files }) => {
258
261
  if (logLevel <= logLevelMap.silent) {
259
262
  return
260
263
  }
@@ -271,12 +274,12 @@ Run \`npm install -g @kubb/cli\` to update`,
271
274
  size: 30,
272
275
  })
273
276
 
274
- context.emit('info', text)
277
+ context.emit('kubb:info', { message: text })
275
278
  progressBar.start(getMessage(text))
276
279
  state.activeProgress.set('files', { progressBar })
277
280
  })
278
281
 
279
- context.on('file:processing:update', ({ file, config }) => {
282
+ context.on('kubb:file:processing:update', ({ file, config }) => {
280
283
  if (logLevel <= logLevelMap.silent) {
281
284
  return
282
285
  }
@@ -294,7 +297,7 @@ Run \`npm install -g @kubb/cli\` to update`,
294
297
 
295
298
  active.progressBar.advance(undefined, text)
296
299
  })
297
- context.on('files:processing:end', () => {
300
+ context.on('kubb:files:processing:end', () => {
298
301
  if (logLevel <= logLevelMap.silent) {
299
302
  return
300
303
  }
@@ -315,13 +318,13 @@ Run \`npm install -g @kubb/cli\` to update`,
315
318
  showProgressStep()
316
319
  })
317
320
 
318
- context.on('generation:end', (config) => {
321
+ context.on('kubb:generation:end', ({ config }) => {
319
322
  const text = getMessage(config.name ? `Generation completed for ${styleText('dim', config.name)}` : 'Generation completed')
320
323
 
321
324
  clack.outro(text)
322
325
  })
323
326
 
324
- context.on('format:start', () => {
327
+ context.on('kubb:format:start', () => {
325
328
  if (logLevel <= logLevelMap.silent) {
326
329
  return
327
330
  }
@@ -331,7 +334,7 @@ Run \`npm install -g @kubb/cli\` to update`,
331
334
  clack.intro(text)
332
335
  })
333
336
 
334
- context.on('format:end', () => {
337
+ context.on('kubb:format:end', () => {
335
338
  if (logLevel <= logLevelMap.silent) {
336
339
  return
337
340
  }
@@ -341,7 +344,7 @@ Run \`npm install -g @kubb/cli\` to update`,
341
344
  clack.outro(text)
342
345
  })
343
346
 
344
- context.on('lint:start', () => {
347
+ context.on('kubb:lint:start', () => {
345
348
  if (logLevel <= logLevelMap.silent) {
346
349
  return
347
350
  }
@@ -351,7 +354,7 @@ Run \`npm install -g @kubb/cli\` to update`,
351
354
  clack.intro(text)
352
355
  })
353
356
 
354
- context.on('lint:end', () => {
357
+ context.on('kubb:lint:end', () => {
355
358
  if (logLevel <= logLevelMap.silent) {
356
359
  return
357
360
  }
@@ -361,7 +364,7 @@ Run \`npm install -g @kubb/cli\` to update`,
361
364
  clack.outro(text)
362
365
  })
363
366
 
364
- context.on('hook:start', async ({ id, command, args }) => {
367
+ context.on('kubb:hook:start', async ({ id, command, args }) => {
365
368
  const commandWithArgs = formatCommandWithArgs(command, args)
366
369
  const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} started`)
367
370
 
@@ -408,7 +411,7 @@ Run \`npm install -g @kubb/cli\` to update`,
408
411
  })
409
412
  })
410
413
 
411
- context.on('hook:end', ({ command, args }) => {
414
+ context.on('kubb:hook:end', ({ command, args }) => {
412
415
  if (logLevel <= logLevelMap.silent) {
413
416
  return
414
417
  }
@@ -419,7 +422,7 @@ Run \`npm install -g @kubb/cli\` to update`,
419
422
  clack.outro(text)
420
423
  })
421
424
 
422
- context.on('generation:summary', (config, { pluginTimings, failedPlugins, filesCreated, status, hrStart }) => {
425
+ context.on('kubb:generation:summary', ({ config, pluginTimings, failedPlugins, filesCreated, status, hrStart }) => {
423
426
  const summary = getSummary({
424
427
  failedPlugins,
425
428
  filesCreated,
@@ -434,17 +437,21 @@ Run \`npm install -g @kubb/cli\` to update`,
434
437
  summary.push('\n')
435
438
 
436
439
  const borderColor = status === 'success' ? 'green' : 'red'
437
- clack.box(summary.join('\n'), getMessage(title), {
438
- width: 'auto',
439
- formatBorder: (s: string) => styleText(borderColor, s),
440
- rounded: true,
441
- withGuide: false,
442
- contentAlign: 'left',
443
- titleAlign: 'center',
444
- })
440
+ try {
441
+ clack.box(summary.join('\n'), getMessage(title), {
442
+ width: 'auto',
443
+ formatBorder: (s: string) => styleText(borderColor, s),
444
+ rounded: true,
445
+ withGuide: false,
446
+ contentAlign: 'left',
447
+ titleAlign: 'center',
448
+ })
449
+ } catch {
450
+ console.log(summary.join('\n'))
451
+ }
445
452
  })
446
453
 
447
- context.on('lifecycle:end', () => {
454
+ context.on('kubb:lifecycle:end', () => {
448
455
  reset()
449
456
  })
450
457
  },
@@ -1,7 +1,7 @@
1
1
  import { relative, resolve } from 'node:path'
2
2
  import process from 'node:process'
3
3
  import { formatMs, write } from '@internals/utils'
4
- import { createLogger } from '@kubb/core'
4
+ import { defineLogger } from '@kubb/core'
5
5
 
6
6
  type CachedEvent = {
7
7
  date: Date
@@ -10,13 +10,10 @@ type CachedEvent = {
10
10
  }
11
11
 
12
12
  /**
13
- * FileSystem logger for debug log persistence
14
- * Captures debug and verbose events and writes them to files in .kubb directory
15
- *
16
- * Note: Logs are written on lifecycle:end or process exit. If the process crashes
17
- * before these events, some cached logs may be lost.
13
+ * FileSystem logger that captures debug events and writes them to `.kubb` directory files.
14
+ * Note: Logs write on `lifecycle:end` or process exit. Cached logs may be lost if the process crashes before these events.
18
15
  */
19
- export const fileSystemLogger = createLogger({
16
+ export const fileSystemLogger = defineLogger({
20
17
  name: 'filesystem',
21
18
  install(context) {
22
19
  const state = {
@@ -50,54 +47,56 @@ export const fileSystemLogger = createLogger({
50
47
  }
51
48
  }
52
49
 
53
- await Promise.all(Object.entries(files).map(([fileName, logs]) => write(fileName, logs.join('\n\n'))))
50
+ for (const [fileName, logs] of Object.entries(files)) {
51
+ await write(fileName, logs.join('\n\n'))
52
+ }
54
53
 
55
54
  return Object.keys(files)
56
55
  }
57
56
 
58
- context.on('info', (message, info) => {
57
+ context.on('kubb:info', ({ message, info }) => {
59
58
  state.cachedLogs.add({
60
59
  date: new Date(),
61
60
  logs: [`ℹ ${message} ${info}`],
62
61
  })
63
62
  })
64
63
 
65
- context.on('success', (message, info) => {
64
+ context.on('kubb:success', ({ message, info }) => {
66
65
  state.cachedLogs.add({
67
66
  date: new Date(),
68
67
  logs: [`✓ ${message} ${info}`],
69
68
  })
70
69
  })
71
70
 
72
- context.on('warn', (message, info) => {
71
+ context.on('kubb:warn', ({ message, info }) => {
73
72
  state.cachedLogs.add({
74
73
  date: new Date(),
75
74
  logs: [`⚠ ${message} ${info}`],
76
75
  })
77
76
  })
78
77
 
79
- context.on('error', (error) => {
78
+ context.on('kubb:error', ({ error }) => {
80
79
  state.cachedLogs.add({
81
80
  date: new Date(),
82
81
  logs: [`✗ ${error.message}`, error.stack || 'unknown stack'],
83
82
  })
84
83
  })
85
84
 
86
- context.on('debug', (message) => {
85
+ context.on('kubb:debug', (message) => {
87
86
  state.cachedLogs.add({
88
87
  date: new Date(),
89
88
  logs: message.logs,
90
89
  })
91
90
  })
92
91
 
93
- context.on('plugin:start', (plugin) => {
92
+ context.on('kubb:plugin:start', ({ plugin }) => {
94
93
  state.cachedLogs.add({
95
94
  date: new Date(),
96
95
  logs: [`Generating ${plugin.name}`],
97
96
  })
98
97
  })
99
98
 
100
- context.on('plugin:end', (plugin, { duration, success }) => {
99
+ context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
101
100
  const durationStr = formatMs(duration)
102
101
 
103
102
  state.cachedLogs.add({
@@ -106,18 +105,18 @@ export const fileSystemLogger = createLogger({
106
105
  })
107
106
  })
108
107
 
109
- context.on('files:processing:start', (files) => {
108
+ context.on('kubb:files:processing:start', ({ files }) => {
110
109
  state.cachedLogs.add({
111
110
  date: new Date(),
112
111
  logs: [`Start ${files.length} writing:`, ...files.map((file) => file.path)],
113
112
  })
114
113
  })
115
114
 
116
- context.on('generation:end', async (config) => {
115
+ context.on('kubb:generation:end', async ({ config }) => {
117
116
  const writtenFilePaths = await writeLogs(config.name)
118
117
  if (writtenFilePaths.length > 0) {
119
118
  const files = writtenFilePaths.map((f) => relative(process.cwd(), f))
120
- await context.emit('info', 'Debug files written to:', files.join(', '))
119
+ await context.emit('kubb:info', { message: 'Debug files written to:', info: files.join(', ') })
121
120
  }
122
121
  reset()
123
122
  })
@@ -1,14 +1,13 @@
1
1
  import { styleText } from 'node:util'
2
2
  import { formatHrtime, formatMs, formatMsWithColor, toCause } from '@internals/utils'
3
- import { type Config, createLogger, logLevel as logLevelMap } from '@kubb/core'
3
+ import { type Config, defineLogger, logLevel as logLevelMap } from '@kubb/core'
4
4
  import { runHook } from '../utils/runHook.ts'
5
5
  import { buildProgressLine, formatCommandWithArgs, formatMessage } from './utils.ts'
6
6
 
7
7
  /**
8
- * GitHub Actions adapter for CI environments
9
- * Uses Github group annotations for collapsible sections
8
+ * GitHub Actions logger using group annotations for collapsible sections in CI.
10
9
  */
11
- export const githubActionsLogger = createLogger({
10
+ export const githubActionsLogger = defineLogger({
12
11
  name: 'github-actions',
13
12
  install(context, options) {
14
13
  const logLevel = options?.logLevel ?? logLevelMap.info
@@ -55,7 +54,7 @@ export const githubActionsLogger = createLogger({
55
54
  console.log('::endgroup::')
56
55
  }
57
56
 
58
- context.on('info', (message, info = '') => {
57
+ context.on('kubb:info', ({ message, info = '' }) => {
59
58
  if (logLevel <= logLevelMap.silent) {
60
59
  return
61
60
  }
@@ -65,7 +64,7 @@ export const githubActionsLogger = createLogger({
65
64
  console.log(text)
66
65
  })
67
66
 
68
- context.on('success', (message, info = '') => {
67
+ context.on('kubb:success', ({ message, info = '' }) => {
69
68
  if (logLevel <= logLevelMap.silent) {
70
69
  return
71
70
  }
@@ -75,7 +74,7 @@ export const githubActionsLogger = createLogger({
75
74
  console.log(text)
76
75
  })
77
76
 
78
- context.on('warn', (message, info = '') => {
77
+ context.on('kubb:warn', ({ message, info = '' }) => {
79
78
  if (logLevel <= logLevelMap.silent) {
80
79
  return
81
80
  }
@@ -85,7 +84,7 @@ export const githubActionsLogger = createLogger({
85
84
  console.warn(`::warning::${text}`)
86
85
  })
87
86
 
88
- context.on('error', (error) => {
87
+ context.on('kubb:error', ({ error }) => {
89
88
  const caused = toCause(error)
90
89
 
91
90
  if (logLevel <= logLevelMap.silent) {
@@ -112,12 +111,12 @@ export const githubActionsLogger = createLogger({
112
111
  }
113
112
  })
114
113
 
115
- context.on('lifecycle:start', (version) => {
114
+ context.on('kubb:lifecycle:start', ({ version }) => {
116
115
  console.log(styleText('yellow', `Kubb ${version} 🧩`))
117
116
  reset()
118
117
  })
119
118
 
120
- context.on('config:start', () => {
119
+ context.on('kubb:config:start', () => {
121
120
  if (logLevel <= logLevelMap.silent) {
122
121
  return
123
122
  }
@@ -129,7 +128,7 @@ export const githubActionsLogger = createLogger({
129
128
  console.log(text)
130
129
  })
131
130
 
132
- context.on('config:end', (configs) => {
131
+ context.on('kubb:config:end', ({ configs }) => {
133
132
  state.currentConfigs = configs
134
133
 
135
134
  if (logLevel <= logLevelMap.silent) {
@@ -143,7 +142,7 @@ export const githubActionsLogger = createLogger({
143
142
  closeGroup('Configuration')
144
143
  })
145
144
 
146
- context.on('generation:start', (config) => {
145
+ context.on('kubb:generation:start', ({ config }) => {
147
146
  reset()
148
147
 
149
148
  // Initialize progress tracking for this generation
@@ -160,7 +159,7 @@ export const githubActionsLogger = createLogger({
160
159
  }
161
160
  })
162
161
 
163
- context.on('plugin:start', (plugin) => {
162
+ context.on('kubb:plugin:start', ({ plugin }) => {
164
163
  if (logLevel <= logLevelMap.silent) {
165
164
  return
166
165
  }
@@ -173,7 +172,7 @@ export const githubActionsLogger = createLogger({
173
172
  console.log(text)
174
173
  })
175
174
 
176
- context.on('plugin:end', (plugin, { duration, success }) => {
175
+ context.on('kubb:plugin:end', ({ plugin, duration, success }) => {
177
176
  if (logLevel <= logLevelMap.silent) {
178
177
  return
179
178
  }
@@ -204,7 +203,7 @@ export const githubActionsLogger = createLogger({
204
203
  showProgressStep()
205
204
  })
206
205
 
207
- context.on('files:processing:start', (files) => {
206
+ context.on('kubb:files:processing:start', ({ files }) => {
208
207
  if (logLevel <= logLevelMap.silent) {
209
208
  return
210
209
  }
@@ -220,7 +219,7 @@ export const githubActionsLogger = createLogger({
220
219
  console.log(text)
221
220
  })
222
221
 
223
- context.on('files:processing:end', () => {
222
+ context.on('kubb:files:processing:end', () => {
224
223
  if (logLevel <= logLevelMap.silent) {
225
224
  return
226
225
  }
@@ -236,7 +235,7 @@ export const githubActionsLogger = createLogger({
236
235
  showProgressStep()
237
236
  })
238
237
 
239
- context.on('file:processing:update', () => {
238
+ context.on('kubb:file:processing:update', () => {
240
239
  if (logLevel <= logLevelMap.silent) {
241
240
  return
242
241
  }
@@ -244,7 +243,7 @@ export const githubActionsLogger = createLogger({
244
243
  state.processedFiles++
245
244
  })
246
245
 
247
- context.on('generation:end', (config) => {
246
+ context.on('kubb:generation:end', ({ config }) => {
248
247
  const text = getMessage(
249
248
  config.name ? `${styleText('blue', '✓')} Generation completed for ${styleText('dim', config.name)}` : `${styleText('blue', '✓')} Generation completed`,
250
249
  )
@@ -252,7 +251,7 @@ export const githubActionsLogger = createLogger({
252
251
  console.log(text)
253
252
  })
254
253
 
255
- context.on('format:start', () => {
254
+ context.on('kubb:format:start', () => {
256
255
  if (logLevel <= logLevelMap.silent) {
257
256
  return
258
257
  }
@@ -266,7 +265,7 @@ export const githubActionsLogger = createLogger({
266
265
  console.log(text)
267
266
  })
268
267
 
269
- context.on('format:end', () => {
268
+ context.on('kubb:format:end', () => {
270
269
  if (logLevel <= logLevelMap.silent) {
271
270
  return
272
271
  }
@@ -280,7 +279,7 @@ export const githubActionsLogger = createLogger({
280
279
  }
281
280
  })
282
281
 
283
- context.on('lint:start', () => {
282
+ context.on('kubb:lint:start', () => {
284
283
  if (logLevel <= logLevelMap.silent) {
285
284
  return
286
285
  }
@@ -294,7 +293,7 @@ export const githubActionsLogger = createLogger({
294
293
  console.log(text)
295
294
  })
296
295
 
297
- context.on('lint:end', () => {
296
+ context.on('kubb:lint:end', () => {
298
297
  if (logLevel <= logLevelMap.silent) {
299
298
  return
300
299
  }
@@ -308,7 +307,7 @@ export const githubActionsLogger = createLogger({
308
307
  }
309
308
  })
310
309
 
311
- context.on('hook:start', async ({ id, command, args }) => {
310
+ context.on('kubb:hook:start', async ({ id, command, args }) => {
312
311
  const commandWithArgs = formatCommandWithArgs(command, args)
313
312
  const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} started`)
314
313
 
@@ -338,7 +337,7 @@ export const githubActionsLogger = createLogger({
338
337
  })
339
338
  })
340
339
 
341
- context.on('hook:end', ({ command, args }) => {
340
+ context.on('kubb:hook:end', ({ command, args }) => {
342
341
  if (logLevel <= logLevelMap.silent) {
343
342
  return
344
343
  }
@@ -353,7 +352,7 @@ export const githubActionsLogger = createLogger({
353
352
  }
354
353
  })
355
354
 
356
- context.on('generation:summary', (config, { status, hrStart, failedPlugins }) => {
355
+ context.on('kubb:generation:summary', ({ config, status, hrStart, failedPlugins }) => {
357
356
  const pluginsCount = config.plugins?.length ?? 0
358
357
  const successCount = pluginsCount - failedPlugins.size
359
358
  const duration = formatHrtime(hrStart)
@@ -373,7 +372,7 @@ export const githubActionsLogger = createLogger({
373
372
  }
374
373
  })
375
374
 
376
- context.on('lifecycle:end', () => {
375
+ context.on('kubb:lifecycle:end', () => {
377
376
  reset()
378
377
  })
379
378
  },