carbon-proxy 0.14.0

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 (520) hide show
  1. package/README.md +237 -0
  2. package/dist/package.json +43 -0
  3. package/dist/src/abstracts/AnySelectMenu.d.ts +40 -0
  4. package/dist/src/abstracts/AnySelectMenu.d.ts.map +1 -0
  5. package/dist/src/abstracts/AnySelectMenu.js +41 -0
  6. package/dist/src/abstracts/AnySelectMenu.js.map +1 -0
  7. package/dist/src/abstracts/AnySelectMenuInteraction.d.ts +12 -0
  8. package/dist/src/abstracts/AnySelectMenuInteraction.d.ts.map +1 -0
  9. package/dist/src/abstracts/AnySelectMenuInteraction.js +19 -0
  10. package/dist/src/abstracts/AnySelectMenuInteraction.js.map +1 -0
  11. package/dist/src/abstracts/Base.d.ts +10 -0
  12. package/dist/src/abstracts/Base.d.ts.map +1 -0
  13. package/dist/src/abstracts/Base.js +11 -0
  14. package/dist/src/abstracts/Base.js.map +1 -0
  15. package/dist/src/abstracts/BaseChannel.d.ts +60 -0
  16. package/dist/src/abstracts/BaseChannel.d.ts.map +1 -0
  17. package/dist/src/abstracts/BaseChannel.js +90 -0
  18. package/dist/src/abstracts/BaseChannel.js.map +1 -0
  19. package/dist/src/abstracts/BaseCommand.d.ts +77 -0
  20. package/dist/src/abstracts/BaseCommand.d.ts.map +1 -0
  21. package/dist/src/abstracts/BaseCommand.js +127 -0
  22. package/dist/src/abstracts/BaseCommand.js.map +1 -0
  23. package/dist/src/abstracts/BaseComponent.d.ts +20 -0
  24. package/dist/src/abstracts/BaseComponent.d.ts.map +1 -0
  25. package/dist/src/abstracts/BaseComponent.js +10 -0
  26. package/dist/src/abstracts/BaseComponent.js.map +1 -0
  27. package/dist/src/abstracts/BaseComponentInteraction.d.ts +18 -0
  28. package/dist/src/abstracts/BaseComponentInteraction.d.ts.map +1 -0
  29. package/dist/src/abstracts/BaseComponentInteraction.js +41 -0
  30. package/dist/src/abstracts/BaseComponentInteraction.js.map +1 -0
  31. package/dist/src/abstracts/BaseGuildChannel.d.ts +61 -0
  32. package/dist/src/abstracts/BaseGuildChannel.d.ts.map +1 -0
  33. package/dist/src/abstracts/BaseGuildChannel.js +125 -0
  34. package/dist/src/abstracts/BaseGuildChannel.js.map +1 -0
  35. package/dist/src/abstracts/BaseGuildTextChannel.d.ts +53 -0
  36. package/dist/src/abstracts/BaseGuildTextChannel.d.ts.map +1 -0
  37. package/dist/src/abstracts/BaseGuildTextChannel.js +89 -0
  38. package/dist/src/abstracts/BaseGuildTextChannel.js.map +1 -0
  39. package/dist/src/abstracts/BaseInteraction.d.ts +166 -0
  40. package/dist/src/abstracts/BaseInteraction.d.ts.map +1 -0
  41. package/dist/src/abstracts/BaseInteraction.js +274 -0
  42. package/dist/src/abstracts/BaseInteraction.js.map +1 -0
  43. package/dist/src/abstracts/BaseListener.d.ts +13 -0
  44. package/dist/src/abstracts/BaseListener.d.ts.map +1 -0
  45. package/dist/src/abstracts/BaseListener.js +8 -0
  46. package/dist/src/abstracts/BaseListener.js.map +1 -0
  47. package/dist/src/abstracts/BaseMessageInteractiveComponent.d.ts +41 -0
  48. package/dist/src/abstracts/BaseMessageInteractiveComponent.d.ts.map +1 -0
  49. package/dist/src/abstracts/BaseMessageInteractiveComponent.js +35 -0
  50. package/dist/src/abstracts/BaseMessageInteractiveComponent.js.map +1 -0
  51. package/dist/src/abstracts/BaseModalComponent.d.ts +9 -0
  52. package/dist/src/abstracts/BaseModalComponent.d.ts.map +1 -0
  53. package/dist/src/abstracts/BaseModalComponent.js +5 -0
  54. package/dist/src/abstracts/BaseModalComponent.js.map +1 -0
  55. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts +58 -0
  56. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts.map +1 -0
  57. package/dist/src/abstracts/GuildThreadOnlyChannel.js +102 -0
  58. package/dist/src/abstracts/GuildThreadOnlyChannel.js.map +1 -0
  59. package/dist/src/abstracts/Plugin.d.ts +49 -0
  60. package/dist/src/abstracts/Plugin.d.ts.map +1 -0
  61. package/dist/src/abstracts/Plugin.js +6 -0
  62. package/dist/src/abstracts/Plugin.js.map +1 -0
  63. package/dist/src/adapters/bun/index.d.ts +13 -0
  64. package/dist/src/adapters/bun/index.d.ts.map +1 -0
  65. package/dist/src/adapters/bun/index.js +16 -0
  66. package/dist/src/adapters/bun/index.js.map +1 -0
  67. package/dist/src/adapters/fetch/index.d.ts +11 -0
  68. package/dist/src/adapters/fetch/index.d.ts.map +1 -0
  69. package/dist/src/adapters/fetch/index.js +50 -0
  70. package/dist/src/adapters/fetch/index.js.map +1 -0
  71. package/dist/src/adapters/node/index.d.ts +13 -0
  72. package/dist/src/adapters/node/index.d.ts.map +1 -0
  73. package/dist/src/adapters/node/index.js +17 -0
  74. package/dist/src/adapters/node/index.js.map +1 -0
  75. package/dist/src/classes/Client.d.ts +253 -0
  76. package/dist/src/classes/Client.d.ts.map +1 -0
  77. package/dist/src/classes/Client.js +419 -0
  78. package/dist/src/classes/Client.js.map +1 -0
  79. package/dist/src/classes/Command.d.ts +44 -0
  80. package/dist/src/classes/Command.d.ts.map +1 -0
  81. package/dist/src/classes/Command.js +53 -0
  82. package/dist/src/classes/Command.js.map +1 -0
  83. package/dist/src/classes/CommandWithSubcommandGroups.d.ts +22 -0
  84. package/dist/src/classes/CommandWithSubcommandGroups.d.ts.map +1 -0
  85. package/dist/src/classes/CommandWithSubcommandGroups.js +27 -0
  86. package/dist/src/classes/CommandWithSubcommandGroups.js.map +1 -0
  87. package/dist/src/classes/CommandWithSubcommands.d.ts +19 -0
  88. package/dist/src/classes/CommandWithSubcommands.d.ts.map +1 -0
  89. package/dist/src/classes/CommandWithSubcommands.js +19 -0
  90. package/dist/src/classes/CommandWithSubcommands.js.map +1 -0
  91. package/dist/src/classes/Embed.d.ts +61 -0
  92. package/dist/src/classes/Embed.d.ts.map +1 -0
  93. package/dist/src/classes/Embed.js +75 -0
  94. package/dist/src/classes/Embed.js.map +1 -0
  95. package/dist/src/classes/Listener.d.ts +392 -0
  96. package/dist/src/classes/Listener.d.ts.map +1 -0
  97. package/dist/src/classes/Listener.js +1034 -0
  98. package/dist/src/classes/Listener.js.map +1 -0
  99. package/dist/src/classes/Modal.d.ts +37 -0
  100. package/dist/src/classes/Modal.d.ts.map +1 -0
  101. package/dist/src/classes/Modal.js +28 -0
  102. package/dist/src/classes/Modal.js.map +1 -0
  103. package/dist/src/classes/RequestClient.d.ts +106 -0
  104. package/dist/src/classes/RequestClient.d.ts.map +1 -0
  105. package/dist/src/classes/RequestClient.js +451 -0
  106. package/dist/src/classes/RequestClient.js.map +1 -0
  107. package/dist/src/classes/components/Button.d.ts +52 -0
  108. package/dist/src/classes/components/Button.d.ts.map +1 -0
  109. package/dist/src/classes/components/Button.js +71 -0
  110. package/dist/src/classes/components/Button.js.map +1 -0
  111. package/dist/src/classes/components/ChannelSelectMenu.d.ts +17 -0
  112. package/dist/src/classes/components/ChannelSelectMenu.d.ts.map +1 -0
  113. package/dist/src/classes/components/ChannelSelectMenu.js +22 -0
  114. package/dist/src/classes/components/ChannelSelectMenu.js.map +1 -0
  115. package/dist/src/classes/components/Checkbox.d.ts +12 -0
  116. package/dist/src/classes/components/Checkbox.d.ts.map +1 -0
  117. package/dist/src/classes/components/Checkbox.js +20 -0
  118. package/dist/src/classes/components/Checkbox.js.map +1 -0
  119. package/dist/src/classes/components/CheckboxGroup.d.ts +24 -0
  120. package/dist/src/classes/components/CheckboxGroup.d.ts.map +1 -0
  121. package/dist/src/classes/components/CheckboxGroup.js +37 -0
  122. package/dist/src/classes/components/CheckboxGroup.js.map +1 -0
  123. package/dist/src/classes/components/Container.d.ts +28 -0
  124. package/dist/src/classes/components/Container.d.ts.map +1 -0
  125. package/dist/src/classes/components/Container.js +38 -0
  126. package/dist/src/classes/components/Container.js.map +1 -0
  127. package/dist/src/classes/components/File.d.ts +21 -0
  128. package/dist/src/classes/components/File.d.ts.map +1 -0
  129. package/dist/src/classes/components/File.js +36 -0
  130. package/dist/src/classes/components/File.js.map +1 -0
  131. package/dist/src/classes/components/FileUpload.d.ts +23 -0
  132. package/dist/src/classes/components/FileUpload.d.ts.map +1 -0
  133. package/dist/src/classes/components/FileUpload.js +36 -0
  134. package/dist/src/classes/components/FileUpload.js.map +1 -0
  135. package/dist/src/classes/components/Label.d.ts +31 -0
  136. package/dist/src/classes/components/Label.d.ts.map +1 -0
  137. package/dist/src/classes/components/Label.js +35 -0
  138. package/dist/src/classes/components/Label.js.map +1 -0
  139. package/dist/src/classes/components/MediaGallery.d.ts +22 -0
  140. package/dist/src/classes/components/MediaGallery.d.ts.map +1 -0
  141. package/dist/src/classes/components/MediaGallery.js +32 -0
  142. package/dist/src/classes/components/MediaGallery.js.map +1 -0
  143. package/dist/src/classes/components/MentionableSelectMenu.d.ts +15 -0
  144. package/dist/src/classes/components/MentionableSelectMenu.d.ts.map +1 -0
  145. package/dist/src/classes/components/MentionableSelectMenu.js +20 -0
  146. package/dist/src/classes/components/MentionableSelectMenu.js.map +1 -0
  147. package/dist/src/classes/components/RadioGroup.d.ts +24 -0
  148. package/dist/src/classes/components/RadioGroup.d.ts.map +1 -0
  149. package/dist/src/classes/components/RadioGroup.js +33 -0
  150. package/dist/src/classes/components/RadioGroup.js.map +1 -0
  151. package/dist/src/classes/components/RoleSelectMenu.d.ts +15 -0
  152. package/dist/src/classes/components/RoleSelectMenu.d.ts.map +1 -0
  153. package/dist/src/classes/components/RoleSelectMenu.js +20 -0
  154. package/dist/src/classes/components/RoleSelectMenu.js.map +1 -0
  155. package/dist/src/classes/components/Row.d.ts +28 -0
  156. package/dist/src/classes/components/Row.d.ts.map +1 -0
  157. package/dist/src/classes/components/Row.js +44 -0
  158. package/dist/src/classes/components/Row.js.map +1 -0
  159. package/dist/src/classes/components/Section.d.ts +23 -0
  160. package/dist/src/classes/components/Section.d.ts.map +1 -0
  161. package/dist/src/classes/components/Section.js +37 -0
  162. package/dist/src/classes/components/Section.js.map +1 -0
  163. package/dist/src/classes/components/Separator.d.ts +22 -0
  164. package/dist/src/classes/components/Separator.d.ts.map +1 -0
  165. package/dist/src/classes/components/Separator.js +33 -0
  166. package/dist/src/classes/components/Separator.js.map +1 -0
  167. package/dist/src/classes/components/StringSelectMenu.d.ts +15 -0
  168. package/dist/src/classes/components/StringSelectMenu.d.ts.map +1 -0
  169. package/dist/src/classes/components/StringSelectMenu.js +19 -0
  170. package/dist/src/classes/components/StringSelectMenu.js.map +1 -0
  171. package/dist/src/classes/components/TextDisplay.d.ts +10 -0
  172. package/dist/src/classes/components/TextDisplay.d.ts.map +1 -0
  173. package/dist/src/classes/components/TextDisplay.js +22 -0
  174. package/dist/src/classes/components/TextDisplay.js.map +1 -0
  175. package/dist/src/classes/components/TextInput.d.ts +53 -0
  176. package/dist/src/classes/components/TextInput.d.ts.map +1 -0
  177. package/dist/src/classes/components/TextInput.js +57 -0
  178. package/dist/src/classes/components/TextInput.js.map +1 -0
  179. package/dist/src/classes/components/Thumbnail.d.ts +14 -0
  180. package/dist/src/classes/components/Thumbnail.d.ts.map +1 -0
  181. package/dist/src/classes/components/Thumbnail.js +27 -0
  182. package/dist/src/classes/components/Thumbnail.js.map +1 -0
  183. package/dist/src/classes/components/UserSelectMenu.d.ts +15 -0
  184. package/dist/src/classes/components/UserSelectMenu.d.ts.map +1 -0
  185. package/dist/src/classes/components/UserSelectMenu.js +20 -0
  186. package/dist/src/classes/components/UserSelectMenu.js.map +1 -0
  187. package/dist/src/errors/BaseError.d.ts +3 -0
  188. package/dist/src/errors/BaseError.d.ts.map +1 -0
  189. package/dist/src/errors/BaseError.js +3 -0
  190. package/dist/src/errors/BaseError.js.map +1 -0
  191. package/dist/src/errors/DiscordError.d.ts +25 -0
  192. package/dist/src/errors/DiscordError.d.ts.map +1 -0
  193. package/dist/src/errors/DiscordError.js +31 -0
  194. package/dist/src/errors/DiscordError.js.map +1 -0
  195. package/dist/src/errors/RatelimitError.d.ts +15 -0
  196. package/dist/src/errors/RatelimitError.d.ts.map +1 -0
  197. package/dist/src/errors/RatelimitError.js +18 -0
  198. package/dist/src/errors/RatelimitError.js.map +1 -0
  199. package/dist/src/functions/channelFactory.d.ts +14 -0
  200. package/dist/src/functions/channelFactory.d.ts.map +1 -0
  201. package/dist/src/functions/channelFactory.js +39 -0
  202. package/dist/src/functions/channelFactory.js.map +1 -0
  203. package/dist/src/functions/enforceChoicesLimit.d.ts +3 -0
  204. package/dist/src/functions/enforceChoicesLimit.d.ts.map +1 -0
  205. package/dist/src/functions/enforceChoicesLimit.js +17 -0
  206. package/dist/src/functions/enforceChoicesLimit.js.map +1 -0
  207. package/dist/src/functions/errorsMapper.d.ts +14 -0
  208. package/dist/src/functions/errorsMapper.d.ts.map +1 -0
  209. package/dist/src/functions/errorsMapper.js +46 -0
  210. package/dist/src/functions/errorsMapper.js.map +1 -0
  211. package/dist/src/index.d.ts +93 -0
  212. package/dist/src/index.d.ts.map +1 -0
  213. package/dist/src/index.js +100 -0
  214. package/dist/src/index.js.map +1 -0
  215. package/dist/src/internals/AutocompleteInteraction.d.ts +43 -0
  216. package/dist/src/internals/AutocompleteInteraction.d.ts.map +1 -0
  217. package/dist/src/internals/AutocompleteInteraction.js +73 -0
  218. package/dist/src/internals/AutocompleteInteraction.js.map +1 -0
  219. package/dist/src/internals/ButtonInteraction.d.ts +8 -0
  220. package/dist/src/internals/ButtonInteraction.d.ts.map +1 -0
  221. package/dist/src/internals/ButtonInteraction.js +16 -0
  222. package/dist/src/internals/ButtonInteraction.js.map +1 -0
  223. package/dist/src/internals/ChannelSelectMenuInteraction.d.ts +8 -0
  224. package/dist/src/internals/ChannelSelectMenuInteraction.d.ts.map +1 -0
  225. package/dist/src/internals/ChannelSelectMenuInteraction.js +11 -0
  226. package/dist/src/internals/ChannelSelectMenuInteraction.js.map +1 -0
  227. package/dist/src/internals/CommandHandler.d.ts +13 -0
  228. package/dist/src/internals/CommandHandler.d.ts.map +1 -0
  229. package/dist/src/internals/CommandHandler.js +143 -0
  230. package/dist/src/internals/CommandHandler.js.map +1 -0
  231. package/dist/src/internals/CommandInteraction.d.ts +26 -0
  232. package/dist/src/internals/CommandInteraction.d.ts.map +1 -0
  233. package/dist/src/internals/CommandInteraction.js +60 -0
  234. package/dist/src/internals/CommandInteraction.js.map +1 -0
  235. package/dist/src/internals/ComponentHandler.d.ts +14 -0
  236. package/dist/src/internals/ComponentHandler.d.ts.map +1 -0
  237. package/dist/src/internals/ComponentHandler.js +183 -0
  238. package/dist/src/internals/ComponentHandler.js.map +1 -0
  239. package/dist/src/internals/EmojiHandler.d.ts +19 -0
  240. package/dist/src/internals/EmojiHandler.d.ts.map +1 -0
  241. package/dist/src/internals/EmojiHandler.js +34 -0
  242. package/dist/src/internals/EmojiHandler.js.map +1 -0
  243. package/dist/src/internals/EventHandler.d.ts +22 -0
  244. package/dist/src/internals/EventHandler.d.ts.map +1 -0
  245. package/dist/src/internals/EventHandler.js +23 -0
  246. package/dist/src/internals/EventHandler.js.map +1 -0
  247. package/dist/src/internals/EventQueue.d.ts +59 -0
  248. package/dist/src/internals/EventQueue.d.ts.map +1 -0
  249. package/dist/src/internals/EventQueue.js +131 -0
  250. package/dist/src/internals/EventQueue.js.map +1 -0
  251. package/dist/src/internals/FieldsHandler.d.ts +68 -0
  252. package/dist/src/internals/FieldsHandler.d.ts.map +1 -0
  253. package/dist/src/internals/FieldsHandler.js +146 -0
  254. package/dist/src/internals/FieldsHandler.js.map +1 -0
  255. package/dist/src/internals/MentionableSelectMenuInteraction.d.ts +9 -0
  256. package/dist/src/internals/MentionableSelectMenuInteraction.d.ts.map +1 -0
  257. package/dist/src/internals/MentionableSelectMenuInteraction.js +15 -0
  258. package/dist/src/internals/MentionableSelectMenuInteraction.js.map +1 -0
  259. package/dist/src/internals/ModalHandler.d.ts +17 -0
  260. package/dist/src/internals/ModalHandler.d.ts.map +1 -0
  261. package/dist/src/internals/ModalHandler.js +35 -0
  262. package/dist/src/internals/ModalHandler.js.map +1 -0
  263. package/dist/src/internals/ModalInteraction.d.ts +21 -0
  264. package/dist/src/internals/ModalInteraction.d.ts.map +1 -0
  265. package/dist/src/internals/ModalInteraction.js +41 -0
  266. package/dist/src/internals/ModalInteraction.js.map +1 -0
  267. package/dist/src/internals/OptionsHandler.d.ts +108 -0
  268. package/dist/src/internals/OptionsHandler.d.ts.map +1 -0
  269. package/dist/src/internals/OptionsHandler.js +237 -0
  270. package/dist/src/internals/OptionsHandler.js.map +1 -0
  271. package/dist/src/internals/RoleSelectMenuInteraction.d.ts +9 -0
  272. package/dist/src/internals/RoleSelectMenuInteraction.d.ts.map +1 -0
  273. package/dist/src/internals/RoleSelectMenuInteraction.js +14 -0
  274. package/dist/src/internals/RoleSelectMenuInteraction.js.map +1 -0
  275. package/dist/src/internals/StringSelectMenuInteraction.d.ts +9 -0
  276. package/dist/src/internals/StringSelectMenuInteraction.d.ts.map +1 -0
  277. package/dist/src/internals/StringSelectMenuInteraction.js +14 -0
  278. package/dist/src/internals/StringSelectMenuInteraction.js.map +1 -0
  279. package/dist/src/internals/TemporaryListenerManager.d.ts +20 -0
  280. package/dist/src/internals/TemporaryListenerManager.d.ts.map +1 -0
  281. package/dist/src/internals/TemporaryListenerManager.js +59 -0
  282. package/dist/src/internals/TemporaryListenerManager.js.map +1 -0
  283. package/dist/src/internals/UserSelectMenuInteraction.d.ts +9 -0
  284. package/dist/src/internals/UserSelectMenuInteraction.d.ts.map +1 -0
  285. package/dist/src/internals/UserSelectMenuInteraction.js +14 -0
  286. package/dist/src/internals/UserSelectMenuInteraction.js.map +1 -0
  287. package/dist/src/permissions.d.ts +56 -0
  288. package/dist/src/permissions.d.ts.map +1 -0
  289. package/dist/src/permissions.js +4 -0
  290. package/dist/src/permissions.js.map +1 -0
  291. package/dist/src/plugins/client-manager/ClientManager.d.ts +151 -0
  292. package/dist/src/plugins/client-manager/ClientManager.d.ts.map +1 -0
  293. package/dist/src/plugins/client-manager/ClientManager.js +253 -0
  294. package/dist/src/plugins/client-manager/ClientManager.js.map +1 -0
  295. package/dist/src/plugins/client-manager/index.d.ts +2 -0
  296. package/dist/src/plugins/client-manager/index.d.ts.map +1 -0
  297. package/dist/src/plugins/client-manager/index.js +2 -0
  298. package/dist/src/plugins/client-manager/index.js.map +1 -0
  299. package/dist/src/plugins/command-data/CommandDataPlugin.d.ts +16 -0
  300. package/dist/src/plugins/command-data/CommandDataPlugin.d.ts.map +1 -0
  301. package/dist/src/plugins/command-data/CommandDataPlugin.js +43 -0
  302. package/dist/src/plugins/command-data/CommandDataPlugin.js.map +1 -0
  303. package/dist/src/plugins/command-data/index.d.ts +2 -0
  304. package/dist/src/plugins/command-data/index.d.ts.map +1 -0
  305. package/dist/src/plugins/command-data/index.js +2 -0
  306. package/dist/src/plugins/command-data/index.js.map +1 -0
  307. package/dist/src/plugins/gateway/BabyCache.d.ts +16 -0
  308. package/dist/src/plugins/gateway/BabyCache.d.ts.map +1 -0
  309. package/dist/src/plugins/gateway/BabyCache.js +53 -0
  310. package/dist/src/plugins/gateway/BabyCache.js.map +1 -0
  311. package/dist/src/plugins/gateway/GatewayPlugin.d.ts +90 -0
  312. package/dist/src/plugins/gateway/GatewayPlugin.d.ts.map +1 -0
  313. package/dist/src/plugins/gateway/GatewayPlugin.js +516 -0
  314. package/dist/src/plugins/gateway/GatewayPlugin.js.map +1 -0
  315. package/dist/src/plugins/gateway/InteractionEventListener.d.ts +8 -0
  316. package/dist/src/plugins/gateway/InteractionEventListener.d.ts.map +1 -0
  317. package/dist/src/plugins/gateway/InteractionEventListener.js +9 -0
  318. package/dist/src/plugins/gateway/InteractionEventListener.js.map +1 -0
  319. package/dist/src/plugins/gateway/index.d.ts +7 -0
  320. package/dist/src/plugins/gateway/index.d.ts.map +1 -0
  321. package/dist/src/plugins/gateway/index.js +7 -0
  322. package/dist/src/plugins/gateway/index.js.map +1 -0
  323. package/dist/src/plugins/gateway/types.d.ts +130 -0
  324. package/dist/src/plugins/gateway/types.d.ts.map +1 -0
  325. package/dist/src/plugins/gateway/types.js +5 -0
  326. package/dist/src/plugins/gateway/types.js.map +1 -0
  327. package/dist/src/plugins/gateway/utils/heartbeat.d.ts +18 -0
  328. package/dist/src/plugins/gateway/utils/heartbeat.d.ts.map +1 -0
  329. package/dist/src/plugins/gateway/utils/heartbeat.js +33 -0
  330. package/dist/src/plugins/gateway/utils/heartbeat.js.map +1 -0
  331. package/dist/src/plugins/gateway/utils/monitor.d.ts +37 -0
  332. package/dist/src/plugins/gateway/utils/monitor.d.ts.map +1 -0
  333. package/dist/src/plugins/gateway/utils/monitor.js +88 -0
  334. package/dist/src/plugins/gateway/utils/monitor.js.map +1 -0
  335. package/dist/src/plugins/gateway/utils/payload.d.ts +24 -0
  336. package/dist/src/plugins/gateway/utils/payload.d.ts.map +1 -0
  337. package/dist/src/plugins/gateway/utils/payload.js +65 -0
  338. package/dist/src/plugins/gateway/utils/payload.js.map +1 -0
  339. package/dist/src/plugins/gateway/utils/rateLimit.d.ts +41 -0
  340. package/dist/src/plugins/gateway/utils/rateLimit.d.ts.map +1 -0
  341. package/dist/src/plugins/gateway/utils/rateLimit.js +61 -0
  342. package/dist/src/plugins/gateway/utils/rateLimit.js.map +1 -0
  343. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts +30 -0
  344. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts.map +1 -0
  345. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js +80 -0
  346. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js.map +1 -0
  347. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.d.ts +9 -0
  348. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.d.ts.map +1 -0
  349. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.js +7 -0
  350. package/dist/src/plugins/gateway-forwarder/ShardedGatewayForwarderPlugin.js.map +1 -0
  351. package/dist/src/plugins/gateway-forwarder/index.d.ts +4 -0
  352. package/dist/src/plugins/gateway-forwarder/index.d.ts.map +1 -0
  353. package/dist/src/plugins/gateway-forwarder/index.js +4 -0
  354. package/dist/src/plugins/gateway-forwarder/index.js.map +1 -0
  355. package/dist/src/plugins/linked-roles/LinkedRoles.d.ts +70 -0
  356. package/dist/src/plugins/linked-roles/LinkedRoles.d.ts.map +1 -0
  357. package/dist/src/plugins/linked-roles/LinkedRoles.js +211 -0
  358. package/dist/src/plugins/linked-roles/LinkedRoles.js.map +1 -0
  359. package/dist/src/plugins/linked-roles/index.d.ts +3 -0
  360. package/dist/src/plugins/linked-roles/index.d.ts.map +1 -0
  361. package/dist/src/plugins/linked-roles/index.js +3 -0
  362. package/dist/src/plugins/linked-roles/index.js.map +1 -0
  363. package/dist/src/plugins/linked-roles/types.d.ts +94 -0
  364. package/dist/src/plugins/linked-roles/types.d.ts.map +1 -0
  365. package/dist/src/plugins/linked-roles/types.js +39 -0
  366. package/dist/src/plugins/linked-roles/types.js.map +1 -0
  367. package/dist/src/plugins/paginator/GoToPageModal.d.ts +18 -0
  368. package/dist/src/plugins/paginator/GoToPageModal.d.ts.map +1 -0
  369. package/dist/src/plugins/paginator/GoToPageModal.js +56 -0
  370. package/dist/src/plugins/paginator/GoToPageModal.js.map +1 -0
  371. package/dist/src/plugins/paginator/Paginator.d.ts +53 -0
  372. package/dist/src/plugins/paginator/Paginator.d.ts.map +1 -0
  373. package/dist/src/plugins/paginator/Paginator.js +183 -0
  374. package/dist/src/plugins/paginator/Paginator.js.map +1 -0
  375. package/dist/src/plugins/paginator/index.d.ts +11 -0
  376. package/dist/src/plugins/paginator/index.d.ts.map +1 -0
  377. package/dist/src/plugins/paginator/index.js +11 -0
  378. package/dist/src/plugins/paginator/index.js.map +1 -0
  379. package/dist/src/plugins/sharding/ShardingPlugin.d.ts +44 -0
  380. package/dist/src/plugins/sharding/ShardingPlugin.d.ts.map +1 -0
  381. package/dist/src/plugins/sharding/ShardingPlugin.js +119 -0
  382. package/dist/src/plugins/sharding/ShardingPlugin.js.map +1 -0
  383. package/dist/src/plugins/sharding/index.d.ts +3 -0
  384. package/dist/src/plugins/sharding/index.d.ts.map +1 -0
  385. package/dist/src/plugins/sharding/index.js +3 -0
  386. package/dist/src/plugins/sharding/index.js.map +1 -0
  387. package/dist/src/plugins/voice/GuildDeleteListener.d.ts +7 -0
  388. package/dist/src/plugins/voice/GuildDeleteListener.d.ts.map +1 -0
  389. package/dist/src/plugins/voice/GuildDeleteListener.js +11 -0
  390. package/dist/src/plugins/voice/GuildDeleteListener.js.map +1 -0
  391. package/dist/src/plugins/voice/VoicePlugin.d.ts +15 -0
  392. package/dist/src/plugins/voice/VoicePlugin.d.ts.map +1 -0
  393. package/dist/src/plugins/voice/VoicePlugin.js +58 -0
  394. package/dist/src/plugins/voice/VoicePlugin.js.map +1 -0
  395. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts +10 -0
  396. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts.map +1 -0
  397. package/dist/src/plugins/voice/VoiceServerUpdateListener.js +16 -0
  398. package/dist/src/plugins/voice/VoiceServerUpdateListener.js.map +1 -0
  399. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts +10 -0
  400. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts.map +1 -0
  401. package/dist/src/plugins/voice/VoiceStateUpdateListener.js +21 -0
  402. package/dist/src/plugins/voice/VoiceStateUpdateListener.js.map +1 -0
  403. package/dist/src/plugins/voice/index.d.ts +2 -0
  404. package/dist/src/plugins/voice/index.d.ts.map +1 -0
  405. package/dist/src/plugins/voice/index.js +2 -0
  406. package/dist/src/plugins/voice/index.js.map +1 -0
  407. package/dist/src/structures/DmChannel.d.ts +22 -0
  408. package/dist/src/structures/DmChannel.d.ts.map +1 -0
  409. package/dist/src/structures/DmChannel.js +33 -0
  410. package/dist/src/structures/DmChannel.js.map +1 -0
  411. package/dist/src/structures/Emoji.d.ts +75 -0
  412. package/dist/src/structures/Emoji.d.ts.map +1 -0
  413. package/dist/src/structures/Emoji.js +156 -0
  414. package/dist/src/structures/Emoji.js.map +1 -0
  415. package/dist/src/structures/GroupDmChannel.d.ts +75 -0
  416. package/dist/src/structures/GroupDmChannel.d.ts.map +1 -0
  417. package/dist/src/structures/GroupDmChannel.js +131 -0
  418. package/dist/src/structures/GroupDmChannel.js.map +1 -0
  419. package/dist/src/structures/Guild.d.ts +338 -0
  420. package/dist/src/structures/Guild.d.ts.map +1 -0
  421. package/dist/src/structures/Guild.js +715 -0
  422. package/dist/src/structures/Guild.js.map +1 -0
  423. package/dist/src/structures/GuildAnnouncementChannel.d.ts +21 -0
  424. package/dist/src/structures/GuildAnnouncementChannel.d.ts.map +1 -0
  425. package/dist/src/structures/GuildAnnouncementChannel.js +35 -0
  426. package/dist/src/structures/GuildAnnouncementChannel.js.map +1 -0
  427. package/dist/src/structures/GuildCategoryChannel.d.ts +23 -0
  428. package/dist/src/structures/GuildCategoryChannel.d.ts.map +1 -0
  429. package/dist/src/structures/GuildCategoryChannel.js +34 -0
  430. package/dist/src/structures/GuildCategoryChannel.js.map +1 -0
  431. package/dist/src/structures/GuildForumChannel.d.ts +14 -0
  432. package/dist/src/structures/GuildForumChannel.d.ts.map +1 -0
  433. package/dist/src/structures/GuildForumChannel.js +15 -0
  434. package/dist/src/structures/GuildForumChannel.js.map +1 -0
  435. package/dist/src/structures/GuildMediaChannel.d.ts +9 -0
  436. package/dist/src/structures/GuildMediaChannel.d.ts.map +1 -0
  437. package/dist/src/structures/GuildMediaChannel.js +7 -0
  438. package/dist/src/structures/GuildMediaChannel.js.map +1 -0
  439. package/dist/src/structures/GuildMember.d.ts +145 -0
  440. package/dist/src/structures/GuildMember.d.ts.map +1 -0
  441. package/dist/src/structures/GuildMember.js +320 -0
  442. package/dist/src/structures/GuildMember.js.map +1 -0
  443. package/dist/src/structures/GuildScheduledEvent.d.ts +121 -0
  444. package/dist/src/structures/GuildScheduledEvent.d.ts.map +1 -0
  445. package/dist/src/structures/GuildScheduledEvent.js +228 -0
  446. package/dist/src/structures/GuildScheduledEvent.js.map +1 -0
  447. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts +40 -0
  448. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts.map +1 -0
  449. package/dist/src/structures/GuildStageOrVoiceChannel.js +63 -0
  450. package/dist/src/structures/GuildStageOrVoiceChannel.js.map +1 -0
  451. package/dist/src/structures/GuildTextChannel.d.ts +24 -0
  452. package/dist/src/structures/GuildTextChannel.d.ts.map +1 -0
  453. package/dist/src/structures/GuildTextChannel.js +41 -0
  454. package/dist/src/structures/GuildTextChannel.js.map +1 -0
  455. package/dist/src/structures/GuildThreadChannel.d.ts +90 -0
  456. package/dist/src/structures/GuildThreadChannel.d.ts.map +1 -0
  457. package/dist/src/structures/GuildThreadChannel.js +165 -0
  458. package/dist/src/structures/GuildThreadChannel.js.map +1 -0
  459. package/dist/src/structures/Message.d.ts +174 -0
  460. package/dist/src/structures/Message.d.ts.map +1 -0
  461. package/dist/src/structures/Message.js +417 -0
  462. package/dist/src/structures/Message.js.map +1 -0
  463. package/dist/src/structures/Poll.d.ts +29 -0
  464. package/dist/src/structures/Poll.d.ts.map +1 -0
  465. package/dist/src/structures/Poll.js +51 -0
  466. package/dist/src/structures/Poll.js.map +1 -0
  467. package/dist/src/structures/Role.d.ts +151 -0
  468. package/dist/src/structures/Role.d.ts.map +1 -0
  469. package/dist/src/structures/Role.js +291 -0
  470. package/dist/src/structures/Role.js.map +1 -0
  471. package/dist/src/structures/ThreadMember.d.ts +40 -0
  472. package/dist/src/structures/ThreadMember.d.ts.map +1 -0
  473. package/dist/src/structures/ThreadMember.js +79 -0
  474. package/dist/src/structures/ThreadMember.js.map +1 -0
  475. package/dist/src/structures/User.d.ts +104 -0
  476. package/dist/src/structures/User.d.ts.map +1 -0
  477. package/dist/src/structures/User.js +199 -0
  478. package/dist/src/structures/User.js.map +1 -0
  479. package/dist/src/structures/Webhook.d.ts +160 -0
  480. package/dist/src/structures/Webhook.d.ts.map +1 -0
  481. package/dist/src/structures/Webhook.js +287 -0
  482. package/dist/src/structures/Webhook.js.map +1 -0
  483. package/dist/src/types/index.d.ts +199 -0
  484. package/dist/src/types/index.d.ts.map +1 -0
  485. package/dist/src/types/index.js +2 -0
  486. package/dist/src/types/index.js.map +1 -0
  487. package/dist/src/types/listeners.d.ts +579 -0
  488. package/dist/src/types/listeners.d.ts.map +1 -0
  489. package/dist/src/types/listeners.js +14 -0
  490. package/dist/src/types/listeners.js.map +1 -0
  491. package/dist/src/utils/LRUCache.d.ts +46 -0
  492. package/dist/src/utils/LRUCache.d.ts.map +1 -0
  493. package/dist/src/utils/LRUCache.js +78 -0
  494. package/dist/src/utils/LRUCache.js.map +1 -0
  495. package/dist/src/utils/cdn.d.ts +31 -0
  496. package/dist/src/utils/cdn.d.ts.map +1 -0
  497. package/dist/src/utils/cdn.js +18 -0
  498. package/dist/src/utils/cdn.js.map +1 -0
  499. package/dist/src/utils/customIdParser.d.ts +3 -0
  500. package/dist/src/utils/customIdParser.d.ts.map +1 -0
  501. package/dist/src/utils/customIdParser.js +38 -0
  502. package/dist/src/utils/customIdParser.js.map +1 -0
  503. package/dist/src/utils/index.d.ts +6 -0
  504. package/dist/src/utils/index.d.ts.map +1 -0
  505. package/dist/src/utils/index.js +6 -0
  506. package/dist/src/utils/index.js.map +1 -0
  507. package/dist/src/utils/payload.d.ts +4 -0
  508. package/dist/src/utils/payload.d.ts.map +1 -0
  509. package/dist/src/utils/payload.js +61 -0
  510. package/dist/src/utils/payload.js.map +1 -0
  511. package/dist/src/utils/proxy.d.ts +27 -0
  512. package/dist/src/utils/proxy.d.ts.map +1 -0
  513. package/dist/src/utils/proxy.js +135 -0
  514. package/dist/src/utils/proxy.js.map +1 -0
  515. package/dist/src/utils/verification.d.ts +4 -0
  516. package/dist/src/utils/verification.d.ts.map +1 -0
  517. package/dist/src/utils/verification.js +52 -0
  518. package/dist/src/utils/verification.js.map +1 -0
  519. package/dist/tsconfig.tsbuildinfo +1 -0
  520. package/package.json +43 -0
@@ -0,0 +1,151 @@
1
+ import type { Context, Route } from "../../abstracts/Plugin.js";
2
+ import { Client, type ClientOptions } from "../../classes/Client.js";
3
+ /**
4
+ * Credentials for a single application in the ClientManager
5
+ */
6
+ export interface ApplicationCredentials {
7
+ /**
8
+ * The client ID of the application - must be a valid Discord snowflake
9
+ */
10
+ clientId: string;
11
+ /**
12
+ * The public key of the app, used for interaction verification
13
+ * Can be a single key or an array of keys
14
+ */
15
+ publicKey: string | string[];
16
+ /**
17
+ * The token of the bot
18
+ */
19
+ token: string;
20
+ }
21
+ export interface ClientSetupOptions {
22
+ /**
23
+ * Whether to recreate the client if it already exists
24
+ */
25
+ recreate?: boolean;
26
+ /**
27
+ * Whether to set the interactions URL on the Discord Developer Portal
28
+ */
29
+ setInteractionsUrlOnDevPortal?: boolean;
30
+ /**
31
+ * Whether to set the events URL on the Discord Developer Portal
32
+ */
33
+ setEventsUrlOnDevPortal?: boolean;
34
+ }
35
+ /**
36
+ * Options for the ClientManager
37
+ */
38
+ export interface ClientManagerOptions {
39
+ /**
40
+ * The base URL of the applications to mount the proxy at
41
+ */
42
+ baseUrl: string;
43
+ /**
44
+ * The deploy secret of the applications
45
+ */
46
+ deploySecret: string;
47
+ /**
48
+ * Shared options that apply to all applications
49
+ */
50
+ sharedOptions: Omit<ClientOptions, "baseUrl" | "deploySecret" | "clientId" | "publicKey" | "token">;
51
+ /**
52
+ * Array of application credentials.
53
+ * If you need dynamic application loading (e.g., from a database),
54
+ * extend ClientManager and override getClient/getAllClients/getClientIds instead.
55
+ */
56
+ applications?: ApplicationCredentials[];
57
+ /**
58
+ * The initial setup options for the clients, this will be passed to clientManager#setupClient
59
+ */
60
+ initialSetupOptions?: ClientSetupOptions;
61
+ }
62
+ /**
63
+ * Manages multiple Discord applications, routing requests to the appropriate client
64
+ * based on the client ID in the URL path (/:clientId/*)
65
+ *
66
+ * To use with a database, extend this class and override:
67
+ * - getClient(clientId) - Return the client for a specific ID (or create it)
68
+ * - getAllClients() - Return all available clients
69
+ * - getClientIds() - Return all available client IDs
70
+ *
71
+ * Then call setupClient(credentials) to create clients on-demand.
72
+ */
73
+ export declare class ClientManager {
74
+ /**
75
+ * The routes that the application manager will handle
76
+ */
77
+ routes: Route[];
78
+ /**
79
+ * The shared deploy secret used for all applications
80
+ */
81
+ protected deploySecret?: string;
82
+ /**
83
+ * The base URL of the applications to mount the proxy at
84
+ */
85
+ protected baseUrl: string;
86
+ /**
87
+ * Shared options that apply to all applications
88
+ * Protected to allow subclasses to use it when creating clients
89
+ */
90
+ protected sharedOptions: Omit<ClientOptions, "baseUrl" | "deploySecret" | "clientId" | "publicKey" | "token">;
91
+ protected clients: Map<string, Client>;
92
+ protected staticApplications: ApplicationCredentials[];
93
+ protected initialHandlers: ConstructorParameters<typeof Client>[1];
94
+ protected initialPlugins: ConstructorParameters<typeof Client>[2];
95
+ /**
96
+ * Creates a new ClientManager
97
+ * @param options Configuration options including shared settings and per-app credentials
98
+ */
99
+ constructor(options: ClientManagerOptions, handlers: ConstructorParameters<typeof Client>[1], plugins: ConstructorParameters<typeof Client>[2]);
100
+ /**
101
+ * Setup a client from credentials.
102
+ *
103
+ * @param credentials The application credentials
104
+ * @param options The setup options for the client
105
+ * @returns A configured Client instance
106
+ */
107
+ setupClient(credentials: ApplicationCredentials, options?: ClientSetupOptions): Promise<Client>;
108
+ /**
109
+ * Set up the routing for the application manager
110
+ */
111
+ protected setupRoutes(): void;
112
+ /**
113
+ * Deploy all applications
114
+ */
115
+ protected handleGlobalDeploy(req: Request): Promise<Response>;
116
+ /**
117
+ * Handle a request and route it to the appropriate client
118
+ * @param req The incoming request
119
+ * @param ctx Optional context (for Cloudflare Workers, etc.)
120
+ */
121
+ handleRequest(req: Request, ctx?: Context): Promise<Response>;
122
+ protected handleProxyRequest(req: Request, ctx?: Context): Promise<Response>;
123
+ /**
124
+ * Get a client by its client ID
125
+ * @param clientId The client ID to look up
126
+ */
127
+ getClient(clientId: string): Client | undefined;
128
+ /**
129
+ * Get all clients that the manager is managing
130
+ */
131
+ getClients(): Client[];
132
+ /**
133
+ * Get all client IDs that the manager is managing
134
+ */
135
+ getClientIds(): string[];
136
+ /**
137
+ * Get all applications
138
+ * You can override this in an extended class to return dynamic applications
139
+ */
140
+ getApplications(): Promise<ApplicationCredentials[]>;
141
+ /**
142
+ * Get an application by its client ID
143
+ * You can override this in an extended class to return dynamic applications
144
+ */
145
+ getApplication(clientId: string): Promise<ApplicationCredentials | undefined>;
146
+ /**
147
+ * Validate if a string is a valid Discord snowflake
148
+ */
149
+ protected isValidClientId(id: string): boolean;
150
+ }
151
+ //# sourceMappingURL=ClientManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientManager.d.ts","sourceRoot":"","sources":["../../../../src/plugins/client-manager/ClientManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ import { Routes } from "discord-api-types/v10";
2
+ import { Client } from "../../classes/Client.js";
3
+ /**
4
+ * Manages multiple Discord applications, routing requests to the appropriate client
5
+ * based on the client ID in the URL path (/:clientId/*)
6
+ *
7
+ * To use with a database, extend this class and override:
8
+ * - getClient(clientId) - Return the client for a specific ID (or create it)
9
+ * - getAllClients() - Return all available clients
10
+ * - getClientIds() - Return all available client IDs
11
+ *
12
+ * Then call setupClient(credentials) to create clients on-demand.
13
+ */
14
+ export class ClientManager {
15
+ /**
16
+ * The routes that the application manager will handle
17
+ */
18
+ routes = [];
19
+ /**
20
+ * The shared deploy secret used for all applications
21
+ */
22
+ deploySecret;
23
+ /**
24
+ * The base URL of the applications to mount the proxy at
25
+ */
26
+ baseUrl;
27
+ /**
28
+ * Shared options that apply to all applications
29
+ * Protected to allow subclasses to use it when creating clients
30
+ */
31
+ sharedOptions;
32
+ clients = new Map();
33
+ staticApplications;
34
+ initialHandlers;
35
+ initialPlugins;
36
+ /**
37
+ * Creates a new ClientManager
38
+ * @param options Configuration options including shared settings and per-app credentials
39
+ */
40
+ constructor(options, handlers, plugins) {
41
+ this.sharedOptions = options.sharedOptions;
42
+ this.deploySecret = options.deploySecret;
43
+ this.baseUrl = options.baseUrl;
44
+ this.staticApplications = options.applications ?? [];
45
+ this.initialHandlers = handlers;
46
+ this.initialPlugins = plugins;
47
+ this.setupRoutes();
48
+ this.getApplications().then(async (applications) => {
49
+ applications.map(async (application) => {
50
+ this.setupClient({
51
+ clientId: application.clientId,
52
+ publicKey: application.publicKey,
53
+ token: application.token
54
+ }, options.initialSetupOptions);
55
+ });
56
+ });
57
+ }
58
+ /**
59
+ * Setup a client from credentials.
60
+ *
61
+ * @param credentials The application credentials
62
+ * @param options The setup options for the client
63
+ * @returns A configured Client instance
64
+ */
65
+ async setupClient(credentials, options = {
66
+ recreate: false,
67
+ setInteractionsUrlOnDevPortal: false,
68
+ setEventsUrlOnDevPortal: false
69
+ }) {
70
+ const existing = this.getClient(credentials.clientId);
71
+ if (existing && !options.recreate) {
72
+ throw new Error(`Client ${credentials.clientId} already exists. If you want to recreate it, pass true to the recreate parameter.`);
73
+ }
74
+ if (existing && options.recreate) {
75
+ this.clients.delete(credentials.clientId);
76
+ }
77
+ if (!this.isValidClientId(credentials.clientId)) {
78
+ throw new Error(`Invalid client ID: ${credentials.clientId}. Client ID must be a valid Discord snowflake (17-19 digits).`);
79
+ }
80
+ const clientOptions = {
81
+ ...this.sharedOptions,
82
+ baseUrl: `${this.baseUrl}/${credentials.clientId}`,
83
+ deploySecret: this.deploySecret,
84
+ clientId: credentials.clientId,
85
+ publicKey: credentials.publicKey,
86
+ token: credentials.token
87
+ };
88
+ const client = new Client(clientOptions, this.initialHandlers, this.initialPlugins);
89
+ this.clients.set(credentials.clientId, client);
90
+ if (options.setInteractionsUrlOnDevPortal ||
91
+ options.setEventsUrlOnDevPortal) {
92
+ await client.rest.patch(Routes.currentApplication(), {
93
+ body: {
94
+ interactions_endpoint_url: options.setInteractionsUrlOnDevPortal
95
+ ? `${this.baseUrl}/${credentials.clientId}/interactions`
96
+ : undefined,
97
+ event_webhooks_url: options.setEventsUrlOnDevPortal
98
+ ? `${this.baseUrl}/${credentials.clientId}/events`
99
+ : undefined
100
+ }
101
+ });
102
+ }
103
+ return client;
104
+ }
105
+ /**
106
+ * Set up the routing for the application manager
107
+ */
108
+ setupRoutes() {
109
+ this.routes.push({
110
+ method: "GET",
111
+ path: "/deploy",
112
+ handler: this.handleGlobalDeploy.bind(this),
113
+ protected: true,
114
+ disabled: !this.deploySecret
115
+ });
116
+ this.routes.push({
117
+ method: "POST",
118
+ path: "/:clientId/*",
119
+ handler: this.handleProxyRequest.bind(this)
120
+ });
121
+ this.routes.push({
122
+ method: "GET",
123
+ path: "/:clientId/*",
124
+ handler: this.handleProxyRequest.bind(this)
125
+ });
126
+ }
127
+ /**
128
+ * Deploy all applications
129
+ */
130
+ async handleGlobalDeploy(req) {
131
+ if (this.deploySecret) {
132
+ const url = new URL(req.url);
133
+ const secret = url.searchParams.get("secret");
134
+ if (secret !== this.deploySecret) {
135
+ await req.text().catch(() => { });
136
+ return new Response("Unauthorized", { status: 401 });
137
+ }
138
+ }
139
+ const results = [];
140
+ const clientIds = this.getClientIds();
141
+ for (const clientId of clientIds) {
142
+ const client = this.getClient(clientId);
143
+ if (!client)
144
+ continue;
145
+ try {
146
+ await client.handleDeployRequest();
147
+ results.push({ clientId, status: "success" });
148
+ }
149
+ catch (error) {
150
+ results.push({
151
+ clientId,
152
+ status: `error: ${error instanceof Error ? error.message : String(error)}`
153
+ });
154
+ }
155
+ }
156
+ return Response.json(results, { status: 200 });
157
+ }
158
+ /**
159
+ * Handle a request and route it to the appropriate client
160
+ * @param req The incoming request
161
+ * @param ctx Optional context (for Cloudflare Workers, etc.)
162
+ */
163
+ async handleRequest(req, ctx) {
164
+ const url = new URL(req.url);
165
+ const baseUrl = new URL(this.baseUrl);
166
+ const basePathname = baseUrl.pathname.replace(/\/$/, "");
167
+ const reqPathname = url.pathname.replace(/\/$/, "");
168
+ if (!reqPathname.startsWith(basePathname)) {
169
+ await req.text().catch(() => { });
170
+ return new Response("Not Found: Invalid base URL", { status: 404 });
171
+ }
172
+ const truePathname = reqPathname.slice(basePathname.length);
173
+ if (truePathname === "/deploy" && req.method === "GET") {
174
+ return this.handleGlobalDeploy(req);
175
+ }
176
+ const pathParts = truePathname.split("/").filter(Boolean);
177
+ if (pathParts.length < 2) {
178
+ await req.text().catch(() => { });
179
+ return new Response("Bad Request: Invalid path format", { status: 400 });
180
+ }
181
+ const clientId = pathParts[0];
182
+ if (!clientId) {
183
+ await req.text().catch(() => { });
184
+ return new Response("Bad Request: Missing client ID", { status: 400 });
185
+ }
186
+ const client = this.getClient(clientId);
187
+ if (!client) {
188
+ await req.text().catch(() => { });
189
+ return new Response(`Not Found: No application with client ID ${clientId}`, {
190
+ status: 404
191
+ });
192
+ }
193
+ const remainingPath = `/${pathParts.slice(1).join("/")}`;
194
+ const route = client.routes.find((r) => r.path === remainingPath && r.method === req.method && !r.disabled);
195
+ if (!route) {
196
+ await req.text().catch(() => { });
197
+ return new Response(`Not Found: No route ${req.method} ${remainingPath}`, {
198
+ status: 404
199
+ });
200
+ }
201
+ if (route.protected) {
202
+ const secret = url.searchParams.get("secret");
203
+ if (secret !== client.options.deploySecret) {
204
+ await req.text().catch(() => { });
205
+ return new Response("Unauthorized", { status: 401 });
206
+ }
207
+ }
208
+ return route.handler(req, ctx);
209
+ }
210
+ async handleProxyRequest(req, ctx) {
211
+ return this.handleRequest(req, ctx);
212
+ }
213
+ /**
214
+ * Get a client by its client ID
215
+ * @param clientId The client ID to look up
216
+ */
217
+ getClient(clientId) {
218
+ return this.clients.get(clientId);
219
+ }
220
+ /**
221
+ * Get all clients that the manager is managing
222
+ */
223
+ getClients() {
224
+ return Array.from(this.clients.values());
225
+ }
226
+ /**
227
+ * Get all client IDs that the manager is managing
228
+ */
229
+ getClientIds() {
230
+ return Array.from(this.clients.keys());
231
+ }
232
+ /**
233
+ * Get all applications
234
+ * You can override this in an extended class to return dynamic applications
235
+ */
236
+ async getApplications() {
237
+ return this.staticApplications;
238
+ }
239
+ /**
240
+ * Get an application by its client ID
241
+ * You can override this in an extended class to return dynamic applications
242
+ */
243
+ async getApplication(clientId) {
244
+ return this.staticApplications.find((app) => app.clientId === clientId);
245
+ }
246
+ /**
247
+ * Validate if a string is a valid Discord snowflake
248
+ */
249
+ isValidClientId(id) {
250
+ return /^\d{17,19}$/.test(id);
251
+ }
252
+ }
253
+ //# sourceMappingURL=ClientManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientManager.js","sourceRoot":"","sources":["../../../../src/plugins/client-manager/ClientManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./ClientManager.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/client-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./ClientManager.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/client-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Plugin } from "../../abstracts/Plugin.js";
2
+ import type { Client } from "../../classes/Client.js";
3
+ /**
4
+ * This plugin is a basic plugin that allows you to get the command data from the client over HTTP.
5
+ * The JSON array provided here is the same as the one you would send to Discord, allowing you to build your own command deployment setup.
6
+ */
7
+ export declare class CommandDataPlugin extends Plugin {
8
+ readonly id = "command-data";
9
+ client?: Client;
10
+ registerClient(client: Client): void;
11
+ registerRoutes(client: Client): void;
12
+ private discordCommandData;
13
+ handleFullCommandDataRequest(): Promise<Response>;
14
+ handleCommandDataRequest(): Promise<Response>;
15
+ }
16
+ //# sourceMappingURL=CommandDataPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandDataPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/command-data/CommandDataPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;IAC5C,QAAQ,CAAC,EAAE,kBAAiB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IAER,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,MAAM,EAAE,MAAM;IAepC,OAAO,CAAC,kBAAkB,CAAuC;IACpD,4BAA4B;IAW5B,wBAAwB;CAQrC"}
@@ -0,0 +1,43 @@
1
+ import { Routes } from "discord-api-types/v10";
2
+ import { Plugin } from "../../abstracts/Plugin.js";
3
+ /**
4
+ * This plugin is a basic plugin that allows you to get the command data from the client over HTTP.
5
+ * The JSON array provided here is the same as the one you would send to Discord, allowing you to build your own command deployment setup.
6
+ */
7
+ export class CommandDataPlugin extends Plugin {
8
+ id = "command-data";
9
+ client;
10
+ registerClient(client) {
11
+ this.client = client;
12
+ }
13
+ registerRoutes(client) {
14
+ client.routes.push({
15
+ method: "GET",
16
+ path: "/commands",
17
+ handler: this.handleCommandDataRequest.bind(this)
18
+ }, {
19
+ method: "GET",
20
+ path: "/commands/full",
21
+ handler: this.handleFullCommandDataRequest.bind(this)
22
+ });
23
+ }
24
+ discordCommandData = null;
25
+ async handleFullCommandDataRequest() {
26
+ if (!this.client)
27
+ return new Response("Client not registered", { status: 500 });
28
+ if (this.discordCommandData)
29
+ return Response.json(this.discordCommandData);
30
+ const commands = (await this.client.rest.get(Routes.applicationCommands(this.client.options.clientId)));
31
+ this.discordCommandData = commands;
32
+ return Response.json(commands);
33
+ }
34
+ async handleCommandDataRequest() {
35
+ if (!this.client)
36
+ return new Response("Client not registered", { status: 500 });
37
+ const commands = this.client?.commands
38
+ .filter((c) => c.name !== "*")
39
+ .map((c) => c.serialize());
40
+ return Response.json(commands);
41
+ }
42
+ }
43
+ //# sourceMappingURL=CommandDataPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandDataPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/command-data/CommandDataPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGlD;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,MAAM;IACnC,EAAE,GAAG,cAAc,CAAA;IAC5B,MAAM,CAAS;IAER,cAAc,CAAC,MAAc;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,CAAC;IAEM,cAAc,CAAC,MAAc;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CACjB;YACC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;SACjD,EACD;YACC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;SACrD,CACD,CAAA;IACF,CAAC;IAEO,kBAAkB,GAAmC,IAAI,CAAA;IAC1D,KAAK,CAAC,4BAA4B;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM;YACf,OAAO,IAAI,QAAQ,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC1E,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAC3C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACxD,CAA4B,CAAA;QAC7B,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAA;QAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAEM,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM;YACf,OAAO,IAAI,QAAQ,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;QAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ export * from "./CommandDataPlugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/command-data/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./CommandDataPlugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/command-data/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,16 @@
1
+ interface GuildCacheEntry {
2
+ available: boolean;
3
+ lastEvent: number;
4
+ }
5
+ export declare class BabyCache {
6
+ guildCache: Map<string, GuildCacheEntry>;
7
+ private readonly maxGuilds;
8
+ private readonly ttl;
9
+ constructor(maxGuilds?: number, ttl?: number);
10
+ setGuild(guildId: string, entry: GuildCacheEntry): void;
11
+ getGuild(guildId: string): GuildCacheEntry | undefined;
12
+ removeGuild(guildId: string): boolean;
13
+ cleanup(): number;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=BabyCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BabyCache.d.ts","sourceRoot":"","sources":["../../../../src/plugins/gateway/BabyCache.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,SAAS;IACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEhB,SAAS,SAAO,EAAE,GAAG,SAAW;IAK5C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;IAuBhD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAatD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC,OAAO,IAAI,MAAM;CAajB"}
@@ -0,0 +1,53 @@
1
+ // I called this the BabyCache because eventually, one way, carbon will have a more
2
+ // proper caching setup. For now, this is the toddler of that cache.
3
+ export class BabyCache {
4
+ guildCache = new Map();
5
+ maxGuilds;
6
+ ttl;
7
+ constructor(maxGuilds = 5000, ttl = 86400000) {
8
+ this.maxGuilds = maxGuilds;
9
+ this.ttl = ttl;
10
+ }
11
+ setGuild(guildId, entry) {
12
+ if (this.guildCache.size >= this.maxGuilds &&
13
+ !this.guildCache.has(guildId)) {
14
+ let oldestId = null;
15
+ let oldestTime = Number.POSITIVE_INFINITY;
16
+ for (const [id, guild] of this.guildCache.entries()) {
17
+ if (guild.lastEvent < oldestTime) {
18
+ oldestTime = guild.lastEvent;
19
+ oldestId = id;
20
+ }
21
+ }
22
+ if (oldestId) {
23
+ this.guildCache.delete(oldestId);
24
+ }
25
+ }
26
+ this.guildCache.set(guildId, entry);
27
+ }
28
+ getGuild(guildId) {
29
+ const entry = this.guildCache.get(guildId);
30
+ if (!entry)
31
+ return undefined;
32
+ if (Date.now() - entry.lastEvent > this.ttl) {
33
+ this.guildCache.delete(guildId);
34
+ return undefined;
35
+ }
36
+ return entry;
37
+ }
38
+ removeGuild(guildId) {
39
+ return this.guildCache.delete(guildId);
40
+ }
41
+ cleanup() {
42
+ const now = Date.now();
43
+ let removed = 0;
44
+ for (const [id, entry] of this.guildCache.entries()) {
45
+ if (now - entry.lastEvent > this.ttl) {
46
+ this.guildCache.delete(id);
47
+ removed++;
48
+ }
49
+ }
50
+ return removed;
51
+ }
52
+ }
53
+ //# sourceMappingURL=BabyCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BabyCache.js","sourceRoot":"","sources":["../../../../src/plugins/gateway/BabyCache.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,oEAAoE;AAOpE,MAAM,OAAO,SAAS;IACrB,UAAU,GAAiC,IAAI,GAAG,EAAE,CAAA;IACnC,SAAS,CAAQ;IACjB,GAAG,CAAQ;IAE5B,YAAY,SAAS,GAAG,IAAI,EAAE,GAAG,GAAG,QAAQ;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,OAAe,EAAE,KAAsB;QAC/C,IACC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS;YACtC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAC5B,CAAC;YACF,IAAI,QAAQ,GAAkB,IAAI,CAAA;YAClC,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAA;YAEzC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACrD,IAAI,KAAK,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;oBAClC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAA;oBAC5B,QAAQ,GAAG,EAAE,CAAA;gBACd,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACjC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACpC,CAAC;IAED,QAAQ,CAAC,OAAe;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE1C,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAE5B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC/B,OAAO,SAAS,CAAA;QACjB,CAAC;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,WAAW,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,OAAO;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,OAAO,GAAG,CAAC,CAAA;QAEf,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC1B,OAAO,EAAE,CAAA;YACV,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAA;IACf,CAAC;CACD"}