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