commandkit 1.2.0-rc.1 → 1.2.0-rc.10

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 (252) hide show
  1. package/README.md +4 -12
  2. package/dist/{ActionRow-CmTHbo2t.js → ActionRow-CbdGFWMT.js} +3 -2
  3. package/dist/{ActionRow-CmTHbo2t.js.map → ActionRow-CbdGFWMT.js.map} +1 -1
  4. package/dist/{CommandKitEventsChannel-Bgw0XCOl.js → CommandKitEventsChannel-BtRzr3Tz.js} +3 -2
  5. package/dist/{CommandKitEventsChannel-Bgw0XCOl.js.map → CommandKitEventsChannel-BtRzr3Tz.js.map} +1 -1
  6. package/dist/{CommandsRouter-Ci1Pe8Vd.js → CommandsRouter-Dmzw-ikm.js} +18 -13
  7. package/dist/{CommandsRouter-Ci1Pe8Vd.js.map → CommandsRouter-Dmzw-ikm.js.map} +1 -1
  8. package/dist/{CompilerPlugin-CjoZAAR8.js → CompilerPlugin-M8r3yNAl.js} +2 -2
  9. package/dist/{CompilerPlugin-CjoZAAR8.js.map → CompilerPlugin-M8r3yNAl.js.map} +1 -1
  10. package/dist/{DefaultLogger-Cy55-uPl.d.ts → DefaultLogger-XCOl5nLd.d.ts} +19 -12
  11. package/dist/{EventInterceptor-CQ4PBpBJ.js → EventInterceptor-CQEXyUTp.js} +3 -5
  12. package/dist/{EventInterceptor-CQ4PBpBJ.js.map → EventInterceptor-CQEXyUTp.js.map} +1 -1
  13. package/dist/{EventWorkerContext-DJUi1W3T.d.ts → EventWorkerContext-DNWfsE1t.d.ts} +2 -2
  14. package/dist/{EventWorkerContext-CSlD9rbx.js → EventWorkerContext-Dq29tieI.js} +3 -2
  15. package/dist/{EventWorkerContext-CSlD9rbx.js.map → EventWorkerContext-Dq29tieI.js.map} +1 -1
  16. package/dist/{EventsRouter-C_J0M3uO.js → EventsRouter-3Gygh-km.js} +9 -5
  17. package/dist/{EventsRouter-C_J0M3uO.js.map → EventsRouter-3Gygh-km.js.map} +1 -1
  18. package/dist/ILogger-BW8GM-YZ.d.ts +64 -0
  19. package/dist/{Logger-iSjA-DWN.d.ts → Logger-DyfkPk7u.d.ts} +2 -2
  20. package/dist/{MessageCommandParser-ROLibZPX.d.ts → MessageCommandParser-BsGMOTDo.d.ts} +3 -3
  21. package/dist/{MessageCommandParser-B_BEQ3p8.js → MessageCommandParser-Dl0xxtdr.js} +9 -4
  22. package/dist/MessageCommandParser-Dl0xxtdr.js.map +1 -0
  23. package/dist/{PluginCommon-Di1xIa8d.js → PluginCommon-Cvl5yYM_.js} +3 -2
  24. package/dist/{PluginCommon-Di1xIa8d.js.map → PluginCommon-Cvl5yYM_.js.map} +1 -1
  25. package/dist/{RuntimePlugin-CBgBLXTG.js → RuntimePlugin-BUecuBIU.js} +3 -2
  26. package/dist/RuntimePlugin-BUecuBIU.js.map +1 -0
  27. package/dist/analytics/analytics-engine.d.ts +6 -6
  28. package/dist/analytics/analytics-engine.js +29 -28
  29. package/dist/analytics/analytics-provider.d.ts +6 -6
  30. package/dist/analytics/constants.js +1 -1
  31. package/dist/analytics/utils.js +29 -28
  32. package/dist/{analytics-engine-vA4MaJYx.d.ts → analytics-engine-jVeSoxEk.d.ts} +113 -32
  33. package/dist/app/commands/AppCommandRunner.d.ts +6 -6
  34. package/dist/app/commands/AppCommandRunner.js +29 -28
  35. package/dist/app/commands/Context.d.ts +6 -6
  36. package/dist/app/commands/Context.js +29 -28
  37. package/dist/app/commands/MessageCommandParser.d.ts +1 -1
  38. package/dist/app/commands/MessageCommandParser.js +2 -2
  39. package/dist/app/commands/helpers.js +1 -1
  40. package/dist/app/events/EventWorkerContext.d.ts +7 -7
  41. package/dist/app/events/EventWorkerContext.js +1 -1
  42. package/dist/app/handlers/AppCommandHandler.d.ts +6 -6
  43. package/dist/app/handlers/AppCommandHandler.js +29 -28
  44. package/dist/app/handlers/AppEventsHandler.d.ts +6 -6
  45. package/dist/app/handlers/AppEventsHandler.js +29 -28
  46. package/dist/app/index.d.ts +7 -7
  47. package/dist/app/index.js +31 -31
  48. package/dist/app/interrupt/signals.d.ts +2 -2
  49. package/dist/app/interrupt/signals.js +5 -5
  50. package/dist/app/middlewares/permissions.d.ts +42 -0
  51. package/dist/app/middlewares/permissions.js +39 -0
  52. package/dist/app/register/CommandRegistrar.d.ts +6 -6
  53. package/dist/app/register/CommandRegistrar.js +29 -28
  54. package/dist/app/router/CommandsRouter.js +1 -1
  55. package/dist/app/router/EventsRouter.js +1 -1
  56. package/dist/app/router/index.d.ts +1 -1
  57. package/dist/app/router/index.js +3 -3
  58. package/dist/{app-process-CjMovpoZ.js → app-process-cj2vF12T.js} +8 -5
  59. package/dist/{app-process-CjMovpoZ.js.map → app-process-cj2vF12T.js.map} +1 -1
  60. package/dist/{build-DXl8uEv4.js → build-DB_aX5xt.js} +18 -14
  61. package/dist/build-DB_aX5xt.js.map +1 -0
  62. package/dist/cli/app-process.js +4 -4
  63. package/dist/cli/build.d.ts +6 -6
  64. package/dist/cli/build.js +31 -30
  65. package/dist/cli/common.d.ts +13 -7
  66. package/dist/cli/common.js +4 -3
  67. package/dist/cli/development.js +45 -44
  68. package/dist/cli/development.js.map +1 -1
  69. package/dist/cli/generators.js +42 -11
  70. package/dist/cli/generators.js.map +1 -1
  71. package/dist/cli/information.js +14 -19
  72. package/dist/cli/information.js.map +1 -1
  73. package/dist/cli/init.js +30 -29
  74. package/dist/cli/production.js +34 -32
  75. package/dist/cli/production.js.map +1 -1
  76. package/dist/cli/type-checker.js +4 -4
  77. package/dist/{colors-Cd4Oz-r-.js → colors-DL3ucTiT.js} +3 -2
  78. package/dist/{colors-Cd4Oz-r-.js.map → colors-DL3ucTiT.js.map} +1 -1
  79. package/dist/{commandkit-DMEW0kJg.js → commandkit-lhbfAyX9.js} +523 -353
  80. package/dist/commandkit-lhbfAyX9.js.map +1 -0
  81. package/dist/commandkit.d.ts +6 -6
  82. package/dist/commandkit.js +29 -28
  83. package/dist/{common-DNADUU3_.js → common-CrqwC-sx.js} +33 -18
  84. package/dist/common-CrqwC-sx.js.map +1 -0
  85. package/dist/common-vnMIelAE.js.map +1 -1
  86. package/dist/components/common/EventInterceptor.js +1 -1
  87. package/dist/components/index.d.ts +2 -2
  88. package/dist/components/index.js +29 -28
  89. package/dist/components/v1/action-row/ActionRow.js +1 -1
  90. package/dist/components/v1/button/Button.js +29 -28
  91. package/dist/components/v1/button/ButtonKit.js +29 -28
  92. package/dist/components/v1/modal/Modal.js +29 -28
  93. package/dist/components/v1/modal/ModalKit.js +29 -28
  94. package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +29 -28
  95. package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +29 -28
  96. package/dist/components/v1/select-menu/RoleSelectMenuKit.js +29 -28
  97. package/dist/components/v1/select-menu/SelectMenu.js +29 -28
  98. package/dist/components/v1/select-menu/StringSelectMenuKit.js +29 -28
  99. package/dist/components/v1/select-menu/UserSelectMenuKit.js +29 -28
  100. package/dist/components/v2/container.js +1 -1
  101. package/dist/components/v2/file.js +1 -1
  102. package/dist/components/v2/index.d.ts +1 -1
  103. package/dist/components/v2/index.js +6 -6
  104. package/dist/components/v2/media-gallery.js +1 -1
  105. package/dist/components/v2/section.js +1 -1
  106. package/dist/components/v2/separator.js +1 -1
  107. package/dist/components/v2/text-display.js +1 -1
  108. package/dist/config/config.d.ts +7 -7
  109. package/dist/config/config.js +29 -28
  110. package/dist/config/default.d.ts +6 -6
  111. package/dist/config/default.js +29 -28
  112. package/dist/config/loader.d.ts +6 -6
  113. package/dist/config/loader.js +29 -28
  114. package/dist/config/types.d.ts +6 -6
  115. package/dist/config/utils.d.ts +6 -6
  116. package/dist/config/utils.js +1 -1
  117. package/dist/{config-CcWJ-vz5.d.ts → config-YAQdMBqh.d.ts} +2 -2
  118. package/dist/constants-4oxxvaJA.js.map +1 -1
  119. package/dist/constants-B5_Ta7PR.js.map +1 -1
  120. package/dist/{constants-CUND8XkG.js → constants-BOOGN85p.js} +3 -2
  121. package/dist/{constants-CUND8XkG.js.map → constants-BOOGN85p.js.map} +1 -1
  122. package/dist/{constants-DrjIvQd6.d.ts → constants-D8PMA9on.d.ts} +1 -1
  123. package/dist/{container-z621KfH5.js → container-C6GtfAPW.js} +3 -2
  124. package/dist/{container-z621KfH5.js.map → container-C6GtfAPW.js.map} +1 -1
  125. package/dist/context/async-context.d.ts +7 -7
  126. package/dist/context/async-context.js +31 -29
  127. package/dist/context/environment.d.ts +6 -6
  128. package/dist/context/environment.js +29 -28
  129. package/dist/{dotprops-C_4L7RPD.js → dotprops-tnhpnszJ.js} +2 -2
  130. package/dist/{dotprops-C_4L7RPD.js.map → dotprops-tnhpnszJ.js.map} +1 -1
  131. package/dist/element-Bak9llw_.js.map +1 -1
  132. package/dist/env-_68PRRoA.js.map +1 -1
  133. package/dist/error-codes-B4TyW4Ct.d.ts +54 -0
  134. package/dist/{error-codes-C-ViHyu-.js → error-codes-Ds0bnPvT.js} +2 -2
  135. package/dist/error-codes-Ds0bnPvT.js.map +1 -0
  136. package/dist/events/CommandKitEventsChannel.d.ts +6 -6
  137. package/dist/events/CommandKitEventsChannel.js +1 -1
  138. package/dist/{feature-flags-Cxl9JtVG.js → feature-flags-DnnKABHf.js} +11 -16
  139. package/dist/{feature-flags-Cxl9JtVG.js.map → feature-flags-DnnKABHf.js.map} +1 -1
  140. package/dist/{file-DVZC0QXI.js → file-DVOELoNv.js} +3 -2
  141. package/dist/{file-DVZC0QXI.js.map → file-DVOELoNv.js.map} +1 -1
  142. package/dist/flags/FlagProvider.d.ts +6 -6
  143. package/dist/flags/FlagProvider.js.map +1 -1
  144. package/dist/flags/feature-flags.d.ts +6 -6
  145. package/dist/flags/feature-flags.js +30 -29
  146. package/dist/flags/store.d.ts +6 -6
  147. package/dist/flags/store.js +1 -1
  148. package/dist/{helpers-BUlN3lIz.js → helpers-Dl8wW6aO.js} +3 -2
  149. package/dist/{helpers-BUlN3lIz.js.map → helpers-Dl8wW6aO.js.map} +1 -1
  150. package/dist/index-CUPkUUOR.d.ts +1 -0
  151. package/dist/index-Dw5cCt-A.d.ts +1 -0
  152. package/dist/index-E7Wvm5uX.d.ts +1 -0
  153. package/dist/index.d.ts +13 -12
  154. package/dist/index.js +47 -38
  155. package/dist/index.js.map +1 -0
  156. package/dist/{init-DTBFphOg.js → init-CY7OJPF-.js} +11 -8
  157. package/dist/{init-DTBFphOg.js.map → init-CY7OJPF-.js.map} +1 -1
  158. package/dist/kv/constants.d.ts +1 -1
  159. package/dist/kv/dotprops.js +1 -1
  160. package/dist/kv/kv.d.ts +2 -2
  161. package/dist/kv/kv.js +8 -10
  162. package/dist/kv/kv.js.map +1 -1
  163. package/dist/kv/serde.d.ts +2 -2
  164. package/dist/kv/serde.js +1 -1
  165. package/dist/logger/DefaultLogger.d.ts +2 -2
  166. package/dist/logger/DefaultLogger.js +29 -28
  167. package/dist/logger/ILogger.d.ts +1 -1
  168. package/dist/logger/Logger.d.ts +2 -2
  169. package/dist/logger/Logger.js +29 -28
  170. package/dist/logger/NoopLogger.d.ts +41 -11
  171. package/dist/logger/NoopLogger.js +5 -25
  172. package/dist/logger/NoopLogger.js.map +1 -1
  173. package/dist/{media-gallery-CIKypjbJ.js → media-gallery-zDtJ3kxb.js} +3 -2
  174. package/dist/{media-gallery-CIKypjbJ.js.map → media-gallery-zDtJ3kxb.js.map} +1 -1
  175. package/dist/plugins/CompilerPlugin.d.ts +6 -6
  176. package/dist/plugins/CompilerPlugin.js +2 -2
  177. package/dist/plugins/PluginCommon.d.ts +6 -6
  178. package/dist/plugins/PluginCommon.js +1 -1
  179. package/dist/plugins/RuntimePlugin.d.ts +6 -6
  180. package/dist/plugins/RuntimePlugin.js +2 -2
  181. package/dist/plugins/index.d.ts +6 -6
  182. package/dist/plugins/index.js +29 -28
  183. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.d.ts +6 -6
  184. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +29 -28
  185. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.d.ts +6 -6
  186. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +29 -28
  187. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.d.ts +6 -6
  188. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +29 -28
  189. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.d.ts +6 -6
  190. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +29 -28
  191. package/dist/plugins/plugin-runtime/runtime.d.ts +6 -6
  192. package/dist/plugins/plugin-runtime/runtime.js +1 -1
  193. package/dist/plugins/types.d.ts +6 -6
  194. package/dist/{resolve-file-url-DHTQj2mU.js → resolve-file-url-ChIyw-Vf.js} +4 -4
  195. package/dist/{resolve-file-url-DHTQj2mU.js.map → resolve-file-url-ChIyw-Vf.js.map} +1 -1
  196. package/dist/{section-CuYr0Inu.js → section-DlvrDoJK.js} +4 -4
  197. package/dist/{section-CuYr0Inu.js.map → section-DlvrDoJK.js.map} +1 -1
  198. package/dist/{separator-DLdWBjSN.js → separator-DL6QH5H1.js} +4 -4
  199. package/dist/{separator-DLdWBjSN.js.map → separator-DL6QH5H1.js.map} +1 -1
  200. package/dist/{serde-BUDI03pX.d.ts → serde-BYaKrsOV.d.ts} +2 -2
  201. package/dist/{serde-CHySNpFr.js → serde-Cc8iUa9J.js} +2 -2
  202. package/dist/{serde-CHySNpFr.js.map → serde-Cc8iUa9J.js.map} +1 -1
  203. package/dist/{signals-DHdYrd-n.js → signals-ChFMD7mB.js} +12 -15
  204. package/dist/signals-ChFMD7mB.js.map +1 -0
  205. package/dist/{signals-BQbEfy3X.d.ts → signals-SHg7J1U_.d.ts} +4 -7
  206. package/dist/{store-CiqLHedg.js → store-CM6pWVZh.js} +3 -2
  207. package/dist/{store-CiqLHedg.js.map → store-CM6pWVZh.js.map} +1 -1
  208. package/dist/{text-display--p2-BoUa.js → text-display-DbMumig_.js} +3 -2
  209. package/dist/{text-display--p2-BoUa.js.map → text-display-DbMumig_.js.map} +1 -1
  210. package/dist/{type-checker-1Iu1jJcy.js → type-checker-ocNSZh0W.js} +7 -5
  211. package/dist/{type-checker-1Iu1jJcy.js.map → type-checker-ocNSZh0W.js.map} +1 -1
  212. package/dist/{types-package-DrnIdWLg.js → types-package-BWArjyBF.js} +7 -4
  213. package/dist/{types-package-DrnIdWLg.js.map → types-package-BWArjyBF.js.map} +1 -1
  214. package/dist/types.d.ts +7 -7
  215. package/dist/utils/colors.js +1 -1
  216. package/dist/utils/dev-hooks.d.ts +6 -6
  217. package/dist/utils/dev-hooks.js +29 -28
  218. package/dist/utils/error-codes.d.ts +2 -54
  219. package/dist/utils/error-codes.js +1 -1
  220. package/dist/utils/resolve-file-url.js +1 -1
  221. package/dist/utils/types-package.js +1 -1
  222. package/dist/utils/useful-stuff/async-queue.js.map +1 -1
  223. package/dist/utils/useful-stuff/mutex.js +1 -2
  224. package/dist/utils/useful-stuff/mutex.js.map +1 -1
  225. package/dist/utils/useful-stuff/ratelimiter.js +2 -4
  226. package/dist/utils/useful-stuff/ratelimiter.js.map +1 -1
  227. package/dist/utils/useful-stuff/semaphore.js +2 -4
  228. package/dist/utils/useful-stuff/semaphore.js.map +1 -1
  229. package/dist/utils/utilities.js +29 -28
  230. package/dist/utils/warn-unstable.js.map +1 -1
  231. package/dist/utils-DCSnVAZ6.js.map +1 -1
  232. package/dist/{utils-BnXM4eKk.js → utils-KsNof0Xz.js} +1 -1
  233. package/dist/{utils-BnXM4eKk.js.map → utils-KsNof0Xz.js.map} +1 -1
  234. package/dist/{version-rfStvlqX.js → version-BCILNeQb.js} +2 -2
  235. package/dist/{version-rfStvlqX.js.map → version-BCILNeQb.js.map} +1 -1
  236. package/dist/version.js +1 -1
  237. package/hooks.cjs +2 -0
  238. package/hooks.d.ts +3 -1
  239. package/package.json +60 -59
  240. package/dist/ILogger-DBGON5wx.d.ts +0 -34
  241. package/dist/MessageCommandParser-B_BEQ3p8.js.map +0 -1
  242. package/dist/RuntimePlugin-CBgBLXTG.js.map +0 -1
  243. package/dist/build-DXl8uEv4.js.map +0 -1
  244. package/dist/commandkit-DMEW0kJg.js.map +0 -1
  245. package/dist/common-DNADUU3_.js.map +0 -1
  246. package/dist/error-codes-C-ViHyu-.js.map +0 -1
  247. package/dist/index-DKcmsWXw.d.ts +0 -1
  248. package/dist/index-DSBMRX9A.d.ts +0 -1
  249. package/dist/index-DdqikUQD.d.ts +0 -1
  250. package/dist/signals-DHdYrd-n.js.map +0 -1
  251. /package/dist/{router-DHnFRADH.js → router-Dn35v30f.js} +0 -0
  252. /package/dist/{runtime-5fxB4uhe.js → runtime-DB9CiPfe.js} +0 -0
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const require_version = require('./version-rfStvlqX.js');
1
+ const require_version = require('./version-BCILNeQb.js');
2
2
 
3
3
  exports.version = require_version.version;
package/hooks.cjs CHANGED
@@ -1,5 +1,6 @@
1
1
  const {
2
2
  useEnvironment,
3
+ useStore,
3
4
  getContext,
4
5
  getCommandKit,
5
6
  } = require('./dist/context/async-context.js');
@@ -51,6 +52,7 @@ function useEvent() {
51
52
 
52
53
  module.exports = {
53
54
  useAnyEnvironment,
55
+ useStore,
54
56
  useClient,
55
57
  useCommandKit,
56
58
  useCommand,
package/hooks.d.ts CHANGED
@@ -5,7 +5,7 @@ import type {
5
5
  CommandKitEnvironment,
6
6
  EventWorkerContext,
7
7
  } from './dist/index.js';
8
- import type { Client } from 'discord.js';
8
+ import type { Client, Collection } from 'discord.js';
9
9
 
10
10
  export function useAnyEnvironment(): CommandKitEnvironment | EventWorkerContext;
11
11
 
@@ -16,3 +16,5 @@ export function useCommandKit(): CommandKit;
16
16
  export function useCommand(): LoadedCommand;
17
17
 
18
18
  export function useEvent(): ParsedEvent;
19
+
20
+ export function useStore<K = any, V = any>(): Collection<K, V>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "commandkit",
3
3
  "description": "Beginner friendly command & event handler for Discord.js",
4
- "version": "1.2.0-rc.1",
4
+ "version": "1.2.0-rc.10",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
7
7
  "main": "./dist/index.js",
@@ -54,75 +54,85 @@
54
54
  "import": "./dist/index.js",
55
55
  "types": "./dist/index.d.ts"
56
56
  },
57
- "./jsx-runtime": {
58
- "require": "./jsx-runtime.cjs",
59
- "import": "./jsx-runtime.cjs",
60
- "types": "./jsx-runtime.d.ts"
57
+ "./ai": {
58
+ "require": "./ai.cjs",
59
+ "import": "./ai.cjs",
60
+ "types": "./ai.d.ts"
61
61
  },
62
- "./hooks": {
63
- "require": "./hooks.cjs",
64
- "import": "./hooks.cjs",
65
- "types": "./hooks.d.ts"
62
+ "./analytics": {
63
+ "require": "./analytics.cjs",
64
+ "import": "./analytics.cjs",
65
+ "types": "./analytics.d.ts"
66
66
  },
67
- "./plugin": {
68
- "require": "./plugin.cjs",
69
- "import": "./plugin.cjs",
70
- "types": "./plugin.d.ts"
67
+ "./async-queue": {
68
+ "require": "./async-queue.cjs",
69
+ "import": "./async-queue.cjs",
70
+ "types": "./async-queue.d.ts"
71
71
  },
72
- "./config": {
73
- "require": "./config.cjs",
74
- "import": "./config.cjs",
75
- "types": "./config.d.ts"
72
+ "./cache": {
73
+ "require": "./cache.cjs",
74
+ "import": "./cache.cjs",
75
+ "types": "./cache.d.ts"
76
76
  },
77
77
  "./components": {
78
78
  "require": "./components.cjs",
79
79
  "import": "./components.cjs",
80
80
  "types": "./components.d.ts"
81
81
  },
82
+ "./config": {
83
+ "require": "./config.cjs",
84
+ "import": "./config.cjs",
85
+ "types": "./config.d.ts"
86
+ },
87
+ "./env": {
88
+ "require": "./env.cjs",
89
+ "import": "./env.cjs",
90
+ "types": "./env.d.ts"
91
+ },
92
+ "./events": {
93
+ "require": "./events.cjs",
94
+ "import": "./events.cjs",
95
+ "types": "./events.d.ts"
96
+ },
82
97
  "./flag": {
83
98
  "require": "./flag.cjs",
84
99
  "import": "./flag.cjs",
85
100
  "types": "./flag.d.ts"
86
101
  },
87
- "./cache": {
88
- "require": "./cache.cjs",
89
- "import": "./cache.cjs",
90
- "types": "./cache.d.ts"
102
+ "./hooks": {
103
+ "require": "./hooks.cjs",
104
+ "import": "./hooks.cjs",
105
+ "types": "./hooks.d.ts"
91
106
  },
92
107
  "./i18n": {
93
108
  "require": "./i18n.cjs",
94
109
  "import": "./i18n.cjs",
95
110
  "types": "./i18n.d.ts"
96
111
  },
112
+ "./jsx-runtime": {
113
+ "require": "./jsx-runtime.cjs",
114
+ "import": "./jsx-runtime.cjs",
115
+ "types": "./jsx-runtime.d.ts"
116
+ },
117
+ "./kv": {
118
+ "require": "./kv.cjs",
119
+ "import": "./kv.cjs",
120
+ "types": "./kv.d.ts"
121
+ },
97
122
  "./logger": {
98
123
  "require": "./logger.cjs",
99
124
  "import": "./logger.cjs",
100
125
  "types": "./logger.d.ts"
101
126
  },
102
- "./events": {
103
- "require": "./events.cjs",
104
- "import": "./events.cjs",
105
- "types": "./events.d.ts"
106
- },
107
- "./analytics": {
108
- "require": "./analytics.cjs",
109
- "import": "./analytics.cjs",
110
- "types": "./analytics.d.ts"
111
- },
112
- "./ai": {
113
- "require": "./ai.cjs",
114
- "import": "./ai.cjs",
115
- "types": "./ai.d.ts"
116
- },
117
- "./env": {
118
- "require": "./env.cjs",
119
- "import": "./env.cjs",
120
- "types": "./env.d.ts"
127
+ "./mutex": {
128
+ "require": "./mutex.cjs",
129
+ "import": "./mutex.cjs",
130
+ "types": "./mutex.d.ts"
121
131
  },
122
- "./async-queue": {
123
- "require": "./async-queue.cjs",
124
- "import": "./async-queue.cjs",
125
- "types": "./async-queue.d.ts"
132
+ "./plugin": {
133
+ "require": "./plugin.cjs",
134
+ "import": "./plugin.cjs",
135
+ "types": "./plugin.d.ts"
126
136
  },
127
137
  "./ratelimit": {
128
138
  "require": "./ratelimit.cjs",
@@ -133,16 +143,6 @@
133
143
  "require": "./semaphore.cjs",
134
144
  "import": "./semaphore.cjs",
135
145
  "types": "./semaphore.d.ts"
136
- },
137
- "./mutex": {
138
- "require": "./mutex.cjs",
139
- "import": "./mutex.cjs",
140
- "types": "./mutex.d.ts"
141
- },
142
- "./kv": {
143
- "require": "./kv.cjs",
144
- "import": "./kv.cjs",
145
- "types": "./kv.d.ts"
146
146
  }
147
147
  },
148
148
  "repository": {
@@ -154,7 +154,9 @@
154
154
  "keywords": [
155
155
  "discord.js",
156
156
  "command handler",
157
- "event handler"
157
+ "event handler",
158
+ "framework",
159
+ "discord.js 14"
158
160
  ],
159
161
  "dependencies": {
160
162
  "@rollup/plugin-json": "^6.1.0",
@@ -167,25 +169,24 @@
167
169
  "picocolors": "^1.1.1",
168
170
  "rfdc": "^1.3.1",
169
171
  "rimraf": "^6.0.0",
170
- "tsdown": "^0.14.0",
172
+ "tsdown": "^0.15.2",
171
173
  "use-macro": "^1.1.0"
172
174
  },
173
175
  "devDependencies": {
174
176
  "@types/ms": "^2.0.0",
175
177
  "@types/node": "^22.10.2",
176
178
  "@types/yargs": "^17.0.32",
177
- "discord.js": "^14.21.0",
179
+ "discord.js": "^14.22.1",
178
180
  "tsx": "^4.19.2",
179
181
  "typescript": "^5.7.3",
180
182
  "vitest": "^3.0.5",
181
- "tsconfig": "0.0.0-rc.1"
183
+ "tsconfig": "0.0.0-rc.10"
182
184
  },
183
185
  "engines": {
184
186
  "node": ">=24"
185
187
  },
186
188
  "scripts": {
187
189
  "check-types": "tsc --noEmit",
188
- "dev": "pnpm run --filter=test-bot dev",
189
190
  "build": "tsdown",
190
191
  "test": "vitest"
191
192
  }
@@ -1,34 +0,0 @@
1
- //#region src/logger/ILogger.d.ts
2
- /**
3
- * ILogger interface for logging functionality.
4
- */
5
- interface ILogger {
6
- /**
7
- * Logs a message with the default log level.
8
- * @param args The message to log.
9
- */
10
- log(...args: any[]): void;
11
- /**
12
- * Logs an error message.
13
- * @param args The error message to log.
14
- */
15
- error(...args: any[]): void;
16
- /**
17
- * Logs a warning message.
18
- * @param args The warning message to log.
19
- */
20
- warn(...args: any[]): void;
21
- /**
22
- * Logs an informational message.
23
- * @param args The informational message to log.
24
- */
25
- info(...args: any[]): void;
26
- /**
27
- * Logs a debug message.
28
- * @param args The debug message to log.
29
- */
30
- debug(...args: any[]): void;
31
- }
32
- //#endregion
33
- export { ILogger };
34
- //# sourceMappingURL=ILogger-DBGON5wx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageCommandParser-B_BEQ3p8.js","names":[],"sources":["../src/app/commands/MessageCommandParser.ts"],"sourcesContent":["import { Channel } from 'diagnostics_channel';\nimport {\n Message,\n ApplicationCommandOptionType,\n GuildMember,\n Attachment,\n User,\n Role,\n CommandInteractionOption,\n} from 'discord.js';\nimport {\n CommandKitErrorCodes,\n createCommandKitError,\n} from '../../utils/error-codes';\n\n/**\n * Represents a parsed message command with its components.\n */\nexport interface ParsedMessageCommand {\n command: string;\n options: { name: string; value: unknown }[];\n subcommand?: string;\n subcommandGroup?: string;\n}\n\n/**\n * Schema defining the types of options for a message command.\n */\nexport type MessageCommandOptionsSchema = Record<\n string,\n ApplicationCommandOptionType\n>;\n\n/**\n * Parses message content into structured command data with options and subcommands.\n */\nexport class MessageCommandParser {\n /**\n * @private\n * @internal\n */\n #parsed: ParsedMessageCommand | null = null;\n\n /**\n * @private\n * @internal\n */\n #options: MessageCommandOptions | null = null;\n\n /**\n * @private\n * @internal\n */\n #args: string[] = [];\n\n /**\n * Creates a new message command parser.\n * @param message - The Discord message to parse\n * @param prefix - Array of valid command prefixes\n * @param schema - Function that returns the options schema for a command\n */\n public constructor(\n public message: Message,\n private prefix: string[],\n private schema: (command: string) => MessageCommandOptionsSchema,\n ) {}\n\n /**\n * Gets the parsed command arguments.\n * @returns Array of command arguments\n */\n public getArgs() {\n void this.parse();\n return this.#args;\n }\n\n /**\n * Gets the message command options object for easy access to typed option values.\n */\n public get options() {\n if (!this.#options) {\n this.#options = new MessageCommandOptions(this);\n }\n\n return this.#options;\n }\n\n /**\n * Gets a specific option value by name.\n * @param name - The option name\n * @returns The option value or undefined if not found\n */\n public getOption<T>(name: string): T | undefined {\n return this.parse().options.find((o) => o.name === name)?.value as T;\n }\n\n /**\n * Gets the main command name.\n * @returns The command name\n */\n public getCommand(): string {\n return this.parse().command;\n }\n\n /**\n * Gets the subcommand name if present.\n * @returns The subcommand name or undefined\n */\n public getSubcommand(): string | undefined {\n return this.parse().subcommand;\n }\n\n /**\n * Gets the subcommand group name if present.\n * @returns The subcommand group name or undefined\n */\n public getSubcommandGroup(): string | undefined {\n return this.parse().subcommandGroup;\n }\n\n /**\n * Gets the prefix used in the message.\n * @returns The matched prefix or undefined\n */\n public getPrefix() {\n for (const p of this.prefix) {\n if (this.message.content.startsWith(p)) {\n return p;\n }\n }\n }\n\n /**\n * Gets the full command including subcommand group and subcommand.\n * @returns The complete command string\n */\n public getFullCommand() {\n return [this.getCommand(), this.getSubcommandGroup(), this.getSubcommand()]\n .filter((v) => v)\n .join(' ');\n }\n\n /**\n * Parses the message content into structured command data.\n * @returns The parsed command data\n */\n public parse(): ParsedMessageCommand {\n if (this.#parsed) {\n return this.#parsed;\n }\n\n const content = this.message.content;\n\n const prefix = this.getPrefix();\n\n if (!prefix) {\n throw createCommandKitError(CommandKitErrorCodes.InvalidCommandPrefix);\n }\n\n const parts = content.slice(prefix.length).trim().split(' ');\n const command = parts.shift();\n\n this.#args = parts;\n\n let subcommandGroup: string | undefined;\n let subcommand: string | undefined;\n\n if (command?.includes(':')) {\n const [, group, cmd] = command.split(':');\n\n if (!cmd && group) {\n subcommand = group;\n } else if (cmd && group) {\n subcommandGroup = group;\n subcommand = cmd;\n }\n }\n\n const schema = this.schema(\n [command, subcommandGroup, subcommand].filter(Boolean).join(' ').trim(),\n );\n\n const options = parts\n .map((part) => {\n try {\n const [name, value] = part.split(':');\n\n if (!(name in schema)) return null;\n\n switch (schema[name]) {\n case ApplicationCommandOptionType.Boolean:\n return { name, value: value === 'true' };\n case ApplicationCommandOptionType.Integer:\n return { name, value: parseInt(value, 10) };\n case ApplicationCommandOptionType.Number:\n return { name, value: parseFloat(value) };\n case ApplicationCommandOptionType.String:\n return { name, value };\n case ApplicationCommandOptionType.User:\n return {\n name,\n value: this.message.mentions.users.find((u) => {\n return u.id === value.replace(/[<@!>]/g, '');\n }),\n };\n case ApplicationCommandOptionType.Channel:\n return {\n name,\n value: this.message.mentions.channels.find((c) => {\n return c.id === value.replace(/[<#>]/g, '');\n }),\n };\n case ApplicationCommandOptionType.Role:\n return {\n name,\n value: this.message.mentions.roles.find((r) => {\n return r.id === value.replace(/[<@&>]/g, '');\n }),\n };\n case ApplicationCommandOptionType.Attachment:\n return {\n name,\n value: this.message.attachments.find((a) => {\n return a.name === value;\n }),\n };\n default:\n return null;\n }\n } catch {\n // Invalid option\n return null;\n }\n })\n .filter((v) => v !== null);\n\n this.#parsed = {\n command: command!,\n options,\n subcommand,\n subcommandGroup,\n };\n\n return this.#parsed;\n }\n}\n\n/**\n * Provides typed access to message command options with methods similar to Discord.js interaction options.\n */\nexport class MessageCommandOptions {\n /**\n * Creates a new message command options instance.\n * @param parser - The message command parser instance\n */\n public constructor(private parser: MessageCommandParser) {}\n\n /**\n * @private\n * @internal\n */\n private assertOption<T>(name: string, required = false) {\n const option = this.parser.getOption<T>(name);\n\n if (required && option === undefined) {\n throw new Error(`Option \"${name}\" is required.`);\n }\n\n return option ?? null;\n }\n\n /**\n * Gets a guild member from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The guild member or null if not found\n */\n getMember(name: string): GuildMember | null;\n getMember(name: string, required: true): GuildMember;\n getMember(name: string, required = false) {\n const user = this.assertOption<User>(name, required);\n const member = this.parser.message.guild?.members.cache.get(user?.id!);\n\n if (required && !member) {\n throw new Error(`Member \"${name}\" is required.`);\n }\n\n return member ?? null;\n }\n\n /**\n * Gets an attachment from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The attachment or null if not found\n */\n getAttachment(name: string): Attachment | null;\n getAttachment(name: string, required: true): Attachment;\n getAttachment(name: string, required = false) {\n return this.assertOption<Attachment>(name, required);\n }\n\n /**\n * Gets a boolean value from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The boolean value or null if not found\n */\n getBoolean(name: string): boolean | null;\n getBoolean(name: string, required: true): boolean;\n getBoolean(name: string, required = false) {\n return this.assertOption<boolean>(name, required);\n }\n\n /**\n * Gets a number value from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The number value or null if not found\n */\n getNumber(name: string): number | null;\n getNumber(name: string, required: true): number;\n getNumber(name: string, required = false) {\n return this.assertOption<number>(name, required);\n }\n\n /**\n * Gets a string value from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The string value or null if not found\n */\n getString(name: string): string | null;\n getString(name: string, required: true): string;\n getString(name: string, required = false) {\n return this.assertOption<string>(name, required);\n }\n\n /**\n * Gets an integer value from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The integer value or null if not found\n */\n getInteger(name: string): number | null;\n getInteger(name: string, required: true): number;\n getInteger(name: string, required = false) {\n return this.assertOption<number>(name, required);\n }\n\n /**\n * Gets a user from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The user or null if not found\n */\n getUser(name: string): User | null;\n getUser(name: string, required: true): User;\n getUser(name: string, required = false) {\n return this.assertOption<User>(name, required);\n }\n\n /**\n * Gets a channel from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The channel or null if not found\n */\n getChannel(name: string): Channel | null;\n getChannel(name: string, required: true): Channel;\n getChannel(name: string, required = false) {\n return this.assertOption<Channel>(name, required);\n }\n\n /**\n * Gets a role from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The role or null if not found\n */\n getRole(name: string): Role | null;\n getRole(name: string, required: true): Role;\n getRole(name: string, required = false) {\n return this.assertOption<Role>(name, required);\n }\n\n /**\n * Gets a mentionable (user, member, or role) from the command options.\n * @param name - The option name\n * @param required - Whether the option is required\n * @returns The mentionable or null if not found\n */\n getMentionable(\n name: string,\n ): NonNullable<CommandInteractionOption['member' | 'role' | 'user']> | null;\n getMentionable(\n name: string,\n required: true,\n ): NonNullable<CommandInteractionOption['member' | 'role' | 'user']>;\n getMentionable(\n name: string,\n required = false,\n ): NonNullable<CommandInteractionOption['member' | 'role' | 'user']> | null {\n const target = this.assertOption(name, required);\n\n if (\n target instanceof GuildMember ||\n target instanceof User ||\n target instanceof Role\n ) {\n return target;\n }\n\n if (required) {\n throw new Error(`Mentionable \"${name}\" is required.`);\n }\n\n return null;\n }\n\n /**\n * Gets the subcommand name from the command.\n * @param required - Whether the subcommand is required\n * @returns The subcommand name or null if not found\n */\n getSubcommand(): string | null;\n getSubcommand(required: true): string;\n getSubcommand(required = false) {\n const sub = this.parser.getSubcommand();\n\n if (required && sub === undefined) {\n throw new Error('Subcommand is required.');\n }\n\n return sub ?? null;\n }\n\n /**\n * Gets the subcommand group name from the command.\n * @param required - Whether the subcommand group is required\n * @returns The subcommand group name or null if not found\n */\n getSubcommandGroup(): string | null;\n getSubcommandGroup(required: true): string;\n getSubcommandGroup(required = false) {\n const sub = this.parser.getSubcommandGroup();\n\n if (required && sub === undefined) {\n throw new Error('Subcommand group is required.');\n }\n\n return sub ?? null;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RuntimePlugin-CBgBLXTG.js","names":[],"sources":["../src/plugins/RuntimePlugin.ts"],"sourcesContent":["import { Interaction, Message } from 'discord.js';\nimport {\n isPlugin,\n PluginCommon,\n PluginOptions,\n PluginType,\n} from './PluginCommon';\nimport type { CommandKitPluginRuntime } from './plugin-runtime/CommandKitPluginRuntime';\nimport { CommandBuilderLike, PreparedAppCommandExecution } from '../app';\nimport { CommandKitEnvironment } from '../context/environment';\nimport { CommandKitHMREvent } from '../utils/dev-hooks';\nimport { PreRegisterCommandsEvent } from '../app/register/CommandRegistrar';\nimport { CommandKitEventDispatch } from './types';\n\n/**\n * CommandKit plugin that runs at the runtime.\n */\nexport abstract class RuntimePlugin<\n T extends PluginOptions = PluginOptions,\n> extends PluginCommon<T, CommandKitPluginRuntime> {\n public readonly type = PluginType.Runtime;\n /**\n * Called before commands are loaded\n */\n public async onBeforeCommandsLoad(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called after commands are loaded\n */\n public async onAfterCommandsLoad(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called before events are loaded\n */\n public async onBeforeEventsLoad(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called after events are loaded\n */\n public async onAfterEventsLoad(ctx: CommandKitPluginRuntime): Promise<void> {}\n\n /**\n * Called before the client logs in\n */\n public async onBeforeClientLogin(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called after the client logs in\n */\n public async onAfterClientLogin(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called before interaction is handled\n * @param interaction The interaction\n */\n public async onBeforeInteraction(\n ctx: CommandKitPluginRuntime,\n interaction: Interaction,\n ): Promise<void> {}\n\n /**\n * Called before message command is processed\n * @param message The message\n */\n public async onBeforeMessageCommand(\n ctx: CommandKitPluginRuntime,\n message: Message,\n ): Promise<void> {}\n\n /**\n * Called before command is executed. This method can execute the command itself.\n * @param source The source that triggered the command\n * @param command The command\n * @param execute The function that executes the command\n */\n public async executeCommand(\n ctx: CommandKitPluginRuntime,\n env: CommandKitEnvironment,\n source: Interaction | Message,\n command: PreparedAppCommandExecution,\n execute: () => Promise<any>,\n ): Promise<boolean> {\n return false;\n }\n\n /**\n * Called after events router is initialized\n * @param ctx The context\n */\n public async onEventsRouterInit(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called after commands router is initialized\n * @param ctx The context\n */\n public async onCommandsRouterInit(\n ctx: CommandKitPluginRuntime,\n ): Promise<void> {}\n\n /**\n * Called when HMR event is received\n * @param ctx The context\n * @param event The event\n */\n public async performHMR(\n ctx: CommandKitPluginRuntime,\n event: CommandKitHMREvent,\n ): Promise<void> {}\n\n /**\n * Called before command is loaded for registration. This method can be used to modify the command data before it is loaded.\n * @param ctx The context\n * @param commands The command that is being loaded. This is a CommandBuilderLike object which represents Discord's command\n */\n async prepareCommand(\n ctx: CommandKitPluginRuntime,\n commands: CommandBuilderLike,\n ): Promise<CommandBuilderLike | null> {\n return null;\n }\n\n /**\n * Called before command is registered to discord. This method can cancel the registration of the command and handle it manually.\n * @param ctx The context\n * @param data The command registration data\n */\n async onBeforeRegisterCommands(\n ctx: CommandKitPluginRuntime,\n event: PreRegisterCommandsEvent,\n ): Promise<void> {}\n\n /**\n * Called before global commands registration. This method can cancel the registration of the command and handle it manually.\n * This method is called after `onBeforeRegisterCommands` if that stage was not handled.\n * @param ctx The context\n * @param event The command registration data\n */\n async onBeforeRegisterGlobalCommands(\n ctx: CommandKitPluginRuntime,\n event: PreRegisterCommandsEvent,\n ): Promise<void> {}\n\n /**\n * Called before guild commands registration. This method can cancel the registration of the command and handle it manually.\n * This method is called before guilds of the command are resolved. It is called after `onBeforeRegisterCommands` if that stage was not handled.\n * @param ctx The context\n * @param event The command registration data\n */\n async onBeforePrepareGuildCommandsRegistration(\n ctx: CommandKitPluginRuntime,\n event: PreRegisterCommandsEvent,\n ): Promise<void> {}\n\n /**\n * Called before guild commands registration. This method can cancel the registration of the command and handle it manually.\n * This method is called after guilds of the command are resolved. It is called after `onBeforePrepareGuildCommandsRegistration` if that stage was not handled.\n * @param ctx The context\n * @param event The command registration data\n */\n async onBeforeRegisterGuildCommands(\n ctx: CommandKitPluginRuntime,\n event: PreRegisterCommandsEvent,\n ): Promise<void> {}\n\n /**\n * Called after command and all of its deferred functions are executed.\n * @param ctx The context\n * @param env The environment of the command. This environment contains the command execution data such as command context and more.\n */\n async onAfterCommand(\n ctx: CommandKitPluginRuntime,\n env: CommandKitEnvironment,\n ) {}\n\n /**\n * Called before emitting an event\n * @param ctx The context\n * @param event The event that is being emitted\n */\n public async willEmitEvent(\n ctx: CommandKitPluginRuntime,\n event: CommandKitEventDispatch,\n ) {}\n}\n\nexport function isRuntimePlugin(plugin: unknown): plugin is RuntimePlugin {\n return (\n plugin instanceof RuntimePlugin ||\n (isPlugin(plugin) && plugin.type === PluginType.Runtime)\n );\n}\n"],"mappings":";;;;;;AAiBA,IAAsB,gBAAtB,cAEA,kCAAyC;CACvC,AAAgB,OAAO,gCAAW;;;;CAIlC,MAAa,qBACb,KACgB,CAAE;;;;CAKlB,MAAa,oBACb,KACgB,CAAE;;;;CAKlB,MAAa,mBACb,KACgB,CAAE;;;;CAKlB,MAAa,kBAAkB,KAA6C,CAAC;;;;CAK7E,MAAa,oBACb,KACgB,CAAE;;;;CAKlB,MAAa,mBACb,KACgB,CAAE;;;;;CAMlB,MAAa,oBACb,KACA,aACgB,CAAE;;;;;CAMlB,MAAa,uBACb,KACA,SACgB,CAAE;;;;;;;CAQlB,MAAa,eACb,KACA,KACA,QACA,SACA,SACmB;AACjB,SAAO;CACT;;;;;CAMA,MAAa,mBACb,KACgB,CAAE;;;;;CAMlB,MAAa,qBACb,KACgB,CAAE;;;;;;CAOlB,MAAa,WACb,KACA,OACgB,CAAE;;;;;;CAOlB,MAAM,eACN,KACA,UACqC;AACnC,SAAO;CACT;;;;;;CAOA,MAAM,yBACN,KACA,OACgB,CAAE;;;;;;;CAQlB,MAAM,+BACN,KACA,OACgB,CAAE;;;;;;;CAQlB,MAAM,yCACN,KACA,OACgB,CAAE;;;;;;;CAQlB,MAAM,8BACN,KACA,OACgB,CAAE;;;;;;CAOlB,MAAM,eACN,KACA,KACA,CAAE;;;;;;CAOF,MAAa,cACb,KACA,OACA,CAAE;AACJ;AAEA,SAAgB,gBAAgB,QAA0C;AACxE,QACE,kBAAkB,iBAClB,8BAAS,WAAW,OAAO,SAAS,gCAAW;AAEnD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-DXl8uEv4.js","names":[],"sources":["../src/cli/build.ts"],"sourcesContent":["import { build, Options } from 'tsdown';\nimport { CompilerPlugin, CompilerPluginRuntime } from '../plugins';\nimport { loadConfigFile } from '../config/loader';\nimport { writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { DevEnv, devEnvFileArgs, ProdEnv, prodEnvFileArgs } from './env';\nimport { rimraf } from 'rimraf';\nimport { performTypeCheck } from './type-checker';\nimport { copyLocaleFiles } from './common';\nimport { MaybeArray } from '../components';\nimport { COMMANDKIT_CWD } from '../utils/constants';\nimport { mergeDeep } from '../config/utils';\nimport { existsSync } from 'node:fs';\n\n/**\n * @private\n * @internal\n */\nexport interface ApplicationBuildOptions {\n plugins?: MaybeArray<CompilerPlugin>[] | Array<CompilerPlugin>;\n rolldownPlugins?: any[];\n isDev?: boolean;\n configPath?: string;\n}\n\n// emit public env variables and given env variables\n/**\n * @private\n * @internal\n */\nfunction mergeDefinitionsIfNeeded(env: Record<string, string>, isDev: boolean) {\n const values = Object.fromEntries(\n Object.entries(process.env).filter(\n ([k]) => !(k in env) && k.startsWith('COMMANDKIT_PUBLIC_'),\n ),\n );\n\n return {\n ...env,\n ...values,\n ...(isDev\n ? {\n NODE_ENV: 'development',\n COMMANDKIT_BOOTSTRAP_MODE: 'development',\n COMMANDKIT_IS_DEV: 'true',\n COMMANDKIT_IS_TEST: 'false',\n }\n : {\n NODE_ENV: 'production',\n COMMANDKIT_BOOTSTRAP_MODE: 'production',\n COMMANDKIT_IS_DEV: 'false',\n COMMANDKIT_IS_TEST: 'false',\n }),\n };\n}\n\n/**\n * @private\n * @internal\n */\nexport async function buildApplication({\n plugins,\n rolldownPlugins,\n isDev,\n configPath,\n}: ApplicationBuildOptions) {\n const config = await loadConfigFile(configPath);\n\n if (!isDev && !config?.typescript?.ignoreBuildErrors) {\n await performTypeCheck(configPath || COMMANDKIT_CWD);\n }\n\n const pluginRuntime = new CompilerPluginRuntime(\n (plugins || []) as CompilerPlugin[],\n );\n\n rolldownPlugins ??= [];\n\n rolldownPlugins.push(pluginRuntime.toJSON());\n\n try {\n const dest = isDev ? '.commandkit' : config.distDir;\n\n // Clean the destination directory\n await rimraf(dest);\n\n await pluginRuntime.init();\n\n await build(\n mergeDeep(\n {\n watch: false,\n dts: false,\n clean: true,\n format: ['esm'],\n shims: true,\n minify: false,\n silent: !!isDev,\n inputOptions: {\n transform: {\n jsx: {\n runtime: 'automatic',\n importSource: 'commandkit',\n },\n },\n checks: {\n circularDependency: true,\n },\n onwarn: (warning, defaultWarn) => {\n if (warning?.message?.includes('compilerOptions.jsx')) return;\n\n return defaultWarn(warning);\n },\n onLog: (level, log, defaultLog) => {\n if (isDev) return;\n\n return defaultLog(level, log);\n },\n moduleTypes: {\n '.json': 'js',\n '.node': 'binary',\n },\n },\n plugins: rolldownPlugins,\n platform: 'node',\n skipNodeModulesBundle: true,\n sourcemap:\n config.sourceMap?.[isDev ? 'development' : 'production'] ?? true,\n target: 'node16',\n outDir: dest,\n env: mergeDefinitionsIfNeeded(config.env || {}, !!isDev),\n entry: Array.from(\n new Set([\n 'src/**/*.{js,cjs,mjs,ts,cts,mts,jsx,tsx}',\n `!${config.distDir}`,\n '!.commandkit',\n '!**/*.test.*',\n '!**/*.spec.*',\n ...(config.entrypoints ?? []),\n ]),\n ),\n unbundle: isDev\n ? true\n : (config.compilerOptions?.disableChunking ?? false),\n } satisfies Options,\n config.compilerOptions?.tsdown,\n ),\n );\n\n await copyLocaleFiles('src', dest);\n await injectEntryFile(\n configPath || COMMANDKIT_CWD,\n !!isDev,\n !!(\n config.antiCrashScript?.[isDev ? 'development' : 'production'] ??\n (isDev ? true : false)\n ),\n config.distDir,\n );\n } catch (error) {\n console.error('Build failed:', error);\n if (error instanceof Error) {\n console.error('Error details:', error.stack);\n }\n process.exit(1); // Force exit on error\n } finally {\n // Ensure plugins are cleaned up\n await pluginRuntime.destroy();\n }\n}\n\nconst envScript = (dev: boolean) => `// --- Environment Variables Loader ---\nconst $env = [${(dev ? devEnvFileArgs : prodEnvFileArgs).map((p) => `\"${p}\"`).join(', ')}];\nfor (const file of $env) {\n try {\n process.loadEnvFile(file);\n console.log('\\\\x1b[36m✔ Loaded \\\\x1b[0m\\\\x1b[33m%s\\\\x1b[0m', file);\n } catch {}\n}\n`;\n\nconst antiCrashScript = [\n '// --- CommandKit Anti-Crash Monitor ---',\n \" // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process\",\n ' // instead of using it as a means to resume operation.',\n ' // But it exists here due to compatibility reasons with discord bot ecosystem.',\n \" const p = (t) => `\\\\x1b[31m${t}\\\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';\",\n ' if (!process.eventNames().includes(e1)) // skip if it is already handled',\n ' process.on(e1, (e) => {',\n ' l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));',\n ' })',\n ' if (!process.eventNames().includes(e2)) // skip if it is already handled',\n ' process.on(e2, (r) => {',\n ' l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));',\n ' });',\n '// --- CommandKit Anti-Crash Monitor ---',\n].join('\\n');\n\nconst wrapInAsyncIIFE = (code: string[]) =>\n `;await (async () => {\\n${code.join('\\n\\n')}\\n})();`;\n\nasync function injectEntryFile(\n configPath: string,\n isDev: boolean,\n emitAntiCrashScript: boolean,\n distDir?: string,\n) {\n const dist = isDev ? '.commandkit' : distDir || 'dist';\n const entryFilePath = join(configPath, dist, 'index.js');\n\n // skip if the entry file already exists\n if (existsSync(entryFilePath)) return;\n\n const code = `/* Entrypoint File Generated By CommandKit */\n${isDev ? `\\n\\n// Injected for development\\n${wrapInAsyncIIFE([envScript(isDev), emitAntiCrashScript ? antiCrashScript : ''])}\\n\\n` : wrapInAsyncIIFE([envScript(isDev)])}\n\nimport { commandkit } from 'commandkit';\nimport { Client } from 'discord.js';\n\nasync function bootstrap() {\n const app = await import('./app.js').then((m) => m.default ?? m);\n\n if (!app || !(app instanceof Client)) {\n throw new Error('The app file must default export the discord.js client instance');\n }\n\n commandkit.setClient(app);\n\n await commandkit.start();\n}\n\nawait bootstrap().catch((e) => {\n console.error('Failed to bootstrap CommandKit application:\\\\n', e.stack);\n})\n`;\n\n await writeFile(entryFilePath, code);\n}\n"],"mappings":"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"}