seyfert 1.5.0 → 2.0.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 (427) hide show
  1. package/LICENSE +21 -190
  2. package/README.md +18 -10
  3. package/lib/api/Router.js +2 -2
  4. package/lib/api/Routes/applications.d.ts +23 -1
  5. package/lib/api/Routes/channels.d.ts +1 -1
  6. package/lib/api/Routes/gateway.d.ts +1 -1
  7. package/lib/api/Routes/guilds.d.ts +5 -2
  8. package/lib/api/Routes/interactions.d.ts +1 -1
  9. package/lib/api/Routes/invites.d.ts +1 -1
  10. package/lib/api/Routes/stage-instances.d.ts +1 -1
  11. package/lib/api/Routes/stickers.d.ts +2 -2
  12. package/lib/api/Routes/users.d.ts +1 -1
  13. package/lib/api/Routes/voice.d.ts +1 -1
  14. package/lib/api/Routes/webhooks.d.ts +2 -2
  15. package/lib/api/api.d.ts +2 -2
  16. package/lib/api/api.js +2 -14
  17. package/lib/api/bucket.d.ts +0 -1
  18. package/lib/api/shared.d.ts +0 -1
  19. package/lib/api/utils/constants.d.ts +2 -5
  20. package/lib/api/utils/constants.js +3 -7
  21. package/lib/api/utils/utils.d.ts +1 -2
  22. package/lib/api/utils/utils.js +2 -3
  23. package/lib/builders/ActionRow.d.ts +1 -1
  24. package/lib/builders/ActionRow.js +3 -3
  25. package/lib/builders/Attachment.d.ts +2 -3
  26. package/lib/builders/Attachment.js +12 -13
  27. package/lib/builders/Base.d.ts +2 -2
  28. package/lib/builders/Base.js +1 -1
  29. package/lib/builders/Button.d.ts +7 -7
  30. package/lib/builders/Button.js +11 -9
  31. package/lib/builders/Embed.d.ts +1 -1
  32. package/lib/builders/Modal.d.ts +1 -1
  33. package/lib/builders/Modal.js +2 -2
  34. package/lib/builders/Poll.d.ts +2 -2
  35. package/lib/builders/Poll.js +5 -6
  36. package/lib/builders/SelectMenu.d.ts +1 -1
  37. package/lib/builders/SelectMenu.js +17 -18
  38. package/lib/builders/index.d.ts +1 -1
  39. package/lib/builders/index.js +10 -11
  40. package/lib/cache/adapters/default.d.ts +16 -9
  41. package/lib/cache/adapters/default.js +42 -31
  42. package/lib/cache/adapters/index.d.ts +0 -1
  43. package/lib/cache/adapters/index.js +0 -1
  44. package/lib/cache/adapters/limited.d.ts +17 -12
  45. package/lib/cache/adapters/limited.js +80 -36
  46. package/lib/cache/adapters/types.d.ts +6 -7
  47. package/lib/cache/adapters/workeradapter.d.ts +6 -6
  48. package/lib/cache/adapters/workeradapter.js +13 -0
  49. package/lib/cache/index.d.ts +18 -9
  50. package/lib/cache/index.js +319 -21
  51. package/lib/cache/resources/bans.d.ts +9 -6
  52. package/lib/cache/resources/bans.js +13 -4
  53. package/lib/cache/resources/channels.d.ts +6 -4
  54. package/lib/cache/resources/channels.js +13 -7
  55. package/lib/cache/resources/default/base.d.ts +7 -7
  56. package/lib/cache/resources/default/base.js +2 -2
  57. package/lib/cache/resources/default/guild-based.d.ts +6 -6
  58. package/lib/cache/resources/default/guild-based.js +6 -6
  59. package/lib/cache/resources/default/guild-related.d.ts +7 -7
  60. package/lib/cache/resources/default/guild-related.js +10 -8
  61. package/lib/cache/resources/emojis.d.ts +15 -6
  62. package/lib/cache/resources/emojis.js +13 -4
  63. package/lib/cache/resources/guilds.d.ts +9 -6
  64. package/lib/cache/resources/guilds.js +27 -6
  65. package/lib/cache/resources/members.d.ts +9 -6
  66. package/lib/cache/resources/members.js +22 -6
  67. package/lib/cache/resources/messages.d.ts +11 -7
  68. package/lib/cache/resources/messages.js +19 -7
  69. package/lib/cache/resources/overwrites.d.ts +11 -2
  70. package/lib/cache/resources/overwrites.js +9 -0
  71. package/lib/cache/resources/presence.d.ts +3 -2
  72. package/lib/cache/resources/roles.d.ts +9 -6
  73. package/lib/cache/resources/roles.js +13 -4
  74. package/lib/cache/resources/stage-instances.d.ts +2 -2
  75. package/lib/cache/resources/stickers.d.ts +9 -6
  76. package/lib/cache/resources/stickers.js +13 -4
  77. package/lib/cache/resources/threads.d.ts +9 -6
  78. package/lib/cache/resources/threads.js +13 -4
  79. package/lib/cache/resources/users.d.ts +9 -6
  80. package/lib/cache/resources/users.js +13 -4
  81. package/lib/cache/resources/voice-states.d.ts +11 -8
  82. package/lib/cache/resources/voice-states.js +15 -4
  83. package/lib/client/base.d.ts +28 -20
  84. package/lib/client/base.js +58 -56
  85. package/lib/client/client.d.ts +7 -16
  86. package/lib/client/client.js +29 -31
  87. package/lib/client/collectors.d.ts +10 -10
  88. package/lib/client/collectors.js +26 -1
  89. package/lib/client/httpclient.d.ts +8 -13
  90. package/lib/client/httpclient.js +27 -218
  91. package/lib/client/index.d.ts +1 -0
  92. package/lib/client/index.js +1 -0
  93. package/lib/client/transformers.d.ts +68 -0
  94. package/lib/client/transformers.js +99 -0
  95. package/lib/client/types.d.ts +5 -0
  96. package/lib/client/types.js +2 -0
  97. package/lib/client/workerclient.d.ts +14 -14
  98. package/lib/client/workerclient.js +112 -66
  99. package/lib/commands/applications/chat.d.ts +35 -34
  100. package/lib/commands/applications/chat.js +5 -9
  101. package/lib/commands/applications/chatcontext.d.ts +17 -17
  102. package/lib/commands/applications/chatcontext.js +5 -5
  103. package/lib/commands/applications/menu.d.ts +2 -3
  104. package/lib/commands/applications/menu.js +2 -5
  105. package/lib/commands/applications/menucontext.d.ts +14 -13
  106. package/lib/commands/applications/menucontext.js +9 -9
  107. package/lib/commands/applications/options.d.ts +1 -1
  108. package/lib/commands/applications/options.js +20 -21
  109. package/lib/commands/applications/shared.d.ts +3 -1
  110. package/lib/commands/decorators.d.ts +38 -20
  111. package/lib/commands/decorators.js +17 -18
  112. package/lib/commands/handle.d.ts +64 -0
  113. package/lib/commands/handle.js +685 -0
  114. package/lib/commands/handler.d.ts +27 -18
  115. package/lib/commands/handler.js +290 -164
  116. package/lib/commands/optionresolver.d.ts +13 -13
  117. package/lib/commands/optionresolver.js +23 -28
  118. package/lib/common/bot/watcher.d.ts +4 -33
  119. package/lib/common/bot/watcher.js +0 -109
  120. package/lib/common/index.d.ts +1 -0
  121. package/lib/common/index.js +1 -0
  122. package/lib/common/it/colors.js +48 -49
  123. package/lib/common/it/formatter.d.ts +32 -0
  124. package/lib/common/it/formatter.js +42 -0
  125. package/lib/common/it/logger.d.ts +0 -1
  126. package/lib/common/it/logger.js +3 -3
  127. package/lib/common/it/utils.d.ts +15 -2
  128. package/lib/common/it/utils.js +78 -17
  129. package/lib/common/shorters/application.d.ts +56 -0
  130. package/lib/common/shorters/application.js +81 -0
  131. package/lib/common/shorters/bans.d.ts +4 -5
  132. package/lib/common/shorters/bans.js +3 -3
  133. package/lib/common/shorters/channels.d.ts +7 -6
  134. package/lib/common/shorters/channels.js +19 -15
  135. package/lib/common/shorters/emojis.d.ts +5 -6
  136. package/lib/common/shorters/emojis.js +5 -5
  137. package/lib/common/shorters/guilds.d.ts +18 -16
  138. package/lib/common/shorters/guilds.js +31 -26
  139. package/lib/common/shorters/interaction.d.ts +6 -6
  140. package/lib/common/shorters/interaction.js +3 -2
  141. package/lib/common/shorters/members.d.ts +29 -12
  142. package/lib/common/shorters/members.js +55 -16
  143. package/lib/common/shorters/messages.d.ts +7 -8
  144. package/lib/common/shorters/messages.js +8 -7
  145. package/lib/common/shorters/reactions.d.ts +3 -3
  146. package/lib/common/shorters/reactions.js +11 -11
  147. package/lib/common/shorters/roles.d.ts +9 -7
  148. package/lib/common/shorters/roles.js +26 -7
  149. package/lib/common/shorters/templates.d.ts +7 -8
  150. package/lib/common/shorters/templates.js +7 -7
  151. package/lib/common/shorters/threads.d.ts +6 -7
  152. package/lib/common/shorters/threads.js +6 -9
  153. package/lib/common/shorters/users.d.ts +4 -4
  154. package/lib/common/shorters/users.js +8 -4
  155. package/lib/common/shorters/webhook.d.ts +10 -10
  156. package/lib/common/shorters/webhook.js +10 -9
  157. package/lib/common/types/resolvables.d.ts +2 -2
  158. package/lib/common/types/util.d.ts +3 -1
  159. package/lib/common/types/write.d.ts +1 -1
  160. package/lib/components/ActionRow.d.ts +1 -1
  161. package/lib/components/BaseComponent.d.ts +1 -1
  162. package/lib/components/BaseComponent.js +1 -1
  163. package/lib/components/BaseSelectMenuComponent.d.ts +1 -1
  164. package/lib/components/ButtonComponent.d.ts +17 -7
  165. package/lib/components/ButtonComponent.js +19 -2
  166. package/lib/components/ChannelSelectMenuComponent.d.ts +3 -3
  167. package/lib/components/MentionableSelectMenuComponent.d.ts +2 -2
  168. package/lib/components/RoleSelectMenuComponent.d.ts +2 -2
  169. package/lib/components/StringSelectMenuComponent.d.ts +2 -2
  170. package/lib/components/TextInputComponent.d.ts +2 -2
  171. package/lib/components/UserSelectMenuComponent.d.ts +2 -2
  172. package/lib/components/componentcommand.js +2 -2
  173. package/lib/components/componentcontext.d.ts +10 -9
  174. package/lib/components/componentcontext.js +8 -8
  175. package/lib/components/handler.d.ts +15 -14
  176. package/lib/components/handler.js +89 -93
  177. package/lib/components/index.d.ts +3 -3
  178. package/lib/components/index.js +12 -10
  179. package/lib/components/modalcontext.d.ts +12 -11
  180. package/lib/components/modalcontext.js +2 -2
  181. package/lib/deps/mixer.d.ts +8 -0
  182. package/lib/deps/mixer.js +66 -0
  183. package/lib/events/handler.d.ts +35 -13
  184. package/lib/events/handler.js +58 -25
  185. package/lib/events/hooks/application_command.d.ts +2 -2
  186. package/lib/events/hooks/auto_moderation.d.ts +6 -7
  187. package/lib/events/hooks/auto_moderation.js +4 -4
  188. package/lib/events/hooks/channel.d.ts +2 -2
  189. package/lib/events/hooks/channel.js +4 -7
  190. package/lib/events/hooks/custom.d.ts +3 -3
  191. package/lib/events/hooks/dispatch.d.ts +3 -4
  192. package/lib/events/hooks/dispatch.js +2 -2
  193. package/lib/events/hooks/entitlement.d.ts +5 -37
  194. package/lib/events/hooks/entitlement.js +7 -7
  195. package/lib/events/hooks/guild.d.ts +125 -125
  196. package/lib/events/hooks/guild.js +13 -15
  197. package/lib/events/hooks/integration.d.ts +27 -28
  198. package/lib/events/hooks/integration.js +3 -3
  199. package/lib/events/hooks/interactions.d.ts +2 -2
  200. package/lib/events/hooks/invite.d.ts +18 -17
  201. package/lib/events/hooks/message.d.ts +69 -54
  202. package/lib/events/hooks/message.js +4 -8
  203. package/lib/events/hooks/presence.d.ts +17 -16
  204. package/lib/events/hooks/stage.d.ts +4 -4
  205. package/lib/events/hooks/thread.d.ts +132 -63
  206. package/lib/events/hooks/thread.js +4 -4
  207. package/lib/events/hooks/typing.d.ts +28 -6
  208. package/lib/events/hooks/typing.js +2 -2
  209. package/lib/events/hooks/user.d.ts +3 -3
  210. package/lib/events/hooks/user.js +2 -2
  211. package/lib/events/hooks/voice.d.ts +28 -3
  212. package/lib/events/hooks/voice.js +8 -4
  213. package/lib/events/hooks/webhook.d.ts +1 -1
  214. package/lib/index.d.ts +5 -14
  215. package/lib/index.js +7 -12
  216. package/lib/langs/handler.d.ts +14 -10
  217. package/lib/langs/handler.js +40 -9
  218. package/lib/structures/AutoModerationRule.d.ts +4 -4
  219. package/lib/structures/AutoModerationRule.js +1 -2
  220. package/lib/structures/ClientUser.d.ts +1 -1
  221. package/lib/structures/Entitlement.d.ts +10 -0
  222. package/lib/structures/Entitlement.js +16 -0
  223. package/lib/structures/Guild.d.ts +33 -34
  224. package/lib/structures/Guild.js +5 -2
  225. package/lib/structures/GuildBan.d.ts +6 -6
  226. package/lib/structures/GuildBan.js +2 -1
  227. package/lib/structures/GuildEmoji.d.ts +4 -4
  228. package/lib/structures/GuildEmoji.js +3 -2
  229. package/lib/structures/GuildMember.d.ts +20 -17
  230. package/lib/structures/GuildMember.js +18 -8
  231. package/lib/structures/GuildPreview.d.ts +1 -1
  232. package/lib/structures/GuildRole.d.ts +5 -3
  233. package/lib/structures/GuildRole.js +8 -1
  234. package/lib/structures/GuildTemplate.d.ts +2 -2
  235. package/lib/structures/GuildTemplate.js +1 -1
  236. package/lib/structures/Interaction.d.ts +53 -36
  237. package/lib/structures/Interaction.js +127 -91
  238. package/lib/structures/Message.d.ts +29 -30
  239. package/lib/structures/Message.js +8 -9
  240. package/lib/structures/Poll.d.ts +4 -3
  241. package/lib/structures/Poll.js +6 -2
  242. package/lib/structures/Sticker.d.ts +7 -7
  243. package/lib/structures/Sticker.js +7 -7
  244. package/lib/structures/User.d.ts +5 -4
  245. package/lib/structures/User.js +2 -1
  246. package/lib/structures/VoiceState.d.ts +15 -11
  247. package/lib/structures/VoiceState.js +35 -17
  248. package/lib/structures/Webhook.d.ts +6 -7
  249. package/lib/structures/Webhook.js +6 -7
  250. package/lib/structures/channels.d.ts +11 -10
  251. package/lib/structures/channels.js +70 -65
  252. package/lib/structures/extra/BaseGuild.d.ts +1 -1
  253. package/lib/structures/extra/BaseGuild.js +3 -3
  254. package/lib/structures/extra/BitField.d.ts +1 -1
  255. package/lib/structures/extra/BitField.js +3 -2
  256. package/lib/structures/extra/DiscordBase.js +2 -2
  257. package/lib/structures/extra/Permissions.d.ts +3 -1
  258. package/lib/structures/extra/Permissions.js +8 -3
  259. package/lib/types/gateway.d.ts +1537 -0
  260. package/lib/types/gateway.js +4 -0
  261. package/lib/types/index.d.ts +9 -1
  262. package/lib/types/index.js +28 -1
  263. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.d.ts +5 -0
  264. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.js +2 -0
  265. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.d.ts +22 -0
  266. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.js +2 -0
  267. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.d.ts +4 -0
  268. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.js +2 -0
  269. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.d.ts +7 -0
  270. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.js +2 -0
  271. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.d.ts +17 -0
  272. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.js +2 -0
  273. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.d.ts +5 -0
  274. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.js +2 -0
  275. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.d.ts +17 -0
  276. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.js +2 -0
  277. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.d.ts +5 -0
  278. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.js +2 -0
  279. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.d.ts +25 -0
  280. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.js +20 -0
  281. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.d.ts +17 -0
  282. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.js +2 -0
  283. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.d.ts +11 -0
  284. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.js +2 -0
  285. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.d.ts +11 -0
  286. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.js +2 -0
  287. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.d.ts +5 -0
  288. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.js +2 -0
  289. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.d.ts +60 -0
  290. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.js +29 -0
  291. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.d.ts +65 -0
  292. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.js +2 -0
  293. package/lib/types/payloads/_interactions/_applicationCommands/internals.d.ts +8 -0
  294. package/lib/types/payloads/_interactions/_applicationCommands/internals.js +2 -0
  295. package/lib/types/payloads/_interactions/_applicationCommands/permissions.d.ts +54 -0
  296. package/lib/types/payloads/_interactions/_applicationCommands/permissions.js +20 -0
  297. package/lib/types/payloads/_interactions/applicationCommands.d.ts +153 -0
  298. package/lib/types/payloads/_interactions/applicationCommands.js +61 -0
  299. package/lib/types/payloads/_interactions/autocomplete.d.ts +10 -0
  300. package/lib/types/payloads/_interactions/autocomplete.js +2 -0
  301. package/lib/types/payloads/_interactions/base.d.ts +197 -0
  302. package/lib/types/payloads/_interactions/base.js +2 -0
  303. package/lib/types/payloads/_interactions/messageComponents.d.ts +41 -0
  304. package/lib/types/payloads/_interactions/messageComponents.js +2 -0
  305. package/lib/types/payloads/_interactions/modalSubmit.d.ts +35 -0
  306. package/lib/types/payloads/_interactions/modalSubmit.js +2 -0
  307. package/lib/types/payloads/_interactions/ping.d.ts +3 -0
  308. package/lib/types/payloads/_interactions/ping.js +2 -0
  309. package/lib/types/payloads/_interactions/responses.d.ts +112 -0
  310. package/lib/types/payloads/_interactions/responses.js +54 -0
  311. package/lib/types/payloads/application.d.ts +292 -0
  312. package/lib/types/payloads/application.js +117 -0
  313. package/lib/types/payloads/auditLog.d.ts +644 -0
  314. package/lib/types/payloads/auditLog.js +80 -0
  315. package/lib/types/payloads/autoModeration.d.ts +219 -0
  316. package/lib/types/payloads/autoModeration.js +87 -0
  317. package/lib/types/payloads/channel.d.ts +1708 -0
  318. package/lib/types/payloads/channel.js +372 -0
  319. package/lib/types/payloads/emoji.d.ts +48 -0
  320. package/lib/types/payloads/emoji.js +5 -0
  321. package/lib/types/payloads/gateway.d.ts +373 -0
  322. package/lib/types/payloads/gateway.js +82 -0
  323. package/lib/types/payloads/guild.d.ts +1060 -0
  324. package/lib/types/payloads/guild.js +324 -0
  325. package/lib/types/payloads/guildScheduledEvent.d.ts +138 -0
  326. package/lib/types/payloads/guildScheduledEvent.js +32 -0
  327. package/lib/types/payloads/index.d.ts +64 -0
  328. package/lib/types/payloads/index.js +37 -0
  329. package/lib/types/payloads/interactions.d.ts +24 -0
  330. package/lib/types/payloads/interactions.js +23 -0
  331. package/lib/types/payloads/invite.d.ts +121 -0
  332. package/lib/types/payloads/invite.js +23 -0
  333. package/lib/types/payloads/monetization.d.ts +150 -0
  334. package/lib/types/payloads/monetization.js +79 -0
  335. package/lib/types/payloads/oauth2.d.ts +131 -0
  336. package/lib/types/payloads/oauth2.js +135 -0
  337. package/lib/types/payloads/permissions.d.ts +97 -0
  338. package/lib/types/payloads/permissions.js +16 -0
  339. package/lib/types/payloads/poll.d.ts +104 -0
  340. package/lib/types/payloads/poll.js +16 -0
  341. package/lib/types/payloads/stageInstance.d.ts +77 -0
  342. package/lib/types/payloads/stageInstance.js +19 -0
  343. package/lib/types/payloads/sticker.d.ts +123 -0
  344. package/lib/types/payloads/sticker.js +30 -0
  345. package/lib/types/payloads/teams.d.ts +78 -0
  346. package/lib/types/payloads/teams.js +23 -0
  347. package/lib/types/payloads/template.d.ts +62 -0
  348. package/lib/types/payloads/template.js +5 -0
  349. package/lib/types/payloads/user.d.ts +337 -0
  350. package/lib/types/payloads/user.js +167 -0
  351. package/lib/types/payloads/voice.d.ts +89 -0
  352. package/lib/types/payloads/voice.js +5 -0
  353. package/lib/types/payloads/webhook.d.ts +76 -0
  354. package/lib/types/payloads/webhook.js +21 -0
  355. package/lib/types/rest/application.d.ts +57 -0
  356. package/lib/types/rest/application.js +2 -0
  357. package/lib/types/rest/auditLog.d.ts +30 -0
  358. package/lib/types/rest/auditLog.js +2 -0
  359. package/lib/types/rest/autoModeration.d.ts +66 -0
  360. package/lib/types/rest/autoModeration.js +2 -0
  361. package/lib/types/rest/channel.d.ts +712 -0
  362. package/lib/types/rest/channel.js +11 -0
  363. package/lib/types/rest/emoji.d.ts +54 -0
  364. package/lib/types/rest/emoji.js +2 -0
  365. package/lib/types/rest/gateway.d.ts +9 -0
  366. package/lib/types/rest/gateway.js +2 -0
  367. package/lib/types/rest/guild.d.ts +865 -0
  368. package/lib/types/rest/guild.js +2 -0
  369. package/lib/types/rest/guildScheduledEvent.d.ts +126 -0
  370. package/lib/types/rest/guildScheduledEvent.js +2 -0
  371. package/lib/types/rest/index.d.ts +296 -0
  372. package/lib/types/rest/index.js +292 -0
  373. package/lib/types/rest/interactions.d.ts +194 -0
  374. package/lib/types/rest/interactions.js +2 -0
  375. package/lib/types/rest/invite.d.ts +24 -0
  376. package/lib/types/rest/invite.js +2 -0
  377. package/lib/types/rest/monetization.d.ts +82 -0
  378. package/lib/types/rest/monetization.js +11 -0
  379. package/lib/types/rest/oauth2.d.ts +172 -0
  380. package/lib/types/rest/oauth2.js +2 -0
  381. package/lib/types/rest/poll.d.ts +44 -0
  382. package/lib/types/rest/poll.js +2 -0
  383. package/lib/types/rest/stageInstance.d.ts +58 -0
  384. package/lib/types/rest/stageInstance.js +2 -0
  385. package/lib/types/rest/sticker.d.ts +77 -0
  386. package/lib/types/rest/sticker.js +2 -0
  387. package/lib/types/rest/template.d.ts +62 -0
  388. package/lib/types/rest/template.js +2 -0
  389. package/lib/types/rest/user.d.ts +120 -0
  390. package/lib/types/rest/user.js +2 -0
  391. package/lib/types/rest/voice.d.ts +17 -0
  392. package/lib/types/rest/voice.js +2 -0
  393. package/lib/types/rest/webhook.d.ts +250 -0
  394. package/lib/types/rest/webhook.js +2 -0
  395. package/lib/types/utils/index.d.ts +797 -0
  396. package/lib/types/utils/index.js +799 -0
  397. package/lib/websocket/SharedTypes.d.ts +4 -3
  398. package/lib/websocket/SharedTypes.js +1 -1
  399. package/lib/websocket/constants/index.d.ts +0 -1
  400. package/lib/websocket/discord/basesocket.d.ts +7 -7
  401. package/lib/websocket/discord/basesocket.js +34 -22
  402. package/lib/websocket/discord/events/memberUpdate.d.ts +1 -6
  403. package/lib/websocket/discord/events/memberUpdate.js +2 -1
  404. package/lib/websocket/discord/events/presenceUpdate.d.ts +5 -18
  405. package/lib/websocket/discord/events/presenceUpdate.js +5 -6
  406. package/lib/websocket/discord/shard.d.ts +8 -8
  407. package/lib/websocket/discord/shard.js +59 -47
  408. package/lib/websocket/discord/sharder.d.ts +6 -5
  409. package/lib/websocket/discord/sharder.js +11 -10
  410. package/lib/websocket/discord/shared.d.ts +13 -5
  411. package/lib/websocket/discord/socket/custom.d.ts +52 -0
  412. package/lib/websocket/discord/socket/custom.js +283 -0
  413. package/lib/websocket/discord/worker.d.ts +5 -10
  414. package/lib/websocket/discord/workermanager.d.ts +8 -15
  415. package/lib/websocket/discord/workermanager.js +35 -39
  416. package/lib/websocket/structures/index.d.ts +0 -1
  417. package/lib/websocket/structures/index.js +1 -1
  418. package/lib/websocket/structures/timeout.d.ts +0 -1
  419. package/package.json +65 -74
  420. package/lib/cache/adapters/redis.d.ts +0 -37
  421. package/lib/cache/adapters/redis.js +0 -218
  422. package/lib/client/oninteractioncreate.d.ts +0 -4
  423. package/lib/client/oninteractioncreate.js +0 -198
  424. package/lib/client/onmessagecreate.d.ts +0 -13
  425. package/lib/client/onmessagecreate.js +0 -410
  426. package/lib/structures/extra/functions.d.ts +0 -12
  427. package/lib/structures/extra/functions.js +0 -70
@@ -1,5 +1,5 @@
1
- import type { APIGatewayBotInfo, GatewayDispatchPayload, GatewayIntentBits, GatewayPresenceUpdateData } from 'discord-api-types/v10';
2
- import type { Logger } from '../../common';
1
+ import type { APIGatewayBotInfo, GatewayDispatchPayload, GatewayIntentBits, GatewayPresenceUpdateData } from '../../types';
2
+ import type { Awaitable, DeepPartial, Logger } from '../../common';
3
3
  import type { IdentifyProperties } from '../constants';
4
4
  export interface ShardManagerOptions extends ShardDetails {
5
5
  /** Important data which is used by the manager to connect shards to the gateway. */
@@ -30,8 +30,13 @@ export interface ShardManagerOptions extends ShardDetails {
30
30
  presence?: (shardId: number, workerId: number) => GatewayPresenceUpdateData;
31
31
  compress?: boolean;
32
32
  }
33
- export interface WorkerManagerOptions extends Omit<ShardManagerOptions, 'handlePayload'> {
34
- mode: 'threads' | 'clusters';
33
+ export interface CustomManagerAdapter {
34
+ postMessage(workerId: number, body: unknown): Awaitable<unknown>;
35
+ spawn(workerData: WorkerData, env: Record<string, any>): Awaitable<unknown>;
36
+ }
37
+ export interface WorkerManagerOptions extends Omit<ShardManagerOptions, 'handlePayload' | 'properties'> {
38
+ mode: 'threads' | 'clusters' | 'custom';
39
+ adapter?: CustomManagerAdapter;
35
40
  workers?: number;
36
41
  /**
37
42
  * @default 32
@@ -40,10 +45,11 @@ export interface WorkerManagerOptions extends Omit<ShardManagerOptions, 'handleP
40
45
  workerProxy?: boolean;
41
46
  path: string;
42
47
  handlePayload(shardId: number, workerId: number, packet: GatewayDispatchPayload): unknown;
48
+ properties?: DeepPartial<NonNullable<ShardManagerOptions['properties']>>;
43
49
  }
44
50
  export interface ShardData {
45
51
  /** resume seq to resume connections */
46
- resumeSeq: number | null;
52
+ resume_seq: number | null;
47
53
  /**
48
54
  * resume_gateway_url is the url to resume the connection
49
55
  * @link https://discord.com/developers/docs/topics/gateway#ready-event
@@ -97,6 +103,8 @@ export interface WorkerData {
97
103
  token: string;
98
104
  path: string;
99
105
  shards: number[];
106
+ totalShards: number;
107
+ mode: 'custom' | 'clusters' | 'threads';
100
108
  workerId: number;
101
109
  debug: boolean;
102
110
  workerProxy: boolean;
@@ -0,0 +1,52 @@
1
+ import type { Socket } from 'node:net';
2
+ export declare class SeyfertWebSocket {
3
+ #private;
4
+ socket?: Socket;
5
+ hostname: string;
6
+ path: string;
7
+ __stored: Buffer[];
8
+ __opcode: number;
9
+ __promises: Map<string, {
10
+ resolve: () => void;
11
+ reject: (reason?: any) => void;
12
+ }>;
13
+ __lastError: null | {
14
+ code: number;
15
+ reason: string;
16
+ };
17
+ __closeCalled?: boolean;
18
+ constructor(url: string);
19
+ private connect;
20
+ handleReadable(): void;
21
+ handleEvent(body: Buffer, opcode: number): void;
22
+ handleClose(): void;
23
+ send(data: string): void;
24
+ private _write;
25
+ onping(_data: string): void;
26
+ onpong(_data: string): void;
27
+ onopen(): void;
28
+ onmessage(_payload: {
29
+ data: string | Buffer;
30
+ }): void;
31
+ onclose(_close: {
32
+ code: number;
33
+ reason: string;
34
+ }): void;
35
+ onerror(_err: unknown): void;
36
+ close(code: number, reason: string): void;
37
+ pong(data: string): void;
38
+ ping(data: string): void;
39
+ waitPing(): Promise<number>;
40
+ get readyState(): number;
41
+ /**
42
+ *
43
+ * @param start Start calculating bytes from `start`
44
+ * @param bits Num of bits since `start`
45
+ * @returns
46
+ */
47
+ private readBytes;
48
+ }
49
+ export type ReadableHeadData = {
50
+ next?: ReadableHeadData;
51
+ data: Buffer;
52
+ };
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeyfertWebSocket = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_https_1 = require("node:https");
6
+ class SeyfertWebSocket {
7
+ socket = undefined;
8
+ hostname;
9
+ path;
10
+ __stored = [];
11
+ __opcode = 0;
12
+ __promises = new Map();
13
+ __lastError = null;
14
+ __closeCalled;
15
+ constructor(url) {
16
+ const urlParts = new URL(url);
17
+ this.hostname = urlParts.hostname || '';
18
+ this.path = `${urlParts.pathname}${urlParts.search || ''}`;
19
+ this.connect();
20
+ }
21
+ connect() {
22
+ const key = (0, node_crypto_1.randomBytes)(16).toString('base64');
23
+ const req = (0, node_https_1.request)({
24
+ //discord gateway hostname
25
+ hostname: this.hostname,
26
+ path: this.path,
27
+ headers: {
28
+ Connection: 'Upgrade',
29
+ Upgrade: 'websocket',
30
+ 'Sec-WebSocket-Key': key,
31
+ 'Sec-WebSocket-Version': '13',
32
+ },
33
+ });
34
+ req.on('upgrade', (res, socket) => {
35
+ const hash = (0, node_crypto_1.createHash)('sha1').update(`${key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest('base64');
36
+ const accept = res.headers['sec-websocket-accept'];
37
+ if (accept !== hash) {
38
+ socket.end(() => {
39
+ this.onerror(new Error('Invalid sec-websocket-accept header'));
40
+ });
41
+ return;
42
+ }
43
+ this.socket = socket;
44
+ socket.on('readable', this.handleReadable.bind(this));
45
+ socket.on('close', this.handleClose.bind(this));
46
+ socket.on('error', err => this.onerror(err));
47
+ this.onopen();
48
+ });
49
+ req.on('close', () => {
50
+ req.removeAllListeners();
51
+ });
52
+ req.end();
53
+ }
54
+ handleReadable() {
55
+ // Keep reading until no data, this is useful when two payloads merges.
56
+ while (this.socket.readableLength > 0) {
57
+ // Read length without consuming the buffer
58
+ let length = this.readBytes(1, 1) & 127;
59
+ const slice = length === 126 ? 4 : length === 127 ? 10 : 2;
60
+ // Check if frame/data is complete
61
+ if (this.socket.readableLength < slice)
62
+ return; // Wait to next cycle if not
63
+ if (length > 125) {
64
+ // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2
65
+ // If length is 126/127, read extended payload length instead
66
+ // Equivalent to readUint32BE
67
+ length = this.readBytes(2, slice - 2);
68
+ }
69
+ // Read the frame, ignore data next to it, leave it to next `while` cycle
70
+ const frame = this.socket.read(slice + length);
71
+ if (!frame)
72
+ return;
73
+ // Get fin (0 | 1)
74
+ const fin = frame[0] >> 7;
75
+ // Read opcode (continuation, text, binary, close, ping, pong)
76
+ let opcode = frame[0] & 15;
77
+ // Cut frame to get payload
78
+ let payload = frame.subarray(slice);
79
+ // If fin is 0, store the data and wait to next `while` cycle to be fin=1
80
+ if (fin === 0) {
81
+ this.__stored.push(payload);
82
+ // Only store opcode when is not 0 (continuation)
83
+ if (opcode !== 0) {
84
+ this.__opcode = opcode;
85
+ }
86
+ return;
87
+ }
88
+ // When the message is from ws fragmentation, opcode of last message is 0
89
+ // If so, merge all messages.
90
+ if (opcode === 0) {
91
+ this.__stored.push(payload);
92
+ payload = Buffer.concat(this.__stored);
93
+ opcode = this.__opcode;
94
+ // Reset body
95
+ this.__stored = [];
96
+ // Reset opcode, should set as -1?
97
+ this.__opcode = 0;
98
+ }
99
+ // Handle opcodes
100
+ this.handleEvent(payload, opcode);
101
+ }
102
+ }
103
+ handleEvent(body, opcode) {
104
+ switch (opcode) {
105
+ // text
106
+ case 0x1:
107
+ this.onmessage({ data: body.toString() });
108
+ break;
109
+ // binary
110
+ case 0x2:
111
+ {
112
+ if (body[1] === 80)
113
+ body = body.subarray(6);
114
+ this.onmessage({ data: body });
115
+ }
116
+ break;
117
+ // pong
118
+ case 0x9:
119
+ this.onping(body.toString());
120
+ break;
121
+ // ping
122
+ case 0xa:
123
+ this.onpong(body.toString());
124
+ break;
125
+ // close
126
+ case 0x8:
127
+ this.__lastError = {
128
+ code: body.readUInt16BE(0),
129
+ reason: body.subarray(2).toString(),
130
+ };
131
+ break;
132
+ }
133
+ }
134
+ handleClose() {
135
+ this.socket?.removeAllListeners();
136
+ this.socket?.destroy();
137
+ this.socket = undefined;
138
+ if (this.__closeCalled)
139
+ return;
140
+ if (!this.__lastError)
141
+ return this.connect();
142
+ this.onclose(this.__lastError);
143
+ this.__lastError = null;
144
+ }
145
+ send(data) {
146
+ this._write(Buffer.from(data), 1);
147
+ }
148
+ _write(buffer, opcode) {
149
+ const length = buffer.length;
150
+ let frame;
151
+ // Kinda same logic as above, but client-side
152
+ if (length < 126) {
153
+ frame = Buffer.allocUnsafe(6 + length);
154
+ frame[1] = 128 + length;
155
+ }
156
+ else if (length < 65536) {
157
+ frame = Buffer.allocUnsafe(8 + length);
158
+ frame[1] = 254;
159
+ frame[2] = (length >> 8) & 255;
160
+ frame[3] = length & 255;
161
+ }
162
+ else {
163
+ frame = Buffer.allocUnsafe(14 + length);
164
+ frame[1] = 255;
165
+ frame.writeBigUint64BE(BigInt(length), 2);
166
+ }
167
+ frame[0] = 128 + opcode;
168
+ frame.writeUint32BE(0, frame.length - length - 4);
169
+ frame.set(buffer, frame.length - length);
170
+ this.socket?.write(frame);
171
+ }
172
+ onping(_data) { }
173
+ onpong(_data) { }
174
+ onopen() { }
175
+ onmessage(_payload) { }
176
+ onclose(_close) { }
177
+ onerror(_err) { }
178
+ close(code, reason) {
179
+ this.__closeCalled = true;
180
+ // alloc payload length
181
+ const buffer = Buffer.alloc(2 + Buffer.byteLength(reason));
182
+ // gateway close code
183
+ buffer.writeUInt16BE(code, 0);
184
+ // reason
185
+ buffer.write(reason, 2);
186
+ // message, close opcode
187
+ this._write(buffer, 0x8);
188
+ this.socket?.end();
189
+ }
190
+ pong(data) {
191
+ //send pong opcode (10)
192
+ this._write(Buffer.from(data), 0xa);
193
+ }
194
+ ping(data) {
195
+ //send ping opcode (9)
196
+ this._write(Buffer.from(data), 0x9);
197
+ }
198
+ waitPing() {
199
+ const id = this.#randomUUID();
200
+ let timeout;
201
+ const start = performance.now();
202
+ this.ping(id);
203
+ return new Promise((resolve, reject) => {
204
+ this.__promises.set(id, {
205
+ reject,
206
+ resolve,
207
+ });
208
+ timeout = setTimeout(() => {
209
+ resolve();
210
+ }, 60e3);
211
+ })
212
+ .then(() => {
213
+ return performance.now() - start;
214
+ })
215
+ .finally(() => {
216
+ clearTimeout(timeout);
217
+ });
218
+ }
219
+ #randomUUID() {
220
+ const id = (0, node_crypto_1.randomUUID)();
221
+ if (this.__promises.has(id))
222
+ return this.#randomUUID();
223
+ return id;
224
+ }
225
+ get readyState() {
226
+ return ['opening', 'open', 'closed', 'closed'].indexOf(this.socket?.readyState ?? 'closed');
227
+ }
228
+ /**
229
+ *
230
+ * @param start Start calculating bytes from `start`
231
+ * @param bits Num of bits since `start`
232
+ * @returns
233
+ */
234
+ readBytes(start, bits) {
235
+ // @ts-expect-error this is private, thanks nodejs
236
+ const readable = this.socket._readableState;
237
+ // Num of bit read
238
+ let bitIndex = 0;
239
+ // Num of bit read counting since start
240
+ let read = 0;
241
+ // Bytes value
242
+ let value = 0;
243
+ // Node v20
244
+ if ('bufferIndex' in readable) {
245
+ // actual index of the buffer to read
246
+ let blockIndex = readable.bufferIndex;
247
+ // Buffer to read
248
+ let block;
249
+ while ((block = readable.buffer[blockIndex++])) {
250
+ for (let i = 0; i < block.length; i++) {
251
+ if (++bitIndex > start) {
252
+ value *= 256; // shift 8 bits (1 byte) `*= 256 is faster than <<= 8`
253
+ value += block[i]; // sum value to bits
254
+ // Read until read all bits
255
+ if (++read === bits) {
256
+ return value;
257
+ }
258
+ }
259
+ }
260
+ }
261
+ } /* Support for olders versions*/
262
+ else {
263
+ // readable.buffer is kinda a LinkedList
264
+ let head = readable.buffer.head;
265
+ while (head) {
266
+ for (let i = 0; i < head.data.length; i++) {
267
+ if (++bitIndex > start) {
268
+ value *= 256; // shift 8 bits (1 byte) `*= 256 is faster than <<= 8`
269
+ value += head.data[i]; // sum value to bits
270
+ // Read until read all bits
271
+ if (++read === bits) {
272
+ return value;
273
+ }
274
+ }
275
+ }
276
+ // continue with next node
277
+ head = head.next;
278
+ }
279
+ }
280
+ return 0;
281
+ }
282
+ }
283
+ exports.SeyfertWebSocket = SeyfertWebSocket;
@@ -1,5 +1,5 @@
1
- import type { GatewayDispatchPayload } from 'discord-api-types/v10';
2
1
  import type { ApiRequestOptions, HttpMethods } from '../..';
2
+ import type { GatewayDispatchPayload } from '../../types';
3
3
  export interface WorkerShardInfo {
4
4
  open: boolean;
5
5
  shardId: number;
@@ -25,8 +25,8 @@ export type WorkerSendResultPayload = CreateWorkerMessage<'RESULT_PAYLOAD', {
25
25
  }>;
26
26
  export type WorkerSendCacheRequest = CreateWorkerMessage<'CACHE_REQUEST', {
27
27
  nonce: string;
28
- method: 'scan' | 'get' | 'set' | 'patch' | 'values' | 'keys' | 'count' | 'remove' | 'flush' | 'contains' | 'getToRelationship' | 'bulkAddToRelationShip' | 'addToRelationship' | 'removeRelationship' | 'removeToRelationship';
29
- args: any[];
28
+ method: 'scan' | 'bulkGet' | 'get' | 'bulkSet' | 'set' | 'bulkPatch' | 'patch' | 'values' | 'keys' | 'count' | 'bulkRemove' | 'remove' | 'flush' | 'contains' | 'getToRelationship' | 'bulkAddToRelationShip' | 'addToRelationship' | 'removeRelationship' | 'removeToRelationship';
29
+ args: unknown[];
30
30
  }>;
31
31
  export type WorkerSendShardInfo = CreateWorkerMessage<'SHARD_INFO', WorkerShardInfo & {
32
32
  nonce: string;
@@ -42,13 +42,8 @@ export type WorkerSendApiRequest = CreateWorkerMessage<'WORKER_API_REQUEST', {
42
42
  requestOptions: ApiRequestOptions;
43
43
  nonce: string;
44
44
  }>;
45
- export type WorkerExecuteEval = CreateWorkerMessage<'EXECUTE_EVAL', {
46
- func: string;
47
- nonce: string;
48
- toWorkerId: number;
49
- }>;
50
45
  export type WorkerSendEvalResponse = CreateWorkerMessage<'EVAL_RESPONSE', {
51
- response: any;
46
+ response: unknown;
52
47
  nonce: string;
53
48
  }>;
54
49
  export type WorkerSendEval = CreateWorkerMessage<'EVAL', {
@@ -56,5 +51,5 @@ export type WorkerSendEval = CreateWorkerMessage<'EVAL', {
56
51
  nonce: string;
57
52
  toWorkerId: number;
58
53
  }>;
59
- export type WorkerMessage = WorkerRequestConnect | WorkerReceivePayload | WorkerSendResultPayload | WorkerSendCacheRequest | WorkerSendShardInfo | WorkerSendInfo | WorkerReady | WorkerSendApiRequest | WorkerExecuteEval | WorkerSendEvalResponse | WorkerSendEval | WorkerStart;
54
+ export type WorkerMessage = WorkerRequestConnect | WorkerReceivePayload | WorkerSendResultPayload | WorkerSendCacheRequest | WorkerSendShardInfo | WorkerSendInfo | WorkerReady | WorkerSendApiRequest | WorkerSendEvalResponse | WorkerSendEval | WorkerStart;
60
55
  export {};
@@ -1,24 +1,17 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node" />
6
- /// <reference types="node" />
7
- /// <reference types="node" />
8
- import type { GatewayPresenceUpdateData, GatewaySendPayload } from 'discord-api-types/v10';
1
+ import type { GatewayPresenceUpdateData, GatewaySendPayload } from '../../types';
9
2
  import { type Worker as ClusterWorker } from 'node:cluster';
10
3
  import { ApiHandler, Logger } from '../..';
11
4
  import { type Adapter } from '../../cache';
12
5
  import { type MakePartial } from '../../common';
13
6
  import { ConnectQueue } from '../structures/timeout';
14
- import { MemberUpdateHandler } from './events/memberUpdate';
15
- import { PresenceUpdateHandler } from './events/presenceUpdate';
16
7
  import type { ShardOptions, WorkerData, WorkerManagerOptions } from './shared';
17
8
  import type { WorkerInfo, WorkerMessage, WorkerShardInfo } from './worker';
18
- export declare class WorkerManager extends Map<number, (ClusterWorker | import('node:worker_threads').Worker) & {
9
+ export declare class WorkerManager extends Map<number, (ClusterWorker | import('node:worker_threads').Worker | {
10
+ ready: boolean;
11
+ }) & {
19
12
  ready?: boolean;
20
13
  }> {
21
- options: Required<WorkerManagerOptions>;
14
+ options: MakePartial<Required<WorkerManagerOptions>, 'adapter'>;
22
15
  debugger?: Logger;
23
16
  connectQueue: ConnectQueue;
24
17
  cacheAdapter: Adapter;
@@ -26,8 +19,6 @@ export declare class WorkerManager extends Map<number, (ClusterWorker | import('
26
19
  resolve: (value: any) => void;
27
20
  timeout: NodeJS.Timeout;
28
21
  }>;
29
- memberUpdateHandler: MemberUpdateHandler;
30
- presenceUpdateHandler: PresenceUpdateHandler;
31
22
  rest: ApiHandler;
32
23
  constructor(options: MakePartial<WorkerManagerOptions, 'token' | 'intents' | 'info' | 'handlePayload'>);
33
24
  setCache(adapter: Adapter): void;
@@ -49,7 +40,9 @@ export declare class WorkerManager extends Map<number, (ClusterWorker | import('
49
40
  prepareSpaces(): number[][];
50
41
  postMessage(id: number, body: any): void;
51
42
  prepareWorkers(shards: number[][]): Promise<void>;
52
- createWorker(workerData: WorkerData): ClusterWorker | import("worker_threads").Worker;
43
+ createWorker(workerData: WorkerData): ClusterWorker | import("worker_threads").Worker | {
44
+ ready: boolean;
45
+ };
53
46
  spawn(workerId: number, shardId: number): void;
54
47
  handleWorkerMessage(message: WorkerMessage): Promise<void>;
55
48
  private generateNonce;
@@ -13,16 +13,12 @@ const common_1 = require("../../common");
13
13
  const constants_1 = require("../constants");
14
14
  const structures_1 = require("../structures");
15
15
  const timeout_1 = require("../structures/timeout");
16
- const memberUpdate_1 = require("./events/memberUpdate");
17
- const presenceUpdate_1 = require("./events/presenceUpdate");
18
16
  class WorkerManager extends Map {
19
17
  options;
20
18
  debugger;
21
19
  connectQueue;
22
20
  cacheAdapter;
23
21
  promises = new Map();
24
- memberUpdateHandler = new memberUpdate_1.MemberUpdateHandler();
25
- presenceUpdateHandler = new presenceUpdate_1.PresenceUpdateHandler();
26
22
  rest;
27
23
  constructor(options) {
28
24
  super();
@@ -103,9 +99,15 @@ class WorkerManager extends Map {
103
99
  case 'threads':
104
100
  worker.postMessage(body);
105
101
  break;
102
+ case 'custom':
103
+ this.options.adapter.postMessage(id, body);
104
+ break;
106
105
  }
107
106
  }
108
107
  async prepareWorkers(shards) {
108
+ const worker_threads = (0, common_1.lazyLoadPackage)('node:worker_threads');
109
+ if (!worker_threads)
110
+ throw new Error('Cannot prepare workers without worker_threads.');
109
111
  for (let i = 0; i < shards.length; i++) {
110
112
  let worker = this.get(i);
111
113
  if (!worker) {
@@ -117,24 +119,11 @@ class WorkerManager extends Map {
117
119
  intents: this.options.intents,
118
120
  workerId: i,
119
121
  workerProxy: this.options.workerProxy,
122
+ totalShards: this.totalShards,
123
+ mode: this.options.mode,
120
124
  });
121
125
  this.set(i, worker);
122
126
  }
123
- const listener = (message) => {
124
- if (message.type !== 'WORKER_START')
125
- return;
126
- worker.removeListener('message', listener);
127
- this.postMessage(i, {
128
- type: 'SPAWN_SHARDS',
129
- compress: this.options.compress ?? false,
130
- info: {
131
- ...this.options.info,
132
- shards: this.totalShards,
133
- },
134
- properties: this.options.properties,
135
- });
136
- };
137
- worker.on('message', listener);
138
127
  }
139
128
  }
140
129
  createWorker(workerData) {
@@ -163,11 +152,16 @@ class WorkerManager extends Map {
163
152
  worker.on('message', data => this.handleWorkerMessage(data));
164
153
  return worker;
165
154
  }
155
+ case 'custom':
156
+ this.options.adapter.spawn(workerData, env);
157
+ return {
158
+ ready: false,
159
+ };
166
160
  }
167
161
  }
168
162
  spawn(workerId, shardId) {
169
163
  this.connectQueue.push(() => {
170
- const worker = this.get(workerId);
164
+ const worker = this.has(workerId);
171
165
  if (!worker) {
172
166
  this.debugger?.fatal("Trying spawn with worker doesn't exist");
173
167
  return;
@@ -181,12 +175,28 @@ class WorkerManager extends Map {
181
175
  }
182
176
  async handleWorkerMessage(message) {
183
177
  switch (message.type) {
178
+ case 'WORKER_START':
179
+ {
180
+ this.postMessage(message.workerId, {
181
+ type: 'SPAWN_SHARDS',
182
+ compress: this.options.compress ?? false,
183
+ info: {
184
+ ...this.options.info,
185
+ shards: this.totalShards,
186
+ },
187
+ properties: {
188
+ ...constants_1.properties,
189
+ ...this.options.properties,
190
+ },
191
+ });
192
+ }
193
+ break;
184
194
  case 'CONNECT_QUEUE':
185
195
  this.spawn(message.workerId, message.shardId);
186
196
  break;
187
197
  case 'CACHE_REQUEST':
188
198
  {
189
- const worker = this.get(message.workerId);
199
+ const worker = this.has(message.workerId);
190
200
  if (!worker) {
191
201
  throw new Error('Invalid request from unavailable worker');
192
202
  }
@@ -200,21 +210,7 @@ class WorkerManager extends Map {
200
210
  }
201
211
  break;
202
212
  case 'RECEIVE_PAYLOAD':
203
- {
204
- switch (message.payload.t) {
205
- case 'GUILD_MEMBER_UPDATE':
206
- if (!this.memberUpdateHandler.check(message.payload.d)) {
207
- return;
208
- }
209
- break;
210
- case 'PRESENCE_UPDATE':
211
- if (!this.presenceUpdateHandler.check(message.payload.d)) {
212
- return;
213
- }
214
- break;
215
- }
216
- this.options.handlePayload(message.shardId, message.workerId, message.payload);
217
- }
213
+ await this.options.handlePayload(message.shardId, message.workerId, message.payload);
218
214
  break;
219
215
  case 'RESULT_PAYLOAD':
220
216
  {
@@ -322,7 +318,7 @@ class WorkerManager extends Map {
322
318
  }
323
319
  async send(data, shardId) {
324
320
  const workerId = this.calculateWorkerId(shardId);
325
- const worker = this.get(workerId);
321
+ const worker = this.has(workerId);
326
322
  if (!worker) {
327
323
  throw new Error(`Worker #${workerId} doesnt exist`);
328
324
  }
@@ -337,7 +333,7 @@ class WorkerManager extends Map {
337
333
  }
338
334
  async getShardInfo(shardId) {
339
335
  const workerId = this.calculateWorkerId(shardId);
340
- const worker = this.get(workerId);
336
+ const worker = this.has(workerId);
341
337
  if (!worker) {
342
338
  throw new Error(`Worker #${workerId} doesnt exist`);
343
339
  }
@@ -346,7 +342,7 @@ class WorkerManager extends Map {
346
342
  return this.generateSendPromise(nonce, 'Get shard info timeout');
347
343
  }
348
344
  async getWorkerInfo(workerId) {
349
- const worker = this.get(workerId);
345
+ const worker = this.has(workerId);
350
346
  if (!worker) {
351
347
  throw new Error(`Worker #${workerId} doesnt exist`);
352
348
  }
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { type Logger } from '../../common';
3
2
  /**
4
3
  * options of the dynamic bucket
@@ -62,7 +62,7 @@ class DynamicBucket {
62
62
  acquire(force = false) {
63
63
  return new Promise(res => {
64
64
  this.queue[force ? 'unshift' : 'push'](res);
65
- void this.processQueue();
65
+ this.processQueue();
66
66
  });
67
67
  }
68
68
  static chunk(array, chunks) {
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  export declare class ConnectTimeout {
3
2
  intervalTime: number;
4
3
  readonly promises: ((x: boolean) => any)[];