commandkit 1.2.1 → 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.
Files changed (271) hide show
  1. package/README.md +1 -1
  2. package/cache.cjs +2 -0
  3. package/cache.d.ts +1 -0
  4. package/dist/{ActionRow-Bt9qi0Mb.d.ts → ActionRow-DSh9roc5.d.ts} +2 -3
  5. package/dist/{Button-DxJLcZIU.d.ts → Button-BPsE5ju0.d.ts} +5 -6
  6. package/dist/{ButtonKit-BfcyvWfj.d.ts → ButtonKit-CNPmVg3h.d.ts} +2 -3
  7. package/dist/{ChannelSelectMenuKit-DYkudikb.d.ts → ChannelSelectMenuKit-CcOdaLQ6.d.ts} +3 -4
  8. package/dist/CommandTree-qu-8oAEV.d.ts +55 -0
  9. package/dist/CommandsRouter-Co225Ae5.d.ts +242 -0
  10. package/dist/{EventInterceptor-D9JKMcfi.d.ts → EventInterceptor-wg378vJp.d.ts} +1 -2
  11. package/dist/{EventsRouter-EuuSu6NH.d.ts → EventsRouter-Bt63ZuEF.d.ts} +21 -2
  12. package/dist/{MentionableSelectMenuKit-Mu4xqP6B.d.ts → MentionableSelectMenuKit-8_Nkgn_a.d.ts} +3 -4
  13. package/dist/{MessageCommandParser-DPCbHXCS.d.ts → MessageCommandParser-BYbxHOSK.d.ts} +7 -2
  14. package/dist/{Modal-v9rrcMl-.d.ts → Modal-DbWK6VmV.d.ts} +5 -6
  15. package/dist/{ModalKit-XJSM65SV.d.ts → ModalKit-CnmUVpw-.d.ts} +2 -3
  16. package/dist/{RoleSelectMenuKit-CCjcp3HY.d.ts → RoleSelectMenuKit-Bei7DHqD.d.ts} +3 -4
  17. package/dist/{SelectMenu-CY0vvoSu.d.ts → SelectMenu-Bce_PClo.d.ts} +8 -9
  18. package/dist/{StringSelectMenuKit-G5nBTicX.d.ts → StringSelectMenuKit-CBeB9HqT.d.ts} +3 -4
  19. package/dist/TreeArtifact-D6FZ5SVd.d.ts +27 -0
  20. package/dist/{UserSelectMenuKit-D3SO_fXA.d.ts → UserSelectMenuKit-DZmeZ_Tp.d.ts} +3 -4
  21. package/dist/analytics/analytics-engine.d.ts +1 -1
  22. package/dist/analytics/analytics-engine.js +1 -1
  23. package/dist/analytics/analytics-provider.d.ts +1 -1
  24. package/dist/analytics/constants.js +0 -1
  25. package/dist/analytics/constants.js.map +1 -1
  26. package/dist/analytics/utils.js +1 -1
  27. package/dist/{analytics-engine-DnRsHBId.d.ts → analytics-engine-Bz1p7ud3.d.ts} +178 -30
  28. package/dist/app/commands/AppCommandRunner.d.ts +1 -1
  29. package/dist/app/commands/AppCommandRunner.js +1 -1
  30. package/dist/app/commands/Context.d.ts +1 -1
  31. package/dist/app/commands/Context.js +1 -1
  32. package/dist/app/commands/MessageCommandParser.d.ts +1 -1
  33. package/dist/app/commands/MessageCommandParser.js +79 -71
  34. package/dist/app/commands/MessageCommandParser.js.map +1 -1
  35. package/dist/app/commands/helpers.d.ts +1 -1
  36. package/dist/app/commands/helpers.js +0 -1
  37. package/dist/app/commands/helpers.js.map +1 -1
  38. package/dist/app/events/EventWorkerContext.d.ts +3 -3
  39. package/dist/app/events/EventWorkerContext.js +0 -1
  40. package/dist/app/events/EventWorkerContext.js.map +1 -1
  41. package/dist/app/handlers/AppCommandHandler.d.ts +1 -1
  42. package/dist/app/handlers/AppCommandHandler.js +1 -1
  43. package/dist/app/handlers/AppEventsHandler.d.ts +1 -1
  44. package/dist/app/handlers/AppEventsHandler.js +1 -1
  45. package/dist/app/index.d.ts +5 -5
  46. package/dist/app/index.js +1 -1
  47. package/dist/app/interrupt/signals.d.ts +1 -1
  48. package/dist/app/interrupt/signals.js.map +1 -1
  49. package/dist/app/middlewares/permissions.d.ts +1 -2
  50. package/dist/app/middlewares/permissions.js +1 -1
  51. package/dist/app/register/CommandRegistrar.d.ts +1 -1
  52. package/dist/app/register/CommandRegistrar.js +1 -1
  53. package/dist/app/router/CommandTree.d.ts +2 -0
  54. package/dist/app/router/CommandTree.js +1 -0
  55. package/dist/app/router/CommandsRouter.d.ts +2 -2
  56. package/dist/app/router/CommandsRouter.js +445 -24
  57. package/dist/app/router/CommandsRouter.js.map +1 -1
  58. package/dist/app/router/EventsRouter.d.ts +2 -2
  59. package/dist/app/router/EventsRouter.js +56 -3
  60. package/dist/app/router/EventsRouter.js.map +1 -1
  61. package/dist/app/router/TreeArtifact.d.ts +2 -0
  62. package/dist/app/router/TreeArtifact.js +87 -0
  63. package/dist/app/router/TreeArtifact.js.map +1 -0
  64. package/dist/app/router/index.d.ts +6 -3
  65. package/dist/app/router/index.js +8 -1
  66. package/dist/checkbox-DoR0Pcxm.d.ts +27 -0
  67. package/dist/cli/app-process.d.ts +2 -3
  68. package/dist/cli/app-process.js +15 -4
  69. package/dist/cli/app-process.js.map +1 -1
  70. package/dist/cli/build.d.ts +4 -9
  71. package/dist/cli/build.js +33 -5
  72. package/dist/cli/build.js.map +1 -1
  73. package/dist/cli/common.d.ts +3 -6
  74. package/dist/cli/common.js +2 -2
  75. package/dist/cli/common.js.map +1 -1
  76. package/dist/cli/development.d.ts +5 -6
  77. package/dist/cli/development.js +12 -12
  78. package/dist/cli/development.js.map +1 -1
  79. package/dist/cli/env.js.map +1 -1
  80. package/dist/cli/generators.js +0 -1
  81. package/dist/cli/generators.js.map +1 -1
  82. package/dist/cli/information.js +5 -5
  83. package/dist/cli/information.js.map +1 -1
  84. package/dist/cli/init.d.ts +1 -3
  85. package/dist/cli/init.js +37 -12
  86. package/dist/cli/init.js.map +1 -1
  87. package/dist/cli/production.d.ts +1 -3
  88. package/dist/cli/production.js +4 -4
  89. package/dist/cli/production.js.map +1 -1
  90. package/dist/cli/type-checker.js +0 -1
  91. package/dist/cli/type-checker.js.map +1 -1
  92. package/dist/cli/utils.d.ts +0 -1
  93. package/dist/cli/utils.js.map +1 -1
  94. package/dist/{commandkit-Bh7C1_c7.js → commandkit-DNbfLwyR.js} +786 -200
  95. package/dist/commandkit-DNbfLwyR.js.map +1 -0
  96. package/dist/commandkit.d.ts +1 -1
  97. package/dist/commandkit.js +1 -1
  98. package/dist/{common-CCvvgnxi.d.ts → common-CIbPzguv.d.ts} +2 -3
  99. package/dist/components/common/EventInterceptor.d.ts +1 -1
  100. package/dist/components/common/EventInterceptor.js +1 -0
  101. package/dist/components/common/EventInterceptor.js.map +1 -1
  102. package/dist/components/common/element.d.ts +1 -1
  103. package/dist/components/common/element.js +1 -1
  104. package/dist/components/common/types.d.ts +1 -1
  105. package/dist/components/display/common.d.ts +0 -1
  106. package/dist/components/display/common.js +1 -1
  107. package/dist/components/display/container.d.ts +1 -1
  108. package/dist/components/display/container.js +1 -1
  109. package/dist/components/display/file.d.ts +1 -1
  110. package/dist/components/display/file.js +0 -1
  111. package/dist/components/display/file.js.map +1 -1
  112. package/dist/components/display/index.d.ts +9 -8
  113. package/dist/components/display/index.js +1 -1
  114. package/dist/components/display/label.d.ts +1 -1
  115. package/dist/components/display/label.js +1 -1
  116. package/dist/components/display/media-gallery.d.ts +1 -1
  117. package/dist/components/display/media-gallery.js +1 -1
  118. package/dist/components/display/poll.d.ts +1 -1
  119. package/dist/components/display/poll.js +4 -10
  120. package/dist/components/display/poll.js.map +1 -1
  121. package/dist/components/display/section.d.ts +1 -1
  122. package/dist/components/display/section.js +1 -1
  123. package/dist/components/display/separator.d.ts +1 -1
  124. package/dist/components/display/separator.js +0 -1
  125. package/dist/components/display/separator.js.map +1 -1
  126. package/dist/components/display/text-display.d.ts +1 -1
  127. package/dist/components/display/text-display.js +0 -1
  128. package/dist/components/display/text-display.js.map +1 -1
  129. package/dist/components/index.d.ts +26 -23
  130. package/dist/components/index.js +6 -1
  131. package/dist/components/interactive/action-row/ActionRow.d.ts +1 -1
  132. package/dist/components/interactive/action-row/ActionRow.js +0 -1
  133. package/dist/components/interactive/action-row/ActionRow.js.map +1 -1
  134. package/dist/components/interactive/button/Button.d.ts +1 -1
  135. package/dist/components/interactive/button/Button.js +1 -1
  136. package/dist/components/interactive/button/ButtonKit.d.ts +1 -1
  137. package/dist/components/interactive/button/ButtonKit.js +1 -1
  138. package/dist/components/interactive/checkbox/checkbox.d.ts +2 -0
  139. package/dist/components/interactive/checkbox/checkbox.js +6 -0
  140. package/dist/components/interactive/modal/Modal.d.ts +1 -1
  141. package/dist/components/interactive/modal/Modal.js +1 -1
  142. package/dist/components/interactive/modal/ModalKit.d.ts +1 -1
  143. package/dist/components/interactive/modal/ModalKit.js +1 -1
  144. package/dist/components/interactive/radio/radio.d.ts +2 -0
  145. package/dist/components/interactive/radio/radio.js +5 -0
  146. package/dist/components/interactive/select-menu/ChannelSelectMenuKit.d.ts +1 -1
  147. package/dist/components/interactive/select-menu/ChannelSelectMenuKit.js +1 -1
  148. package/dist/components/interactive/select-menu/MentionableSelectMenuKit.d.ts +1 -1
  149. package/dist/components/interactive/select-menu/MentionableSelectMenuKit.js +1 -1
  150. package/dist/components/interactive/select-menu/RoleSelectMenuKit.d.ts +1 -1
  151. package/dist/components/interactive/select-menu/RoleSelectMenuKit.js +1 -1
  152. package/dist/components/interactive/select-menu/SelectMenu.d.ts +1 -1
  153. package/dist/components/interactive/select-menu/SelectMenu.js +1 -1
  154. package/dist/components/interactive/select-menu/StringSelectMenuKit.d.ts +1 -1
  155. package/dist/components/interactive/select-menu/StringSelectMenuKit.js +1 -1
  156. package/dist/components/interactive/select-menu/UserSelectMenuKit.d.ts +1 -1
  157. package/dist/components/interactive/select-menu/UserSelectMenuKit.js +1 -1
  158. package/dist/components/interactive/select-menu/common.d.ts +1 -1
  159. package/dist/config/config.d.ts +1 -2
  160. package/dist/config/config.js +1 -1
  161. package/dist/config/default.d.ts +1 -2
  162. package/dist/config/default.js +1 -1
  163. package/dist/config/loader.d.ts +1 -2
  164. package/dist/config/loader.js +1 -1
  165. package/dist/config/types.d.ts +2 -2
  166. package/dist/config/utils.d.ts +1 -1
  167. package/dist/config/utils.js.map +1 -1
  168. package/dist/{constants-DqtJY0t-.d.ts → constants-B7AfnOFa.d.ts} +1 -1
  169. package/dist/{constants-DwxpkIeH.d.ts → constants-kWgE3L9F.d.ts} +15 -2
  170. package/dist/{container-CYojOA9d.d.ts → container-NVgblXmw.d.ts} +1 -2
  171. package/dist/context/async-context.d.ts +1 -1
  172. package/dist/context/async-context.js +1 -1
  173. package/dist/context/environment.d.ts +1 -1
  174. package/dist/context/environment.js +1 -1
  175. package/dist/{element-DeLvTMfZ.d.ts → element-BMZYAAQ-.d.ts} +3 -4
  176. package/dist/events/CommandKitEventsChannel.d.ts +1 -1
  177. package/dist/events/CommandKitEventsChannel.js +3 -2
  178. package/dist/events/CommandKitEventsChannel.js.map +1 -1
  179. package/dist/{file-DLO1zEcH.d.ts → file-DYAmr697.d.ts} +1 -2
  180. package/dist/flags/FlagProvider.d.ts +1 -1
  181. package/dist/flags/FlagProvider.js +1 -0
  182. package/dist/flags/FlagProvider.js.map +1 -1
  183. package/dist/flags/feature-flags.d.ts +1 -1
  184. package/dist/flags/feature-flags.js +1 -1
  185. package/dist/flags/store.d.ts +1 -1
  186. package/dist/flags/store.js +0 -1
  187. package/dist/flags/store.js.map +1 -1
  188. package/dist/{helpers-zmC44Mcu.d.ts → helpers-vlnRvNJv.d.ts} +1 -2
  189. package/dist/index-CAFaKBs_.d.ts +8 -0
  190. package/dist/index-COt7nfC9.d.ts +2 -0
  191. package/dist/index-DvqHpiuh.d.ts +16 -0
  192. package/dist/index.d.ts +37 -31
  193. package/dist/index.js +14 -2
  194. package/dist/kv/constants.d.ts +1 -1
  195. package/dist/kv/constants.js.map +1 -1
  196. package/dist/kv/dotprops.js.map +1 -1
  197. package/dist/kv/kv.d.ts +0 -1
  198. package/dist/kv/kv.js +1 -1
  199. package/dist/kv/kv.js.map +1 -1
  200. package/dist/kv/serde.d.ts +1 -2
  201. package/dist/kv/serde.js +27 -27
  202. package/dist/kv/serde.js.map +1 -1
  203. package/dist/{label-DqGRqodo.d.ts → label-DClaYktn.d.ts} +1 -2
  204. package/dist/logger/DefaultLogger.d.ts +0 -1
  205. package/dist/logger/DefaultLogger.js +1 -1
  206. package/dist/logger/Logger.d.ts +0 -1
  207. package/dist/logger/Logger.js +1 -1
  208. package/dist/logger/NoopLogger.d.ts +0 -1
  209. package/dist/logger/NoopLogger.js.map +1 -1
  210. package/dist/{media-gallery-Ca8es-eB.d.ts → media-gallery-z2Snzz-u.d.ts} +1 -2
  211. package/dist/plugins/CompilerPlugin.d.ts +1 -1
  212. package/dist/plugins/CompilerPlugin.js +2 -2
  213. package/dist/plugins/CompilerPlugin.js.map +1 -1
  214. package/dist/plugins/PluginCommon.d.ts +1 -1
  215. package/dist/plugins/PluginCommon.js +1 -1
  216. package/dist/plugins/PluginCommon.js.map +1 -1
  217. package/dist/plugins/RuntimePlugin.d.ts +1 -1
  218. package/dist/plugins/RuntimePlugin.js +2 -2
  219. package/dist/plugins/RuntimePlugin.js.map +1 -1
  220. package/dist/plugins/index.d.ts +1 -1
  221. package/dist/plugins/index.js +1 -1
  222. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.d.ts +1 -1
  223. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +1 -1
  224. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.d.ts +1 -1
  225. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +1 -1
  226. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.d.ts +1 -1
  227. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +1 -1
  228. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.d.ts +1 -2
  229. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +1 -1
  230. package/dist/plugins/plugin-runtime/runtime.d.ts +1 -1
  231. package/dist/plugins/types.d.ts +1 -1
  232. package/dist/{poll-DQ6DX_Tt.d.ts → poll-D2QDStsw.d.ts} +4 -14
  233. package/dist/radio-CJH_N4lq.d.ts +20 -0
  234. package/dist/{section-Q8nwx_-q.d.ts → section-DrFBT5b-.d.ts} +1 -2
  235. package/dist/{separator-B8P-kdIK.d.ts → separator-BVm3w6yd.d.ts} +1 -2
  236. package/dist/{signals-CBXwugBW.d.ts → signals-DRMDrCOn.d.ts} +1 -1
  237. package/dist/{text-display-CL9C2yMc.d.ts → text-display-BG0nNqy3.d.ts} +1 -2
  238. package/dist/{types-DZy7U-Ld.d.ts → types-ur7SvktF.d.ts} +1 -1
  239. package/dist/types.d.ts +1 -1
  240. package/dist/utils/colors.d.ts +1 -3
  241. package/dist/utils/colors.js +0 -1
  242. package/dist/utils/colors.js.map +1 -1
  243. package/dist/utils/constants.d.ts +2 -2
  244. package/dist/utils/constants.js +19 -0
  245. package/dist/utils/constants.js.map +1 -1
  246. package/dist/utils/dev-hooks.d.ts +1 -1
  247. package/dist/utils/dev-hooks.js +1 -1
  248. package/dist/utils/error-codes.js +15 -0
  249. package/dist/utils/error-codes.js.map +1 -1
  250. package/dist/utils/resolve-file-url.js +2 -2
  251. package/dist/utils/resolve-file-url.js.map +1 -1
  252. package/dist/utils/types-package.d.ts +6 -2
  253. package/dist/utils/types-package.js +31 -38
  254. package/dist/utils/types-package.js.map +1 -1
  255. package/dist/utils/useful-stuff/async-queue.js.map +1 -1
  256. package/dist/utils/useful-stuff/mutex.js.map +1 -1
  257. package/dist/utils/useful-stuff/ratelimiter.js +4 -1
  258. package/dist/utils/useful-stuff/ratelimiter.js.map +1 -1
  259. package/dist/utils/useful-stuff/semaphore.js.map +1 -1
  260. package/dist/utils/utilities.js +1 -1
  261. package/dist/utils/warning.d.ts +1 -5
  262. package/dist/utils/warning.js.map +1 -1
  263. package/dist/version.js +1 -1
  264. package/dist/version.js.map +1 -1
  265. package/package.json +17 -17
  266. package/dist/CommandsRouter-DiNoF0dq.d.ts +0 -145
  267. package/dist/commandkit-Bh7C1_c7.js.map +0 -1
  268. package/dist/index-BIsCUWAs.d.ts +0 -1
  269. package/dist/index-CwHYpK-f.d.ts +0 -1
  270. package/dist/index-DHrsNvX1.d.ts +0 -1
  271. /package/dist/{chunk-BE-pF4vm.js → rolldown-runtime-C_NdSu1c.js} +0 -0
@@ -1,7 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
3
2
  const require_utils_colors = require('../utils/colors.js');
4
- const require_commandkit = require('../commandkit-Bh7C1_c7.js');
3
+ const require_commandkit = require('../commandkit-DNbfLwyR.js');
5
4
  const require_plugins_CompilerPlugin = require('../plugins/CompilerPlugin.js');
6
5
  const require_utils_constants = require('../utils/constants.js');
7
6
  const require_cli_common = require('./common.js');
@@ -27,7 +26,7 @@ async function buildAndStart(configPath, skipStart = false) {
27
26
  rolldownPlugins: config.rolldownPlugins
28
27
  });
29
28
  if (skipStart) return null;
30
- return require_cli_app_process.createAppProcess(mainFile, configPath, true);
29
+ return require_cli_app_process.createAppProcess(mainFile, configPath, true, config);
31
30
  }
32
31
  /**
33
32
  * @private
@@ -71,13 +70,14 @@ async function bootstrapDevelopmentServer(configPath) {
71
70
  });
72
71
  });
73
72
  };
74
- const sendHmrEvent = async (event, path$1) => {
73
+ const sendHmrEvent = async (event, path$1, changeType) => {
75
74
  if (!ps || !ps.send) return false;
76
75
  const messageId = (0, node_crypto.randomUUID)();
77
76
  const messagePromise = waitForAcknowledgment(messageId);
78
77
  ps.send({
79
78
  event,
80
79
  path: path$1,
80
+ changeType,
81
81
  id: messageId
82
82
  });
83
83
  try {
@@ -93,7 +93,7 @@ async function bootstrapDevelopmentServer(configPath) {
93
93
  return false;
94
94
  }
95
95
  };
96
- const performHMR = require_commandkit.debounce(async (path$2) => {
96
+ const performHMR = require_commandkit.debounce(async (path$2, changeType) => {
97
97
  if (!path$2 || !ps) return false;
98
98
  let eventType = null;
99
99
  let eventDescription = "";
@@ -110,7 +110,7 @@ async function bootstrapDevelopmentServer(configPath) {
110
110
  if (eventType) {
111
111
  console.log(`${require_utils_colors.default.cyanBright(`Attempting to reload ${eventDescription} at`)} ${require_utils_colors.default.yellowBright(path$2)}`);
112
112
  await buildAndStart(cwd, true);
113
- if (await sendHmrEvent(eventType, path$2)) {
113
+ if (await sendHmrEvent(eventType, path$2, changeType)) {
114
114
  console.log(`${require_utils_colors.default.greenBright(`Successfully hot reloaded ${eventDescription} at`)} ${require_utils_colors.default.yellowBright(path$2)}`);
115
115
  return true;
116
116
  }
@@ -123,9 +123,9 @@ async function bootstrapDevelopmentServer(configPath) {
123
123
  console.log(require_utils_colors.default.yellowBright("It seems like commandkit config file was updated, please restart the server manually to apply changes."));
124
124
  return isConfig;
125
125
  };
126
- const hmrHandler = async (path$4) => {
126
+ const hmrHandler = async (path$4, changeType = require_utils_constants.HMREventChangeType.Change) => {
127
127
  if (isConfigUpdate(path$4)) return;
128
- if (await performHMR(path$4)) return;
128
+ if (await performHMR(path$4, changeType)) return;
129
129
  console.log(`${require_utils_colors.default.yellowBright("⚡️ Performing full restart due to the changes in")} ${require_utils_colors.default.cyanBright(path$4)}`);
130
130
  ps === null || ps === void 0 || ps.kill();
131
131
  ps = await buildAndStart(cwd);
@@ -148,10 +148,10 @@ async function bootstrapDevelopmentServer(configPath) {
148
148
  break;
149
149
  }
150
150
  });
151
- watcher.on("change", hmrHandler);
152
- watcher.on("add", hmrHandler);
153
- watcher.on("unlink", hmrHandler);
154
- watcher.on("unlinkDir", hmrHandler);
151
+ watcher.on("change", (path$5) => hmrHandler(path$5, require_utils_constants.HMREventChangeType.Change));
152
+ watcher.on("add", (path$6) => hmrHandler(path$6, require_utils_constants.HMREventChangeType.Add));
153
+ watcher.on("unlink", (path$7) => hmrHandler(path$7, require_utils_constants.HMREventChangeType.Unlink));
154
+ watcher.on("unlinkDir", (path$8) => hmrHandler(path$8, require_utils_constants.HMREventChangeType.UnlinkDir));
155
155
  watcher.on("error", (e) => {
156
156
  console.error(e);
157
157
  });
@@ -1 +1 @@
1
- {"version":3,"file":"development.js","names":[],"sources":["../../src/cli/development.ts"],"sourcesContent":["import { join } from 'path';\nimport { getPossibleConfigPaths, loadConfigFile } from '../config/loader';\nimport { isCompilerPlugin } from '../plugins';\nimport { createAppProcess } from './app-process';\nimport { buildApplication } from './build';\nimport { watch } from 'chokidar';\nimport { debounce } from '../utils/utilities';\nimport colors from '../utils/colors';\nimport { ChildProcess } from 'node:child_process';\nimport { setTimeout as sleep } from 'node:timers/promises';\nimport { randomUUID } from 'node:crypto';\nimport { COMMANDKIT_CWD, HMREventType } from '../utils/constants';\nimport { findEntrypoint } from './common';\n\n/**\n * @private\n * @internal\n */\nasync function buildAndStart(configPath: string, skipStart = false) {\n const config = await loadConfigFile(configPath);\n const mainFile = findEntrypoint('.commandkit');\n\n await buildApplication({\n configPath,\n isDev: true,\n plugins: config.plugins.flat(2).filter((p) => isCompilerPlugin(p)),\n rolldownPlugins: config.rolldownPlugins,\n });\n\n if (skipStart) return null as never;\n\n const ps = createAppProcess(mainFile, configPath, true);\n\n return ps;\n}\n\n/**\n * @private\n * @internal\n */\nconst isCommandSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/commands');\n\n/**\n * @private\n * @internal\n */\nconst isEventSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/events');\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapDevelopmentServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'development';\n process.env.COMMANDKIT_INTERNAL_IS_CLI_PROCESS = 'true';\n const start = performance.now();\n const cwd = configPath || COMMANDKIT_CWD;\n const configPaths = getPossibleConfigPaths(cwd);\n\n const watcher = watch([join(cwd, 'src'), ...configPaths], {\n ignoreInitial: true,\n });\n\n let ps: ChildProcess | null = null;\n\n const waitForAcknowledgment = (messageId: string): Promise<boolean> => {\n return new Promise((resolve) => {\n if (!ps) return resolve(false);\n\n let _handled = false;\n const onMessage = (message: any) => {\n _handled = true;\n if (typeof message !== 'object' || message === null) return;\n\n const { type, id, handled } = message;\n if (type === 'commandkit-hmr-ack' && id === messageId) {\n ps?.off('message', onMessage);\n resolve(!!handled);\n }\n };\n\n ps.once('message', onMessage);\n\n if (!_handled) {\n sleep(3000).then(() => {\n ps?.off('message', onMessage);\n resolve(false);\n });\n }\n });\n };\n\n const sendHmrEvent = async (\n event: HMREventType,\n path?: string,\n ): Promise<boolean> => {\n if (!ps || !ps.send) return false;\n\n const messageId = randomUUID();\n const messagePromise = waitForAcknowledgment(messageId);\n\n ps.send({ event, path, id: messageId });\n\n // Wait for acknowledgment or timeout after 3 seconds\n try {\n let triggered = false;\n const res = !!(await Promise.race([\n messagePromise,\n sleep(3000).then(() => {\n if (!triggered) {\n console.warn(\n colors.yellow(\n `HMR acknowledgment timed out for event ${event} on path ${path}`,\n ),\n );\n }\n return false;\n }),\n ]));\n\n triggered = true;\n\n return res;\n } catch (error) {\n console.error(\n colors.red(`Error waiting for HMR acknowledgment: ${error}`),\n );\n return false;\n }\n };\n\n const performHMR = debounce(async (path?: string): Promise<boolean> => {\n if (!path || !ps) return false;\n\n let eventType: HMREventType | null = null;\n let eventDescription = '';\n\n if (isCommandSource(path)) {\n eventType = HMREventType.ReloadCommands;\n eventDescription = 'command(s)';\n } else if (isEventSource(path)) {\n eventType = HMREventType.ReloadEvents;\n eventDescription = 'event(s)';\n } else {\n eventType = HMREventType.Unknown;\n eventDescription = 'unknown source';\n }\n\n if (eventType) {\n console.log(\n `${colors.cyanBright(`Attempting to reload ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n\n await buildAndStart(cwd, true);\n const hmrHandled = await sendHmrEvent(eventType, path);\n\n if (hmrHandled) {\n console.log(\n `${colors.greenBright(`Successfully hot reloaded ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n return true;\n }\n }\n\n return false;\n }, 700);\n\n const isConfigUpdate = (path: string) => {\n const isConfig = configPaths.some((configPath) => path === configPath);\n\n if (!isConfig) return false;\n\n console.log(\n colors.yellowBright(\n 'It seems like commandkit config file was updated, please restart the server manually to apply changes.',\n ),\n );\n\n return isConfig;\n };\n\n const hmrHandler = async (path: string) => {\n if (isConfigUpdate(path)) return;\n const hmr = await performHMR(path);\n if (hmr) return;\n\n console.log(\n `${colors.yellowBright('⚡️ Performing full restart due to the changes in')} ${colors.cyanBright(path)}`,\n );\n\n ps?.kill();\n ps = await buildAndStart(cwd);\n };\n\n process.stdin.on('data', async (d) => {\n const command = d.toString().trim();\n\n switch (command) {\n case 'r':\n console.log(`Received restart command, restarting...`);\n ps?.kill();\n ps = null;\n ps = await buildAndStart(cwd);\n break;\n case 'rc':\n console.log(`Received reload commands command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadCommands);\n break;\n case 're':\n console.log(`Received reload events command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadEvents);\n break;\n break;\n }\n });\n\n watcher.on('change', hmrHandler);\n watcher.on('add', hmrHandler);\n watcher.on('unlink', hmrHandler);\n watcher.on('unlinkDir', hmrHandler);\n watcher.on('error', (e) => {\n console.error(e);\n });\n\n console.log(`${colors.greenBright('Bootstrapped CommandKit Development Environment in')} ${colors.yellowBright(`${(performance.now() - start).toFixed(2)}ms`)}\n${colors.greenBright('Watching for changes in')} ${colors.yellowBright('src')} ${colors.greenBright('directory')}\n\n${colors.greenBright('Commands:')}\n${colors.yellowBright('r')} - Restart the server\n${colors.yellowBright('rc')} - Reload all commands\n${colors.yellowBright('re')} - Reload all events`);\n\n const buildStart = performance.now();\n\n ps = await buildAndStart(cwd);\n\n const buildEnd = performance.now();\n\n console.log(\n `\\n${colors.greenBright('Development mode compilation took')} ${colors.yellowBright(`${(buildEnd - buildStart).toFixed(2)}ms`)}\\n`,\n );\n\n return {\n watcher,\n isConfigUpdate,\n performHMR,\n hmrHandler,\n sendHmrEvent,\n getProcess: () => ps,\n buildAndStart,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"development.js","names":[],"sources":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","names":[],"sources":["../../src/cli/env.ts"],"sourcesContent":["/**\n * @private\n * @internal\n */\nexport function DevEnv(_static = false) {\n const common = {\n NODE_ENV: 'development',\n COMMANDKIT_IS_DEV: 'true',\n COMMANDKIT_INTERNAL_IS_CLI_PROCESS: 'false',\n COMMANDKIT_IS_BUILD: 'false',\n };\n\n if (_static) return Object.assign({}, common);\n\n return Object.assign({}, process.env, common);\n}\n\n/**\n * @private\n * @internal\n */\nexport function ProdEnv(_static = false) {\n const common = {\n NODE_ENV: 'production',\n COMMANDKIT_IS_DEV: 'false',\n COMMANDKIT_INTERNAL_IS_CLI_PROCESS: 'false',\n COMMANDKIT_IS_BUILD: 'false',\n };\n\n if (_static) return Object.assign({}, common);\n\n return Object.assign({}, process.env, common);\n}\n\n/**\n * @private\n * @internal\n */\nexport const CommonEnvFiles = ['.env', '.env.local'];\n/**\n * @private\n * @internal\n */\nexport const DevEnvFiles = ['.env.development', '.env.development.local'];\n/**\n * @private\n * @internal\n */\nexport const ProdEnvFiles = ['.env.production', '.env.production.local'];\n/**\n * @private\n * @internal\n */\nexport const devEnvFileArgs = [...CommonEnvFiles, ...DevEnvFiles];\n/**\n * @private\n * @internal\n */\nexport const prodEnvFileArgs = [...CommonEnvFiles, ...ProdEnvFiles];\n/**\n * @private\n * @internal\n */\nexport function setCLIEnv() {\n process.env.COMMANDKIT_IS_CLI = 'true';\n}\n"],"mappings":";;;;;;;AAIA,SAAgB,OAAO,UAAU,OAAO;CACtC,MAAM,SAAS;EACb,UAAU;EACV,mBAAmB;EACnB,oCAAoC;EACpC,qBAAqB;EACtB;AAED,KAAI,QAAS,QAAO,OAAO,OAAO,EAAE,EAAE,OAAO;AAE7C,QAAO,OAAO,OAAO,EAAE,EAAE,QAAQ,KAAK,OAAO;;;;;;AAO/C,SAAgB,QAAQ,UAAU,OAAO;CACvC,MAAM,SAAS;EACb,UAAU;EACV,mBAAmB;EACnB,oCAAoC;EACpC,qBAAqB;EACtB;AAED,KAAI,QAAS,QAAO,OAAO,OAAO,EAAE,EAAE,OAAO;AAE7C,QAAO,OAAO,OAAO,EAAE,EAAE,QAAQ,KAAK,OAAO;;;;;;AAO/C,MAAa,iBAAiB,CAAC,QAAQ,aAAa;;;;;AAKpD,MAAa,cAAc,CAAC,oBAAoB,yBAAyB;;;;;AAKzE,MAAa,eAAe,CAAC,mBAAmB,wBAAwB;;;;;AAKxE,MAAa,iBAAiB,CAAC,GAAG,gBAAgB,GAAG,YAAY;;;;;AAKjE,MAAa,kBAAkB,CAAC,GAAG,gBAAgB,GAAG,aAAa;;;;;AAKnE,SAAgB,YAAY;AAC1B,SAAQ,IAAI,oBAAoB"}
1
+ {"version":3,"file":"env.js","names":[],"sources":[],"mappings":""}
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
3
2
  const require_utils_colors = require('../utils/colors.js');
4
3
  const require_utils_constants = require('../utils/constants.js');
5
4
  const require_cli_common = require('./common.js');
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","names":[],"sources":["../../src/cli/generators.ts"],"sourcesContent":["import { mkdir, writeFile, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { panic } from './common';\nimport { existsSync } from 'fs';\nimport colors from '../utils/colors';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\nconst BASE_PATH = COMMANDKIT_CWD;\nconst COMMANDS_DIR = join(BASE_PATH, 'src/app/commands');\nconst EVENTS_DIR = join(BASE_PATH, 'src/app/events');\n\n/**\n * @private\n * @internal\n */\nconst formatPath = (path: string) =>\n path.replace(COMMANDKIT_CWD, '.').replace(/\\\\/g, '/');\n\n/**\n * @private\n * @internal\n */\nfunction determineExtension() {\n return existsSync(join(BASE_PATH, 'tsconfig.json')) ? 'ts' : 'js';\n}\n\n/**\n * @private\n * @internal\n */\nfunction TS_COMMAND_SOURCE(name: string) {\n return `import type { CommandData, ChatInputCommand, MessageCommand } from 'commandkit';\n\nexport const command: CommandData = {\n name: '${name}',\n description: '${name} command',\n};\n\nexport const chatInput: ChatInputCommand = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\nexport const message: MessageCommand = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nfunction JS_COMMAND_SOURCE(name: string) {\n return `/**\n * @type {import('commandkit').CommandData}\n */\nexport const command = {\n name: '${name}',\n description: '${name} command',\n};\n\n/**\n * @type {import('commandkit').ChatInputCommand}\n */\nexport const chatInput = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\n/**\n * @type {import('commandkit').MessageCommand}\n */\nexport const message = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nfunction TS_EVENT_SOURCE(name: string) {\n const eventName = name[0].toUpperCase() + name.slice(1);\n return `import type { EventHandler } from 'commandkit';\n\nconst ${eventName}: EventHandler<'${name}'> = async () => {\n console.log('${name} event fired!');\n};\n\nexport default ${eventName};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nfunction JS_EVENT_SOURCE(name: string) {\n const eventName = `on${name[0].toUpperCase() + name.slice(1)}`;\n return `/**\n * @type {import('commandkit').EventHandler<'${name}'>}\n */\nconst ${eventName} = async () => {\n console.log('${name} event fired!');\n};\n\nexport default ${eventName};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateCommand(name: string, customPath?: string) {\n const cmdPath = join(customPath || COMMANDS_DIR);\n if (!existsSync(cmdPath)) await mkdir(cmdPath, { recursive: true });\n\n const ext = determineExtension();\n const isTypeScript = ext === 'ts';\n\n const fileName = `${name}.${ext}`;\n\n if (existsSync(join(cmdPath, fileName))) {\n panic(`Command ${name} already exists.`);\n }\n\n const commandFile = isTypeScript\n ? TS_COMMAND_SOURCE(name)\n : JS_COMMAND_SOURCE(name);\n\n await writeFile(join(cmdPath, fileName), commandFile);\n\n console.log(\n colors.green(\n `Command ${colors.magenta(name)} created at ${colors.blue(formatPath(`${cmdPath}/${fileName}`))}`,\n ),\n );\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateEvent(name: string, customPath?: string) {\n const eventPath = join(customPath || EVENTS_DIR, name);\n if (!existsSync(eventPath)) await mkdir(eventPath, { recursive: true });\n\n const ext = determineExtension();\n const isTypeScript = ext === 'ts';\n\n let filename = `event.${ext}`;\n\n if (existsSync(join(eventPath, filename))) {\n const count = (await readdir(eventPath)).length;\n filename = `${String(count).padStart(2, '0')}_${filename}`;\n }\n\n const eventFile = isTypeScript\n ? TS_EVENT_SOURCE(name)\n : JS_EVENT_SOURCE(name);\n\n await writeFile(join(eventPath, filename), eventFile);\n\n console.log(\n colors.green(\n `Event ${colors.magenta(name)} created at ${colors.blue(formatPath(eventPath))}/${colors.magenta(filename)}`,\n ),\n );\n}\n"],"mappings":";;;;;;;;;;AAOA,MAAM,YAAY;AAClB,MAAM,8BAAoB,WAAW,mBAAmB;AACxD,MAAM,4BAAkB,WAAW,iBAAiB;;;;;AAMpD,MAAM,cAAc,WACpB,OAAE,QAAK,wCAAsB,IAAI,CAAC,QAAE,OAAa,IAAI;;;;;AAMrD,SAAS,qBAAqB;AAC5B,0CAAuB,WAAW,gBAAgB,CAAC,GAAG,OAAO;;;;;;AAO/D,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;WAGE,KAAK;kBACE,KAAK;;;;4CAIqB,KAAK;;;;wCAIT,KAAK;;;;;;;;AAS7C,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;;WAIE,KAAK;kBACE,KAAK;;;;;;;4CAOqB,KAAK;;;;;;;wCAOT,KAAK;;;;;;;;AAS7C,SAAS,gBAAgB,MAAc;CACrC,MAAM,YAAY,KAAK,GAAG,aAAa,GAAG,KAAK,MAAM,EAAE;AACvD,QAAO;;QAED,UAAU,kBAAkB,KAAK;iBACxB,KAAK;;;iBAGL,UAAU;;;;;;;AAQ3B,SAAS,gBAAgB,MAAc;CACrC,MAAM,YAAY,KAAK,KAAK,GAAG,aAAa,GAAG,KAAK,MAAM,EAAE;AAC5D,QAAO;+CACsC,KAAK;;QAE5C,UAAU;iBACD,KAAK;;;iBAGL,UAAU;;;;;;;AAQ3B,eAAsB,gBAAgB,MAAc,YAAqB;CACvE,MAAM,yBAAe,cAAc,aAAa;AAChD,KAAI,oBAAY,QAAQ,CAAE,8BAAY,SAAS,EAAE,WAAW,MAAM,CAAC;CAEnE,MAAM,MAAM,oBAAoB;CAChC,MAAM,eAAe,QAAQ;CAE7B,MAAM,WAAW,GAAG,KAAK,GAAG;AAE5B,uCAAoB,SAAS,SAAS,CAAC,CACrC,0BAAM,WAAW,KAAK,kBAAkB;CAG1C,MAAM,cAAc,eACpB,kBAAI,KAAkB,GACtB,kBAAI,KAAkB;AAEtB,iDAAqB,SAAS,SAAS,EAAE,YAAY;AAErD,SAAQ,IACN,6BAAO,MACL,WAAW,6BAAO,QAAQ,KAAK,CAAC,cAAc,6BAAO,KAAK,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,GAChG,CACF;;;;;;AAOH,eAAsB,cAAc,MAAc,YAAqB;CACrE,MAAM,2BAAiB,cAAc,YAAY,KAAK;AACtD,KAAI,oBAAY,UAAU,CAAE,8BAAY,WAAW,EAAE,WAAW,MAAM,CAAC;CAEvE,MAAM,MAAM,oBAAoB;CAChC,MAAM,eAAe,QAAQ;CAE7B,IAAI,WAAW,SAAS;AAExB,uCAAoB,WAAW,SAAS,CAAC,EAAE;EACzC,MAAM,SAAS,+BAAc,UAAU,EAAE;AACzC,aAAW,GAAG,OAAO,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;;CAGlD,MAAM,YAAY,eAClB,gBAAI,KAAgB,GACpB,gBAAI,KAAgB;AAEpB,iDAAqB,WAAW,SAAS,EAAE,UAAU;AAErD,SAAQ,IACN,6BAAO,MACL,SAAS,6BAAO,QAAQ,KAAK,CAAC,cAAc,6BAAO,KAAK,WAAW,UAAU,CAAC,CAAC,GAAG,6BAAO,QAAQ,SAAS,GAC3G,CACF"}
1
+ {"version":3,"file":"generators.js","names":[],"sources":[],"mappings":""}
@@ -1,14 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
2
+ const require_rolldown_runtime = require('../rolldown-runtime-C_NdSu1c.js');
3
3
  const require_utils_constants = require('../utils/constants.js');
4
4
  const require_version = require('../version.js');
5
5
  let node_fs = require("node:fs");
6
- node_fs = require_chunk.__toESM(node_fs);
6
+ node_fs = require_rolldown_runtime.__toESM(node_fs);
7
7
  let node_path = require("node:path");
8
- node_path = require_chunk.__toESM(node_path);
8
+ node_path = require_rolldown_runtime.__toESM(node_path);
9
9
  let node_child_process = require("node:child_process");
10
10
  let node_os = require("node:os");
11
- node_os = require_chunk.__toESM(node_os);
11
+ node_os = require_rolldown_runtime.__toESM(node_os);
12
12
 
13
13
  //#region src/cli/information.ts
14
14
  /**
@@ -19,10 +19,10 @@ const knownPlugins = [
19
19
  "@commandkit/ai",
20
20
  "@commandkit/analytics",
21
21
  "@commandkit/cache",
22
- "@commandkit/devtools",
23
22
  "@commandkit/i18n",
24
23
  "@commandkit/legacy",
25
24
  "@commandkit/queue",
25
+ "@commandkit/ratelimit",
26
26
  "@commandkit/redis",
27
27
  "@commandkit/workflow"
28
28
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"information.js","names":[],"sources":["../../src/cli/information.ts"],"sourcesContent":["import os from 'node:os';\nimport { execSync } from 'node:child_process';\nimport { version as commandkitVersion } from '../version';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nfunction $getKnownPlugins() {\n 'use macro';\n\n // remove name from the list when that plugin is stable\n const BLACKLISTED = new Set([\n 'commandkit', // core package itself, not a plugin\n 'create-commandkit', // generator, not a plugin\n 'tsconfig', // repo config related, not a plugin\n 'devtools-ui', // the ui part of devtools, not a plugin\n // the plugins below are TBD\n 'tasks',\n ]);\n\n const { readdirSync, readFileSync } =\n require('node:fs') as typeof import('node:fs');\n const { join } = require('node:path') as typeof path;\n\n const pluginsPath = join(__dirname, '..', '..', '..');\n\n const entries = readdirSync(pluginsPath, { withFileTypes: true }).filter(\n (e) => !BLACKLISTED.has(e.name),\n );\n\n const packages = entries.map((p) =>\n join(p.parentPath, p.name, 'package.json'),\n );\n\n const knownPlugins: string[] = [];\n\n for (const pkg of packages) {\n try {\n const { name } = JSON.parse(readFileSync(pkg, 'utf8'));\n if (name && !BLACKLISTED.has(name.replace('@commandkit/', ''))) {\n knownPlugins.push(name);\n }\n } catch {\n // Ignore errors\n }\n }\n\n return knownPlugins;\n}\n\nconst knownPlugins: string[] = $getKnownPlugins();\n\n/**\n * @private\n * @internal\n */\nfunction findPackageVersion(packageName: string) {\n try {\n const packageJsonPath = require.resolve(`${packageName}/package.json`);\n const packageJson = require(packageJsonPath);\n return packageJson.version;\n } catch (e) {\n try {\n const basePaths = [\n path.join(COMMANDKIT_CWD, 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', '.pnpm', packageName),\n path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n packageName,\n ),\n ];\n\n for (const basePath of basePaths) {\n const packageJsonPath = path.join(basePath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n\n const nodeModulesPath = path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n );\n if (fs.existsSync(nodeModulesPath)) {\n const folders = fs.readdirSync(nodeModulesPath);\n const packageFolder = folders.find((folder) =>\n folder.startsWith(`${packageName.replace('/', '+')}@`),\n );\n\n if (packageFolder) {\n const packageJsonPath = path.join(\n nodeModulesPath,\n packageFolder,\n 'node_modules',\n packageName,\n 'package.json',\n );\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n }\n\n return null;\n } catch {\n return null;\n }\n }\n}\n\n/**\n * @private\n * @internal\n */\nfunction getBinaryVersion(binary: string) {\n try {\n const version = execSync(`${binary} --version`).toString().trim();\n return version;\n } catch {\n return null;\n }\n}\n\n/**\n * @private\n * @internal\n */\nexport async function showInformation() {\n const runtimeName: string = (() => {\n // @ts-ignore\n if ('Deno' in globalThis && typeof Deno !== 'undefined') return 'Deno';\n // @ts-ignore\n if ('Bun' in globalThis && typeof Bun !== 'undefined') return 'Bun';\n\n return 'Node.js';\n })();\n\n const info = {\n 'Operating System': {\n Platform: process.platform,\n Arch: process.arch,\n Version: os.version(),\n 'Available Memory (MB)': Math.round(os.totalmem() / 1024 / 1024),\n 'Available CPU cores': os.cpus().length,\n },\n Runtime: runtimeName,\n Binaries: {\n Node: process.version,\n npm: getBinaryVersion('npm') || 'N/A',\n Yarn: getBinaryVersion('yarn') || 'N/A',\n pnpm: getBinaryVersion('pnpm') || 'N/A',\n Bun: getBinaryVersion('bun') || 'N/A',\n Deno: (getBinaryVersion('deno') || 'N/A').replace(/\\n|\\r/g, ' '),\n },\n 'Relevant Packages': {\n commandkit: commandkitVersion,\n 'discord.js': findPackageVersion('discord.js') || 'N/A',\n typescript: findPackageVersion('typescript') || 'N/A',\n rolldown: findPackageVersion('rolldown') || 'N/A',\n tsdown: findPackageVersion('tsdown') || 'N/A',\n },\n 'CommandKit Plugins': knownPlugins.reduce(\n (acc, plugin) => {\n acc[plugin] = findPackageVersion(plugin) || 'N/A';\n return acc;\n },\n {} as Record<string, string>,\n ),\n };\n\n let output = '';\n\n for (const [section, data] of Object.entries(info)) {\n output += `${section}:\\n`;\n\n if (typeof data === 'string') {\n output += ` ${data}\\n\\n`;\n continue;\n }\n\n for (const [key, value] of Object.entries(data)) {\n output += ` ${key}: ${value}\\n`;\n }\n output += '\\n';\n }\n\n console.log(output.trim());\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"information.js","names":[],"sources":[],"mappings":""}
@@ -1,12 +1,10 @@
1
- import * as commander from "commander";
2
-
3
1
  //#region src/cli/init.d.ts
4
2
  /**
5
3
  * Creates a command line interface for CommandKit.
6
4
  * @param argv The arguments passed to the CLI.
7
5
  * @param options The options passed to the CLI.
8
6
  */
9
- declare function bootstrapCommandkitCLI(argv: string[], options?: commander.ParseOptions | undefined): Promise<void>;
7
+ declare function bootstrapCommandkitCLI(argv: string[], options?: import('commander').ParseOptions | undefined): Promise<void>;
10
8
  //#endregion
11
9
  export { bootstrapCommandkitCLI };
12
10
  //# sourceMappingURL=init.d.ts.map
package/dist/cli/init.js CHANGED
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
3
- const require_commandkit = require('../commandkit-Bh7C1_c7.js');
2
+ const require_commandkit = require('../commandkit-DNbfLwyR.js');
4
3
  const require_plugins_CompilerPlugin = require('../plugins/CompilerPlugin.js');
5
4
  const require_utils_constants = require('../utils/constants.js');
6
5
  const require_utils_types_package = require('../utils/types-package.js');
6
+ const require_app_router_CommandsRouter = require('../app/router/CommandsRouter.js');
7
+ require('../app/router/index.js');
7
8
  const require_cli_common = require('./common.js');
8
9
  let node_fs = require("node:fs");
9
10
  let node_path = require("node:path");
10
- let node_fs_promises = require("node:fs/promises");
11
11
 
12
12
  //#region src/cli/init.ts
13
13
  /**
@@ -26,17 +26,41 @@ async function bootstrapCommandkitCLI(argv, options) {
26
26
  const { setCLIEnv } = await Promise.resolve().then(() => require("./env.js"));
27
27
  const program = new Command("commandkit");
28
28
  program.command("dev").version(version).description("Start your bot in development mode.").option("-c, --config [path]", "Path to your commandkit config file.", "./commandkit.js").action(() => {
29
- bootstrapDevelopmentServer(program.opts().config);
29
+ const options = program.opts();
30
+ bootstrapDevelopmentServer(options.config);
30
31
  });
31
32
  program.command("info").description("Show information about the system which can be used to report bugs.").action(async () => {
32
33
  await showInformation();
33
34
  });
34
35
  program.command("start").description("Start your bot in production mode after running the build command.").option("-c, --config [path]", "Path to your commandkit config file.").action(() => {
35
- bootstrapProductionServer(program.opts().config);
36
+ const options = program.opts();
37
+ bootstrapProductionServer(options.config);
36
38
  });
37
39
  program.command("build").description("Build your project for production usage.").option("-c, --config [path]", "Path to your commandkit config file.").action(() => {
38
40
  setCLIEnv();
39
- return createProductionBuild(program.opts().config);
41
+ const options = program.opts();
42
+ return createProductionBuild(options.config);
43
+ });
44
+ program.command("typegen").description("Generate command type declarations for this project.").option("-c, --config [path]", "Path to your commandkit config file.").action(async () => {
45
+ setCLIEnv();
46
+ const cwd = program.opts().config || require_utils_constants.COMMANDKIT_CWD;
47
+ await require_utils_types_package.generateTypesPackage(true);
48
+ const commandsEntrypoint = resolveCommandsEntrypoint(cwd);
49
+ if (!commandsEntrypoint) {
50
+ await require_utils_types_package.rewriteCommandDeclaration([]);
51
+ return;
52
+ }
53
+ const router = new require_app_router_CommandsRouter.CommandsRouter({ entrypoint: commandsEntrypoint });
54
+ if (!router.isValidPath()) {
55
+ await require_utils_types_package.rewriteCommandDeclaration([]);
56
+ return;
57
+ }
58
+ const result = await router.scan();
59
+ const commandNames = Object.values(result.commands).map((cmd) => cmd.name);
60
+ const routeNames = Object.keys(result.compiledRoutes ?? {});
61
+ const names = Array.from(/* @__PURE__ */ new Set([...commandNames, ...routeNames])).sort();
62
+ if (!(0, node_fs.existsSync)((0, node_path.join)(cwd, "commandkit-env.d.ts"))) await require_utils_types_package.generateTypesPackage(true);
63
+ await require_utils_types_package.rewriteCommandDeclaration(names);
40
64
  });
41
65
  program.command("create").description("Create new files using built-in templates or custom plugin templates").argument("<template>", "The template to use (e.g. command, event, or custom plugin template)").argument("[args...]", "Additional arguments for the template").action(async (template, args) => {
42
66
  setCLIEnv();
@@ -58,7 +82,7 @@ async function bootstrapCommandkitCLI(argv, options) {
58
82
  await generateEvent(name);
59
83
  return;
60
84
  }
61
- require_cli_common.panic(`Template "${template}" not found. Available templates: ${Array.from(new Set([
85
+ require_cli_common.panic(`Template "${template}" not found. Available templates: ${Array.from(/* @__PURE__ */ new Set([
62
86
  "command",
63
87
  "event",
64
88
  ...Array.from(runtime.getTemplates().keys())
@@ -71,13 +95,14 @@ async function bootstrapCommandkitCLI(argv, options) {
71
95
  await runtime.destroy();
72
96
  }
73
97
  });
74
- const types = (0, node_path.join)(require_utils_constants.COMMANDKIT_CWD, "node_modules", "commandkit-types");
75
- if (!(0, node_fs.existsSync)(types)) {
76
- await (0, node_fs_promises.mkdir)(types, { recursive: true }).catch(() => {});
77
- await require_utils_types_package.generateTypesPackage(true).catch(() => {});
78
- }
98
+ if (!(0, node_fs.existsSync)(require_utils_types_package.getTypesFilePath())) await require_utils_types_package.generateTypesPackage(true).catch(() => {});
79
99
  await program.parseAsync(argv, options);
80
100
  }
101
+ function resolveCommandsEntrypoint(cwd) {
102
+ const sourceLikeRoots = [(0, node_path.join)(cwd, "src", "app", "commands"), (0, node_path.join)(cwd, "app", "commands")];
103
+ for (const candidate of sourceLikeRoots) if ((0, node_fs.existsSync)(candidate)) return candidate;
104
+ return null;
105
+ }
81
106
 
82
107
  //#endregion
83
108
  exports.bootstrapCommandkitCLI = bootstrapCommandkitCLI;
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","names":[],"sources":["../../src/cli/init.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { generateTypesPackage } from '../utils/types-package';\nimport { loadConfigFile } from '../config/loader';\nimport {\n CompilerPlugin,\n CompilerPluginRuntime,\n isCompilerPlugin,\n} from '../plugins';\nimport { panic } from './common';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * Creates a command line interface for CommandKit.\n * @param argv The arguments passed to the CLI.\n * @param options The options passed to the CLI.\n */\nexport async function bootstrapCommandkitCLI(\n argv: string[],\n options?: import('commander').ParseOptions | undefined,\n) {\n process.title = 'CommandKit CLI';\n\n // imports are lazily loaded when the cli is used, instead of loading it with the lib itself\n const { Command } = await import('commander');\n const { bootstrapDevelopmentServer } = await import('./development');\n const { bootstrapProductionServer, createProductionBuild } =\n await import('./production');\n const { generateCommand, generateEvent } = await import('./generators');\n const { version } = await import('../version');\n const { showInformation } = await import('./information');\n const { setCLIEnv } = await import('./env');\n\n const program = new Command('commandkit');\n\n program\n .command('dev')\n .version(version)\n .description('Start your bot in development mode.')\n .option(\n '-c, --config [path]',\n 'Path to your commandkit config file.',\n './commandkit.js',\n )\n .action(() => {\n const options = program.opts();\n bootstrapDevelopmentServer(options.config);\n });\n\n program\n .command('info')\n .description(\n 'Show information about the system which can be used to report bugs.',\n )\n .action(async () => {\n await showInformation();\n });\n\n program\n .command('start')\n .description(\n 'Start your bot in production mode after running the build command.',\n )\n .option('-c, --config [path]', 'Path to your commandkit config file.')\n .action(() => {\n const options = program.opts();\n bootstrapProductionServer(options.config);\n });\n\n program\n .command('build')\n .description('Build your project for production usage.')\n .option('-c, --config [path]', 'Path to your commandkit config file.')\n .action(() => {\n setCLIEnv();\n const options = program.opts();\n return createProductionBuild(options.config);\n });\n\n program\n .command('create')\n .description(\n 'Create new files using built-in templates or custom plugin templates',\n )\n .argument(\n '<template>',\n 'The template to use (e.g. command, event, or custom plugin template)',\n )\n .argument('[args...]', 'Additional arguments for the template')\n .action(async (template, args) => {\n setCLIEnv();\n\n // Handle custom plugin templates\n const { plugins } = await loadConfigFile();\n const runtime = new CompilerPluginRuntime(\n plugins.filter((p) => isCompilerPlugin(p)) as CompilerPlugin[],\n true,\n );\n\n try {\n await runtime.init();\n const templateHandler = runtime.getTemplate(template);\n\n if (!templateHandler) {\n // Handle built-in templates\n if (template === 'command') {\n const [name] = args;\n if (!name) {\n panic('Command name is required');\n }\n await generateCommand(name);\n return;\n }\n\n if (template === 'event') {\n const [name] = args;\n if (!name) {\n panic('Event name is required');\n }\n await generateEvent(name);\n return;\n }\n\n const valid = Array.from(\n new Set([\n 'command',\n 'event',\n ...Array.from(runtime.getTemplates().keys()),\n ]),\n ).map((t) => `\"${t}\"`);\n\n panic(\n `Template \"${template}\" not found. Available templates: ${valid.join(', ')}`,\n );\n }\n\n await templateHandler(args);\n } catch (e: any) {\n panic(`Failed to execute template \"${template}\": ${e?.message || e}`);\n } finally {\n await runtime.destroy();\n }\n });\n\n const types = join(COMMANDKIT_CWD, 'node_modules', 'commandkit-types');\n\n if (!existsSync(types)) {\n await mkdir(types, { recursive: true }).catch(() => {});\n await generateTypesPackage(true).catch(() => {});\n }\n\n await program.parseAsync(argv, options);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,eAAsB,uBACtB,MACA,SACA;AACE,SAAQ,QAAQ;CAGhB,MAAM,EAAE,YAAY,MAAM,OAAO;CACjC,MAAM,EAAE,+BAA+B,2CAAM;CAC7C,MAAM,EAAE,2BAA2B,0BACnC,2CAAE;CACF,MAAM,EAAE,iBAAiB,kBAAkB,2CAAM;CACjD,MAAM,EAAE,YAAY,2CAAM;CAC1B,MAAM,EAAE,oBAAoB,2CAAM;CAClC,MAAM,EAAE,cAAc,2CAAM;CAE5B,MAAM,UAAU,IAAI,QAAQ,aAAa;AAEzC,SACA,QAAG,MAAS,CACZ,QAAG,QAAQ,CACX,YAAG,sCAA+C,CAClD,OACE,uBACA,wCACA,kBACD,CACD,aAAa;AAEX,6BADgB,QAAE,MAAY,CACD,OAAQ;GACrC;AAEF,SACA,QAAG,OAAS,CACZ,YACE,sEACD,CACD,OAAG,YAAgB;AACjB,QAAE,iBAAqB;GACvB;AAEF,SACA,QAAG,QAAS,CACZ,YACE,qEACD,CACD,OAAG,uBAA2B,uCAAuC,CACrE,aAAa;AAEX,4BADgB,QAAE,MAAY,CACF,OAAQ;GACpC;AAEF,SACA,QAAG,QAAS,CACZ,YAAG,2CAAoD,CACvD,OAAG,uBAA2B,uCAAuC,CACrE,aAAa;AACX,aAAW;AAEX,SAAE,sBADc,QAAE,MAAY,CACC,OAAQ;GACvC;AAEF,SACA,QAAG,SAAS,CACZ,YACE,uEACD,CACD,SACE,cACA,uEACD,CACD,SAAG,aAAmB,wCAAiC,CACvD,OAAG,OAAO,UAAO,SAAgB;AAC/B,aAAW;EAGX,MAAE,EAAM,YAAY,MAAE,mCAAoB;EAC1C,MAAE,UAAc,IAAE,yCAChB,QAAE,QAAc,MAAM,gDAAE,EAAiB,CAAC,EAC1C,KACD;AAED,MAAE;AACA,SAAE,QAAM,MAAY;GACpB,MAAE,kBAAsB,QAAE,YAAQ,SAAY;AAE9C,OAAI,CAAC,iBAAiB;AAEpB,QAAI,aAAa,WAAW;KAC1B,MAAE,CAAK,QAAQ;AACf,SAAI,CAAC,KACH,0BAAE,2BAA+B;AAEnC,WAAE,gBAAM,KAAgB;AACxB;;AAGF,QAAI,aAAa,SAAS;KACxB,MAAE,CAAK,QAAQ;AACf,SAAI,CAAC,KACH,0BAAE,yBAA6B;AAEjC,WAAE,cAAM,KAAc;AACtB;;AAWF,6BACE,aAAa,SAAE,oCATH,MAAE,KACd,IAAE,IAAI;KACN;KACA;KACA,GAAG,MAAI,KAAM,QAAK,cAAQ,CAAA,MAAe,CAAA;KAAI,CAC5C,CACF,CAAC,KAAK,MAAM,IAAI,EAAE,GAAG,CAGwC,KAAM,KAAQ,GAC3E;;AAGH,SAAE,gBAAM,KAAgB;WACjB,GAAQ;AACf,4BAAE,+BAAmC,SAAE,4CAAY,EAAG,YAAW,IAAI;YACnE;AACF,SAAE,QAAM,SAAe;;GAEzB;CAEF,MAAM,4BAAa,wCAAgB,gBAAgB,mBAAmB;AAEtE,KAAI,yBAAY,MAAM,EAAE;AACtB,oCAAY,OAAO,EAAE,WAAW,MAAM,CAAC,CAAC,YAAY,GAAG;AACvD,QAAM,iDAAqB,KAAK,CAAC,YAAY,GAAG;;AAGlD,OAAM,QAAQ,WAAW,MAAM,QAAQ"}
1
+ {"version":3,"file":"init.js","names":[],"sources":[],"mappings":""}
@@ -1,11 +1,9 @@
1
- import * as node_child_process0 from "node:child_process";
2
-
3
1
  //#region src/cli/production.d.ts
4
2
  /**
5
3
  * @private
6
4
  * @internal
7
5
  */
8
- declare function bootstrapProductionServer(configPath?: string): Promise<node_child_process0.ChildProcess>;
6
+ declare function bootstrapProductionServer(configPath?: string): Promise<import("node:child_process").ChildProcess>;
9
7
  /**
10
8
  * @private
11
9
  * @internal
@@ -1,6 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
3
- const require_commandkit = require('../commandkit-Bh7C1_c7.js');
2
+ const require_commandkit = require('../commandkit-DNbfLwyR.js');
4
3
  const require_plugins_CompilerPlugin = require('../plugins/CompilerPlugin.js');
5
4
  const require_utils_constants = require('../utils/constants.js');
6
5
  const require_cli_common = require('./common.js');
@@ -17,9 +16,10 @@ let fs = require("fs");
17
16
  async function bootstrapProductionServer(configPath) {
18
17
  process.env.COMMANDKIT_BOOTSTRAP_MODE = "production";
19
18
  const cwd = configPath || require_utils_constants.COMMANDKIT_CWD;
20
- const mainFile = require_cli_common.findEntrypoint((await require_commandkit.loadConfigFile(cwd)).distDir);
19
+ const config = await require_commandkit.loadConfigFile(cwd);
20
+ const mainFile = require_cli_common.findEntrypoint(config.distDir);
21
21
  if (!(0, fs.existsSync)(mainFile)) require_cli_common.panic(`Could not locate the entrypoint. Did you forget to build the application? Run 'commandkit build' to build the application first.`);
22
- return require_cli_app_process.createAppProcess(mainFile, cwd, false);
22
+ return require_cli_app_process.createAppProcess(mainFile, cwd, false, config);
23
23
  }
24
24
  /**
25
25
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"production.js","names":[],"sources":["../../src/cli/production.ts"],"sourcesContent":["import { loadConfigFile } from '../config/loader';\nimport { createAppProcess } from './app-process';\nimport { existsSync } from 'fs';\nimport { findEntrypoint, panic } from './common';\nimport { buildApplication } from './build';\nimport { CompilerPlugin, isCompilerPlugin } from '../plugins';\nimport { createSpinner } from './utils';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapProductionServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n const mainFile = findEntrypoint(config.distDir);\n\n if (!existsSync(mainFile)) {\n panic(\n `Could not locate the entrypoint. Did you forget to build the application? Run 'commandkit build' to build the application first.`,\n );\n }\n\n return createAppProcess(mainFile, cwd, false);\n}\n\n/**\n * @private\n * @internal\n */\nexport async function createProductionBuild(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n process.env.COMMANDKIT_INTERNAL_IS_CLI_PROCESS = 'true';\n process.env.COMMANDKIT_IS_BUILD ??= 'true';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n\n const spinner = await createSpinner(\n 'Creating an optimized production build\\n',\n );\n\n spinner.start();\n\n await buildApplication({\n configPath: cwd,\n isDev: false,\n plugins: config.plugins.filter((p) =>\n isCompilerPlugin(p),\n ) as CompilerPlugin[],\n rolldownPlugins: config.rolldownPlugins,\n });\n\n spinner.succeed('Production build completed!');\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAaA,eAAsB,0BAA0B,YAAqB;AACnE,SAAQ,IAAI,4BAA4B;CACxC,MAAM,MAAM,cAAc;CAE1B,MAAM,WAAW,mCADF,MAAM,kCAAe,IAAI,EACD,QAAQ;AAE/C,KAAI,oBAAY,SAAS,CACvB,0BACE,mIACD;AAGH,QAAO,yCAAiB,UAAU,KAAK,MAAM;;;;;;AAO/C,eAAsB,sBAAsB,YAAqB;AAC/D,SAAQ,IAAI,4BAA4B;AACxC,SAAQ,IAAI,qCAAqC;AACjD,SAAQ,IAAI,wBAAwB;CACpC,MAAM,MAAM,cAAc;CAC1B,MAAM,SAAS,MAAM,kCAAe,IAAI;CAExC,MAAM,UAAU,MAAM,gCACpB,2CACD;AAED,SAAQ,OAAO;AAEf,OAAM,mCAAiB;EACrB,YAAY;EACZ,OAAO;EACP,SAAS,OAAO,QAAQ,QAAQ,MAChC,gDAAE,EAAiB,CAClB;EACD,iBAAiB,OAAO;EACzB,CAAC;AAEF,SAAQ,QAAQ,8BAA8B"}
1
+ {"version":3,"file":"production.js","names":[],"sources":[],"mappings":""}
@@ -1,5 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('../chunk-BE-pF4vm.js');
3
2
  const require_utils_colors = require('../utils/colors.js');
4
3
  const require_cli_common = require('./common.js');
5
4
  let node_fs = require("node:fs");
@@ -1 +1 @@
1
- {"version":3,"file":"type-checker.js","names":[],"sources":["../../src/cli/type-checker.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { loadTypeScript } from './common';\nimport { join, relative } from 'node:path';\nimport colors from '../utils/colors';\n\nconst TS_NOT_FOUND_ERR = `TypeScript must be installed in order to use the type checker. Please install it using \\`npm install typescript\\` or \\`yarn add typescript\\``;\n\n/**\n * Formats a TypeScript diagnostic message in a pretty, readable format\n * @private\n * @internal\n */\nfunction formatDiagnostic(\n ts: typeof import('typescript'),\n diagnostic: import('typescript').Diagnostic,\n cwd: string,\n): string {\n const messageText = ts.flattenDiagnosticMessageText(\n diagnostic.messageText,\n '\\n',\n );\n\n if (!diagnostic.file) {\n return `${colors.red('error')}: ${messageText}`;\n }\n\n const { line, character } = ts.getLineAndCharacterOfPosition(\n diagnostic.file,\n diagnostic.start!,\n );\n const fileName = relative(cwd, diagnostic.file.fileName);\n const position = `${line + 1}:${character + 1}`;\n const errorCode = diagnostic.code ? `TS${diagnostic.code}` : '';\n\n // Format the error message nicely\n return [\n `${colors.bold(colors.cyan(fileName))}:${colors.bold(colors.yellow(position))} - ${colors.red('error')} ${colors.gray(errorCode)}`,\n `${messageText}`,\n ].join('\\n');\n}\n\n/**\n * Performs a type check on the project using TypeScript.\n * @param path The project root or cwd\n * @private\n * @internal\n */\nexport async function performTypeCheck(path: string) {\n const tsconfigPath = join(path, 'tsconfig.json');\n\n if (!existsSync(tsconfigPath)) return;\n\n const ts = await loadTypeScript(TS_NOT_FOUND_ERR);\n\n // Format host for error reporting\n const formatHost = {\n getCanonicalFileName: (path: string) => path,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getNewLine: () => ts.sys.newLine,\n };\n\n // Read tsconfig.json\n const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);\n\n if (configFile.error) {\n console.error(\n colors.red(\n `Error reading tsconfig.json: ${ts.formatDiagnostic(configFile.error, formatHost)}`,\n ),\n );\n process.exit(1);\n }\n\n // Parse the config file\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n path,\n );\n\n // Force noEmit to true as we only want type checking\n parsedConfig.options.noEmit = true;\n\n // Create a program\n const program = ts.createProgram({\n rootNames: parsedConfig.fileNames,\n options: parsedConfig.options,\n projectReferences: parsedConfig.projectReferences,\n });\n\n // Get the diagnostics\n const diagnostics = [\n ...program.getOptionsDiagnostics(),\n ...program.getGlobalDiagnostics(),\n ...program.getSyntacticDiagnostics(),\n ...program.getSemanticDiagnostics(),\n ];\n\n // Report any errors\n if (diagnostics.length > 0) {\n console.log('');\n console.error(\n colors.bold(\n colors.red('Type checking failed with the following errors:'),\n ),\n );\n console.log('');\n\n // Group diagnostics by file for better readability\n const byFile = new Map<string, import('typescript').Diagnostic[]>();\n\n for (const diagnostic of diagnostics) {\n const fileName = diagnostic.file ? diagnostic.file.fileName : 'Global';\n if (!byFile.has(fileName)) {\n byFile.set(fileName, []);\n }\n byFile.get(fileName)!.push(diagnostic);\n }\n\n // Pretty-print each diagnostic\n const totalErrors = diagnostics.length;\n let counter = 0;\n\n for (const [_, fileDiags] of byFile) {\n for (const diagnostic of fileDiags) {\n counter++;\n console.log(formatDiagnostic(ts, diagnostic, path));\n // Add separator between errors for better readability, except for the last one\n if (counter < totalErrors) {\n console.log('');\n }\n }\n }\n\n console.log('');\n console.error(\n colors.bold(\n colors.red(`Found ${totalErrors} error${totalErrors > 1 ? 's' : ''}`),\n ),\n );\n console.log('');\n\n process.exit(1);\n }\n\n console.log(colors.green('✓ Type checking completed successfully.'));\n}\n"],"mappings":";;;;;;;;AAKA,MAAM,mBAAmB;;;;;;AAOzB,SAAS,iBACT,IACA,YACA,KACS;CACP,MAAM,cAAc,GAAG,6BACrB,WAAW,aACX,KACD;AAED,KAAI,CAAC,WAAW,KACd,QAAO,GAAG,6BAAO,IAAI,QAAQ,CAAC,IAAI;CAGpC,MAAM,EAAE,MAAM,cAAc,GAAG,8BAC7B,WAAW,MACX,WAAW,MACZ;CACD,MAAM,mCAAoB,KAAK,WAAW,KAAK,SAAS;CACxD,MAAM,WAAW,GAAG,OAAO,EAAE,GAAG,YAAY;CAC5C,MAAM,YAAY,WAAW,OAAO,KAAK,WAAW,SAAS;AAG7D,QAAO,CACP,GAAG,6BAAE,KAAO,6BAAK,KAAO,SAAK,CAAQ,CAAC,GAAG,6BAAE,KAAO,6BAAK,OAAO,SAAO,CAAQ,CAAC,KAAK,6BAAE,IAAO,QAAU,CAAC,GAAG,6BAAE,KAAO,UAAK,IACxH,GAAG,cAAc,CACjB,KAAE,KAAQ;;;;;;;;AASZ,eAAsB,iBAAiB,MAAc;CACnD,MAAM,mCAAoB,MAAM,gBAAgB;AAEhD,KAAI,yBAAY,aAAa,CAAE;CAE/B,MAAM,KAAK,MAAM,kCAAe,iBAAiB;CAGjD,MAAM,aAAa;EACjB,uBAAuB,SAAiB;EACxC,qBAAqB,GAAG,IAAI;EAC5B,kBAAkB,GAAG,IAAI;EAC1B;CAGD,MAAM,aAAa,GAAG,eAAe,cAAc,GAAG,IAAI,SAAS;AAEnE,KAAI,WAAW,OAAO;AACpB,UAAQ,MACN,6BAAO,IACL,gCAAgC,GAAG,iBAAiB,WAAW,OAAO,WAAW,GAClF,CACF;AACD,UAAQ,KAAK,EAAE;;CAIjB,MAAM,eAAe,GAAG,2BACtB,WAAW,QACX,GAAG,KACH,KACD;AAGD,cAAa,QAAQ,SAAS;CAG9B,MAAM,UAAU,GAAG,cAAc;EAC/B,WAAW,aAAa;EACxB,SAAS,aAAa;EACtB,mBAAmB,aAAa;EACjC,CAAC;CAGF,MAAM,cAAc;EACpB,GAAG,QAAE,uBAA6B;EAClC,GAAG,QAAE,sBAA4B;EACjC,GAAG,QAAE,yBAA+B;EACpC,GAAG,QAAE,wBAA8B;EAAC;AAIpC,KAAI,YAAY,SAAS,GAAG;AAC1B,UAAQ,IAAI,GAAG;AACf,UAAQ,MACN,6BAAO,KACL,6BAAO,IAAI,kDAAkD,CAC9D,CACF;AACD,UAAQ,IAAI,GAAG;EAGf,MAAM,yBAAS,IAAI,KAAgD;AAEnE,OAAK,MAAM,cAAc,aAAa;GACpC,MAAM,WAAW,WAAW,OAAO,WAAW,KAAK,WAAW;AAC9D,OAAI,CAAC,OAAO,IAAI,SAAS,CACvB,QAAO,IAAI,UAAU,EAAE,CAAC;AAE1B,UAAO,IAAI,SAAS,CAAE,KAAK,WAAW;;EAIxC,MAAM,cAAc,YAAY;EAChC,IAAI,UAAU;AAEd,OAAK,MAAM,CAAC,GAAG,cAAc,OAC3B,MAAK,MAAM,cAAc,WAAW;AAClC;AACA,WAAQ,IAAI,iBAAiB,IAAI,YAAY,KAAK,CAAC;AAEnD,OAAI,UAAU,YACZ,SAAQ,IAAI,GAAG;;AAKrB,UAAQ,IAAI,GAAG;AACf,UAAQ,MACN,6BAAO,KACL,6BAAO,IAAI,SAAS,YAAY,QAAQ,cAAc,IAAI,MAAM,KAAK,CACtE,CACF;AACD,UAAQ,IAAI,GAAG;AAEf,UAAQ,KAAK,EAAE;;AAGjB,SAAQ,IAAI,6BAAO,MAAM,0CAA0C,CAAC"}
1
+ {"version":3,"file":"type-checker.js","names":[],"sources":[],"mappings":""}
@@ -1,5 +1,4 @@
1
1
  import { Ora } from "ora";
2
-
3
2
  //#region src/cli/utils.d.ts
4
3
  /**
5
4
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../src/cli/utils.ts"],"sourcesContent":["import type { Ora } from 'ora';\n\nlet ora: typeof import('ora') | undefined;\n\n/**\n * @private\n * @internal\n */\nexport async function createSpinner(text: string): Promise<Ora> {\n if (!ora) {\n ora = await import('ora');\n }\n\n return (ora.default || ora)({\n text,\n color: 'cyan',\n });\n}\n"],"mappings":";;;AAEA,IAAI;;;;;AAMJ,eAAsB,cAAc,MAA4B;AAC9D,KAAI,CAAC,IACH,OAAM,MAAM,OAAO;AAGrB,SAAQ,IAAI,WAAW,KAAK;EAC1B;EACA,OAAO;EACR,CAAC"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":[],"mappings":""}