dfx 1.0.4 → 1.0.5

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 (416) hide show
  1. package/dist/Cache/driver.js +3 -0
  2. package/dist/Cache/driver.js.map +1 -0
  3. package/dist/Cache/memory.js +48 -0
  4. package/dist/Cache/memory.js.map +1 -0
  5. package/dist/Cache/memoryTTL.js +113 -0
  6. package/dist/Cache/memoryTTL.js.map +1 -0
  7. package/dist/Cache/prelude.js +130 -0
  8. package/dist/Cache/prelude.js.map +1 -0
  9. package/dist/Cache.js +77 -0
  10. package/dist/Cache.js.map +1 -0
  11. package/dist/DiscordConfig.js +29 -0
  12. package/dist/DiscordConfig.js.map +1 -0
  13. package/dist/DiscordGateway/DiscordWS.js +74 -0
  14. package/dist/DiscordGateway/DiscordWS.js.map +1 -0
  15. package/dist/DiscordGateway/Messaging.js +34 -0
  16. package/dist/DiscordGateway/Messaging.js.map +1 -0
  17. package/dist/DiscordGateway/Shard/StateStore.js +41 -0
  18. package/dist/DiscordGateway/Shard/StateStore.js.map +1 -0
  19. package/dist/DiscordGateway/Shard/heartbeats.js +25 -0
  20. package/dist/DiscordGateway/Shard/heartbeats.js.map +1 -0
  21. package/dist/DiscordGateway/Shard/identify.js +26 -0
  22. package/dist/DiscordGateway/Shard/identify.js.map +1 -0
  23. package/dist/DiscordGateway/Shard/sendEvents.js +26 -0
  24. package/dist/DiscordGateway/Shard/sendEvents.js.map +1 -0
  25. package/dist/DiscordGateway/Shard/utils.js +3 -0
  26. package/dist/DiscordGateway/Shard/utils.js.map +1 -0
  27. package/dist/DiscordGateway/Shard.js +134 -0
  28. package/dist/DiscordGateway/Shard.js.map +1 -0
  29. package/dist/DiscordGateway/ShardStore.js +23 -0
  30. package/dist/DiscordGateway/ShardStore.js.map +1 -0
  31. package/dist/DiscordGateway/Sharder.js +57 -0
  32. package/dist/DiscordGateway/Sharder.js.map +1 -0
  33. package/dist/DiscordGateway.js +21 -0
  34. package/dist/DiscordGateway.js.map +1 -0
  35. package/dist/DiscordREST/Generated.js +2302 -0
  36. package/dist/DiscordREST/Generated.js.map +1 -0
  37. package/dist/DiscordREST/utils.js +23 -0
  38. package/dist/DiscordREST/utils.js.map +1 -0
  39. package/dist/DiscordREST.js +123 -0
  40. package/dist/DiscordREST.js.map +1 -0
  41. package/dist/Helpers/flags.js +45 -0
  42. package/dist/Helpers/flags.js.map +1 -0
  43. package/dist/Helpers/intents.js +29 -0
  44. package/dist/Helpers/intents.js.map +1 -0
  45. package/dist/Helpers/interactions.js +114 -0
  46. package/dist/Helpers/interactions.js.map +1 -0
  47. package/dist/Helpers/members.js +10 -0
  48. package/dist/Helpers/members.js.map +1 -0
  49. package/dist/Helpers/permissions.js +84 -0
  50. package/dist/Helpers/permissions.js.map +1 -0
  51. package/dist/Helpers/ui.js +135 -0
  52. package/dist/Helpers/ui.js.map +1 -0
  53. package/dist/Interactions/builder.js +63 -0
  54. package/dist/Interactions/builder.js.map +1 -0
  55. package/dist/Interactions/commandHelper.js +47 -0
  56. package/dist/Interactions/commandHelper.js.map +1 -0
  57. package/dist/Interactions/context.js +35 -0
  58. package/dist/Interactions/context.js.map +1 -0
  59. package/dist/Interactions/definitions.js +51 -0
  60. package/dist/Interactions/definitions.js.map +1 -0
  61. package/dist/Interactions/error.js +2 -0
  62. package/dist/Interactions/error.js.map +1 -0
  63. package/dist/Interactions/gateway.js +75 -0
  64. package/dist/Interactions/gateway.js.map +1 -0
  65. package/dist/Interactions/handlers.js +61 -0
  66. package/dist/Interactions/handlers.js.map +1 -0
  67. package/dist/Interactions/index.js +11 -0
  68. package/dist/Interactions/index.js.map +1 -0
  69. package/dist/Interactions/utils.js +29 -0
  70. package/dist/Interactions/utils.js.map +1 -0
  71. package/dist/Interactions/webhook.js +56 -0
  72. package/dist/Interactions/webhook.js.map +1 -0
  73. package/dist/LICENSE +21 -0
  74. package/dist/README.md +66 -0
  75. package/dist/RateLimit/memory.js +35 -0
  76. package/dist/RateLimit/memory.js.map +1 -0
  77. package/dist/RateLimit/utils.js +18 -0
  78. package/dist/RateLimit/utils.js.map +1 -0
  79. package/dist/RateLimit.js +28 -0
  80. package/dist/RateLimit.js.map +1 -0
  81. package/dist/gateway.js +19 -0
  82. package/dist/gateway.js.map +1 -0
  83. package/dist/index.js +18 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/package.json +48 -0
  86. package/dist/src/Cache/driver.ts +37 -0
  87. package/dist/src/Cache/memory.ts +83 -0
  88. package/dist/src/Cache/memoryTTL.ts +225 -0
  89. package/dist/src/Cache/prelude.ts +279 -0
  90. package/dist/src/Cache.ts +261 -0
  91. package/dist/src/DiscordConfig.ts +67 -0
  92. package/dist/src/DiscordGateway/DiscordWS.ts +157 -0
  93. package/dist/src/DiscordGateway/Messaging.ts +71 -0
  94. package/dist/src/DiscordGateway/Shard/StateStore.ts +72 -0
  95. package/dist/src/DiscordGateway/Shard/heartbeats.ts +60 -0
  96. package/dist/src/DiscordGateway/Shard/identify.ts +50 -0
  97. package/dist/src/DiscordGateway/Shard/sendEvents.ts +43 -0
  98. package/dist/src/DiscordGateway/Shard/utils.ts +13 -0
  99. package/dist/src/DiscordGateway/Shard.ts +205 -0
  100. package/dist/src/DiscordGateway/ShardStore.ts +42 -0
  101. package/dist/src/DiscordGateway/Sharder.ts +118 -0
  102. package/dist/src/DiscordGateway.ts +79 -0
  103. package/dist/src/DiscordREST/Generated.ts +10832 -0
  104. package/dist/src/DiscordREST/utils.ts +42 -0
  105. package/dist/src/DiscordREST.ts +256 -0
  106. package/dist/src/Helpers/flags.ts +73 -0
  107. package/dist/src/Helpers/intents.ts +35 -0
  108. package/dist/src/Helpers/interactions.ts +317 -0
  109. package/dist/src/Helpers/members.ts +18 -0
  110. package/dist/src/Helpers/permissions.ts +145 -0
  111. package/dist/src/Helpers/ui.ts +253 -0
  112. package/dist/src/Interactions/builder.ts +171 -0
  113. package/dist/src/Interactions/commandHelper.ts +231 -0
  114. package/dist/src/Interactions/context.ts +104 -0
  115. package/dist/src/Interactions/definitions.ts +144 -0
  116. package/dist/src/Interactions/error.ts +3 -0
  117. package/dist/src/Interactions/gateway.ts +193 -0
  118. package/dist/src/Interactions/handlers.ts +108 -0
  119. package/dist/src/Interactions/index.ts +30 -0
  120. package/dist/src/Interactions/utils.ts +93 -0
  121. package/dist/src/Interactions/webhook.ts +204 -0
  122. package/dist/src/RateLimit/memory.ts +63 -0
  123. package/dist/src/RateLimit/utils.ts +28 -0
  124. package/dist/src/RateLimit.ts +90 -0
  125. package/dist/src/gateway.ts +50 -0
  126. package/dist/src/index.ts +44 -0
  127. package/dist/src/types.ts +3090 -0
  128. package/dist/src/utils/Effect.ts +65 -0
  129. package/dist/src/version.ts +1 -0
  130. package/dist/src/webhooks.ts +25 -0
  131. package/dist/types.js +356 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/utils/Effect.js +42 -0
  134. package/dist/utils/Effect.js.map +1 -0
  135. package/dist/version.js +2 -0
  136. package/dist/version.js.map +1 -0
  137. package/dist/webhooks.js +6 -0
  138. package/dist/webhooks.js.map +1 -0
  139. package/package.json +83 -31
  140. package/src/version.ts +1 -1
  141. package/Cache/driver.js +0 -11
  142. package/Cache/driver.js.map +0 -1
  143. package/Cache/memory.js +0 -57
  144. package/Cache/memory.js.map +0 -1
  145. package/Cache/memoryTTL.js +0 -128
  146. package/Cache/memoryTTL.js.map +0 -1
  147. package/Cache/prelude.js +0 -143
  148. package/Cache/prelude.js.map +0 -1
  149. package/Cache.js +0 -145
  150. package/Cache.js.map +0 -1
  151. package/DiscordConfig.js +0 -43
  152. package/DiscordConfig.js.map +0 -1
  153. package/DiscordGateway/DiscordWS.js +0 -86
  154. package/DiscordGateway/DiscordWS.js.map +0 -1
  155. package/DiscordGateway/Messaging.js +0 -43
  156. package/DiscordGateway/Messaging.js.map +0 -1
  157. package/DiscordGateway/Shard/StateStore.js +0 -49
  158. package/DiscordGateway/Shard/StateStore.js.map +0 -1
  159. package/DiscordGateway/Shard/heartbeats.js +0 -33
  160. package/DiscordGateway/Shard/heartbeats.js.map +0 -1
  161. package/DiscordGateway/Shard/identify.js +0 -37
  162. package/DiscordGateway/Shard/identify.js.map +0 -1
  163. package/DiscordGateway/Shard/sendEvents.js +0 -39
  164. package/DiscordGateway/Shard/sendEvents.js.map +0 -1
  165. package/DiscordGateway/Shard/utils.js +0 -11
  166. package/DiscordGateway/Shard/utils.js.map +0 -1
  167. package/DiscordGateway/Shard.js +0 -155
  168. package/DiscordGateway/Shard.js.map +0 -1
  169. package/DiscordGateway/ShardStore.js +0 -32
  170. package/DiscordGateway/ShardStore.js.map +0 -1
  171. package/DiscordGateway/Sharder.js +0 -75
  172. package/DiscordGateway/Sharder.js.map +0 -1
  173. package/DiscordGateway.js +0 -28
  174. package/DiscordGateway.js.map +0 -1
  175. package/DiscordREST/Generated.js +0 -2480
  176. package/DiscordREST/Generated.js.map +0 -1
  177. package/DiscordREST/utils.js +0 -32
  178. package/DiscordREST/utils.js.map +0 -1
  179. package/DiscordREST.js +0 -128
  180. package/DiscordREST.js.map +0 -1
  181. package/Helpers/flags.js +0 -57
  182. package/Helpers/flags.js.map +0 -1
  183. package/Helpers/intents.js +0 -34
  184. package/Helpers/intents.js.map +0 -1
  185. package/Helpers/interactions.js +0 -143
  186. package/Helpers/interactions.js.map +0 -1
  187. package/Helpers/members.js +0 -17
  188. package/Helpers/members.js.map +0 -1
  189. package/Helpers/permissions.js +0 -97
  190. package/Helpers/permissions.js.map +0 -1
  191. package/Helpers/ui.js +0 -162
  192. package/Helpers/ui.js.map +0 -1
  193. package/Interactions/builder.js +0 -64
  194. package/Interactions/builder.js.map +0 -1
  195. package/Interactions/commandHelper.js +0 -57
  196. package/Interactions/commandHelper.js.map +0 -1
  197. package/Interactions/context.js +0 -47
  198. package/Interactions/context.js.map +0 -1
  199. package/Interactions/definitions.js +0 -67
  200. package/Interactions/definitions.js.map +0 -1
  201. package/Interactions/error.js +0 -8
  202. package/Interactions/error.js.map +0 -1
  203. package/Interactions/gateway.js +0 -92
  204. package/Interactions/gateway.js.map +0 -1
  205. package/Interactions/handlers.js +0 -73
  206. package/Interactions/handlers.js.map +0 -1
  207. package/Interactions/index.js +0 -94
  208. package/Interactions/index.js.map +0 -1
  209. package/Interactions/utils.js +0 -35
  210. package/Interactions/utils.js.map +0 -1
  211. package/Interactions/webhook.js +0 -89
  212. package/Interactions/webhook.js.map +0 -1
  213. package/RateLimit/memory.js +0 -47
  214. package/RateLimit/memory.js.map +0 -1
  215. package/RateLimit/utils.js +0 -25
  216. package/RateLimit/utils.js.map +0 -1
  217. package/RateLimit.js +0 -37
  218. package/RateLimit.js.map +0 -1
  219. package/gateway.js +0 -72
  220. package/gateway.js.map +0 -1
  221. package/index.js +0 -71
  222. package/index.js.map +0 -1
  223. package/types.js +0 -408
  224. package/types.js.map +0 -1
  225. package/utils/Effect.js +0 -53
  226. package/utils/Effect.js.map +0 -1
  227. package/version.js +0 -8
  228. package/version.js.map +0 -1
  229. package/webhooks.js +0 -55
  230. package/webhooks.js.map +0 -1
  231. /package/{Cache → dist/Cache}/driver.d.ts +0 -0
  232. /package/{Cache → dist/Cache}/driver.d.ts.map +0 -0
  233. /package/{Cache → dist/Cache}/memory.d.ts +0 -0
  234. /package/{Cache → dist/Cache}/memory.d.ts.map +0 -0
  235. /package/{Cache → dist/Cache}/memoryTTL.d.ts +0 -0
  236. /package/{Cache → dist/Cache}/memoryTTL.d.ts.map +0 -0
  237. /package/{Cache → dist/Cache}/prelude.d.ts +0 -0
  238. /package/{Cache → dist/Cache}/prelude.d.ts.map +0 -0
  239. /package/{Cache.d.ts → dist/Cache.d.ts} +0 -0
  240. /package/{Cache.d.ts.map → dist/Cache.d.ts.map} +0 -0
  241. /package/{DiscordConfig.d.ts → dist/DiscordConfig.d.ts} +0 -0
  242. /package/{DiscordConfig.d.ts.map → dist/DiscordConfig.d.ts.map} +0 -0
  243. /package/{DiscordGateway → dist/DiscordGateway}/DiscordWS.d.ts +0 -0
  244. /package/{DiscordGateway → dist/DiscordGateway}/DiscordWS.d.ts.map +0 -0
  245. /package/{DiscordGateway → dist/DiscordGateway}/Messaging.d.ts +0 -0
  246. /package/{DiscordGateway → dist/DiscordGateway}/Messaging.d.ts.map +0 -0
  247. /package/{DiscordGateway → dist/DiscordGateway}/Shard/StateStore.d.ts +0 -0
  248. /package/{DiscordGateway → dist/DiscordGateway}/Shard/StateStore.d.ts.map +0 -0
  249. /package/{DiscordGateway → dist/DiscordGateway}/Shard/heartbeats.d.ts +0 -0
  250. /package/{DiscordGateway → dist/DiscordGateway}/Shard/heartbeats.d.ts.map +0 -0
  251. /package/{DiscordGateway → dist/DiscordGateway}/Shard/identify.d.ts +0 -0
  252. /package/{DiscordGateway → dist/DiscordGateway}/Shard/identify.d.ts.map +0 -0
  253. /package/{DiscordGateway → dist/DiscordGateway}/Shard/sendEvents.d.ts +0 -0
  254. /package/{DiscordGateway → dist/DiscordGateway}/Shard/sendEvents.d.ts.map +0 -0
  255. /package/{DiscordGateway → dist/DiscordGateway}/Shard/utils.d.ts +0 -0
  256. /package/{DiscordGateway → dist/DiscordGateway}/Shard/utils.d.ts.map +0 -0
  257. /package/{DiscordGateway → dist/DiscordGateway}/Shard.d.ts +0 -0
  258. /package/{DiscordGateway → dist/DiscordGateway}/Shard.d.ts.map +0 -0
  259. /package/{DiscordGateway → dist/DiscordGateway}/ShardStore.d.ts +0 -0
  260. /package/{DiscordGateway → dist/DiscordGateway}/ShardStore.d.ts.map +0 -0
  261. /package/{DiscordGateway → dist/DiscordGateway}/Sharder.d.ts +0 -0
  262. /package/{DiscordGateway → dist/DiscordGateway}/Sharder.d.ts.map +0 -0
  263. /package/{DiscordGateway.d.ts → dist/DiscordGateway.d.ts} +0 -0
  264. /package/{DiscordGateway.d.ts.map → dist/DiscordGateway.d.ts.map} +0 -0
  265. /package/{DiscordREST → dist/DiscordREST}/Generated.d.ts +0 -0
  266. /package/{DiscordREST → dist/DiscordREST}/Generated.d.ts.map +0 -0
  267. /package/{DiscordREST → dist/DiscordREST}/utils.d.ts +0 -0
  268. /package/{DiscordREST → dist/DiscordREST}/utils.d.ts.map +0 -0
  269. /package/{DiscordREST.d.ts → dist/DiscordREST.d.ts} +0 -0
  270. /package/{DiscordREST.d.ts.map → dist/DiscordREST.d.ts.map} +0 -0
  271. /package/{Helpers → dist/Helpers}/flags.d.ts +0 -0
  272. /package/{Helpers → dist/Helpers}/flags.d.ts.map +0 -0
  273. /package/{Helpers → dist/Helpers}/intents.d.ts +0 -0
  274. /package/{Helpers → dist/Helpers}/intents.d.ts.map +0 -0
  275. /package/{Helpers → dist/Helpers}/interactions.d.ts +0 -0
  276. /package/{Helpers → dist/Helpers}/interactions.d.ts.map +0 -0
  277. /package/{Helpers → dist/Helpers}/members.d.ts +0 -0
  278. /package/{Helpers → dist/Helpers}/members.d.ts.map +0 -0
  279. /package/{Helpers → dist/Helpers}/permissions.d.ts +0 -0
  280. /package/{Helpers → dist/Helpers}/permissions.d.ts.map +0 -0
  281. /package/{Helpers → dist/Helpers}/ui.d.ts +0 -0
  282. /package/{Helpers → dist/Helpers}/ui.d.ts.map +0 -0
  283. /package/{Interactions → dist/Interactions}/builder.d.ts +0 -0
  284. /package/{Interactions → dist/Interactions}/builder.d.ts.map +0 -0
  285. /package/{Interactions → dist/Interactions}/commandHelper.d.ts +0 -0
  286. /package/{Interactions → dist/Interactions}/commandHelper.d.ts.map +0 -0
  287. /package/{Interactions → dist/Interactions}/context.d.ts +0 -0
  288. /package/{Interactions → dist/Interactions}/context.d.ts.map +0 -0
  289. /package/{Interactions → dist/Interactions}/definitions.d.ts +0 -0
  290. /package/{Interactions → dist/Interactions}/definitions.d.ts.map +0 -0
  291. /package/{Interactions → dist/Interactions}/error.d.ts +0 -0
  292. /package/{Interactions → dist/Interactions}/error.d.ts.map +0 -0
  293. /package/{Interactions → dist/Interactions}/gateway.d.ts +0 -0
  294. /package/{Interactions → dist/Interactions}/gateway.d.ts.map +0 -0
  295. /package/{Interactions → dist/Interactions}/handlers.d.ts +0 -0
  296. /package/{Interactions → dist/Interactions}/handlers.d.ts.map +0 -0
  297. /package/{Interactions → dist/Interactions}/index.d.ts +0 -0
  298. /package/{Interactions → dist/Interactions}/index.d.ts.map +0 -0
  299. /package/{Interactions → dist/Interactions}/utils.d.ts +0 -0
  300. /package/{Interactions → dist/Interactions}/utils.d.ts.map +0 -0
  301. /package/{Interactions → dist/Interactions}/webhook.d.ts +0 -0
  302. /package/{Interactions → dist/Interactions}/webhook.d.ts.map +0 -0
  303. /package/{RateLimit → dist/RateLimit}/memory.d.ts +0 -0
  304. /package/{RateLimit → dist/RateLimit}/memory.d.ts.map +0 -0
  305. /package/{RateLimit → dist/RateLimit}/utils.d.ts +0 -0
  306. /package/{RateLimit → dist/RateLimit}/utils.d.ts.map +0 -0
  307. /package/{RateLimit.d.ts → dist/RateLimit.d.ts} +0 -0
  308. /package/{RateLimit.d.ts.map → dist/RateLimit.d.ts.map} +0 -0
  309. /package/{gateway.d.ts → dist/gateway.d.ts} +0 -0
  310. /package/{gateway.d.ts.map → dist/gateway.d.ts.map} +0 -0
  311. /package/{index.d.ts → dist/index.d.ts} +0 -0
  312. /package/{index.d.ts.map → dist/index.d.ts.map} +0 -0
  313. /package/{mjs → dist/mjs}/Cache/driver.mjs +0 -0
  314. /package/{mjs → dist/mjs}/Cache/driver.mjs.map +0 -0
  315. /package/{mjs → dist/mjs}/Cache/memory.mjs +0 -0
  316. /package/{mjs → dist/mjs}/Cache/memory.mjs.map +0 -0
  317. /package/{mjs → dist/mjs}/Cache/memoryTTL.mjs +0 -0
  318. /package/{mjs → dist/mjs}/Cache/memoryTTL.mjs.map +0 -0
  319. /package/{mjs → dist/mjs}/Cache/prelude.mjs +0 -0
  320. /package/{mjs → dist/mjs}/Cache/prelude.mjs.map +0 -0
  321. /package/{mjs → dist/mjs}/Cache.mjs +0 -0
  322. /package/{mjs → dist/mjs}/Cache.mjs.map +0 -0
  323. /package/{mjs → dist/mjs}/DiscordConfig.mjs +0 -0
  324. /package/{mjs → dist/mjs}/DiscordConfig.mjs.map +0 -0
  325. /package/{mjs → dist/mjs}/DiscordGateway/DiscordWS.mjs +0 -0
  326. /package/{mjs → dist/mjs}/DiscordGateway/DiscordWS.mjs.map +0 -0
  327. /package/{mjs → dist/mjs}/DiscordGateway/Messaging.mjs +0 -0
  328. /package/{mjs → dist/mjs}/DiscordGateway/Messaging.mjs.map +0 -0
  329. /package/{mjs → dist/mjs}/DiscordGateway/Shard/StateStore.mjs +0 -0
  330. /package/{mjs → dist/mjs}/DiscordGateway/Shard/StateStore.mjs.map +0 -0
  331. /package/{mjs → dist/mjs}/DiscordGateway/Shard/heartbeats.mjs +0 -0
  332. /package/{mjs → dist/mjs}/DiscordGateway/Shard/heartbeats.mjs.map +0 -0
  333. /package/{mjs → dist/mjs}/DiscordGateway/Shard/identify.mjs +0 -0
  334. /package/{mjs → dist/mjs}/DiscordGateway/Shard/identify.mjs.map +0 -0
  335. /package/{mjs → dist/mjs}/DiscordGateway/Shard/sendEvents.mjs +0 -0
  336. /package/{mjs → dist/mjs}/DiscordGateway/Shard/sendEvents.mjs.map +0 -0
  337. /package/{mjs → dist/mjs}/DiscordGateway/Shard/utils.mjs +0 -0
  338. /package/{mjs → dist/mjs}/DiscordGateway/Shard/utils.mjs.map +0 -0
  339. /package/{mjs → dist/mjs}/DiscordGateway/Shard.mjs +0 -0
  340. /package/{mjs → dist/mjs}/DiscordGateway/Shard.mjs.map +0 -0
  341. /package/{mjs → dist/mjs}/DiscordGateway/ShardStore.mjs +0 -0
  342. /package/{mjs → dist/mjs}/DiscordGateway/ShardStore.mjs.map +0 -0
  343. /package/{mjs → dist/mjs}/DiscordGateway/Sharder.mjs +0 -0
  344. /package/{mjs → dist/mjs}/DiscordGateway/Sharder.mjs.map +0 -0
  345. /package/{mjs → dist/mjs}/DiscordGateway.mjs +0 -0
  346. /package/{mjs → dist/mjs}/DiscordGateway.mjs.map +0 -0
  347. /package/{mjs → dist/mjs}/DiscordREST/Generated.mjs +0 -0
  348. /package/{mjs → dist/mjs}/DiscordREST/Generated.mjs.map +0 -0
  349. /package/{mjs → dist/mjs}/DiscordREST/utils.mjs +0 -0
  350. /package/{mjs → dist/mjs}/DiscordREST/utils.mjs.map +0 -0
  351. /package/{mjs → dist/mjs}/DiscordREST.mjs +0 -0
  352. /package/{mjs → dist/mjs}/DiscordREST.mjs.map +0 -0
  353. /package/{mjs → dist/mjs}/Helpers/flags.mjs +0 -0
  354. /package/{mjs → dist/mjs}/Helpers/flags.mjs.map +0 -0
  355. /package/{mjs → dist/mjs}/Helpers/intents.mjs +0 -0
  356. /package/{mjs → dist/mjs}/Helpers/intents.mjs.map +0 -0
  357. /package/{mjs → dist/mjs}/Helpers/interactions.mjs +0 -0
  358. /package/{mjs → dist/mjs}/Helpers/interactions.mjs.map +0 -0
  359. /package/{mjs → dist/mjs}/Helpers/members.mjs +0 -0
  360. /package/{mjs → dist/mjs}/Helpers/members.mjs.map +0 -0
  361. /package/{mjs → dist/mjs}/Helpers/permissions.mjs +0 -0
  362. /package/{mjs → dist/mjs}/Helpers/permissions.mjs.map +0 -0
  363. /package/{mjs → dist/mjs}/Helpers/ui.mjs +0 -0
  364. /package/{mjs → dist/mjs}/Helpers/ui.mjs.map +0 -0
  365. /package/{mjs → dist/mjs}/Interactions/builder.mjs +0 -0
  366. /package/{mjs → dist/mjs}/Interactions/builder.mjs.map +0 -0
  367. /package/{mjs → dist/mjs}/Interactions/commandHelper.mjs +0 -0
  368. /package/{mjs → dist/mjs}/Interactions/commandHelper.mjs.map +0 -0
  369. /package/{mjs → dist/mjs}/Interactions/context.mjs +0 -0
  370. /package/{mjs → dist/mjs}/Interactions/context.mjs.map +0 -0
  371. /package/{mjs → dist/mjs}/Interactions/definitions.mjs +0 -0
  372. /package/{mjs → dist/mjs}/Interactions/definitions.mjs.map +0 -0
  373. /package/{mjs → dist/mjs}/Interactions/error.mjs +0 -0
  374. /package/{mjs → dist/mjs}/Interactions/error.mjs.map +0 -0
  375. /package/{mjs → dist/mjs}/Interactions/gateway.mjs +0 -0
  376. /package/{mjs → dist/mjs}/Interactions/gateway.mjs.map +0 -0
  377. /package/{mjs → dist/mjs}/Interactions/handlers.mjs +0 -0
  378. /package/{mjs → dist/mjs}/Interactions/handlers.mjs.map +0 -0
  379. /package/{mjs → dist/mjs}/Interactions/index.mjs +0 -0
  380. /package/{mjs → dist/mjs}/Interactions/index.mjs.map +0 -0
  381. /package/{mjs → dist/mjs}/Interactions/utils.mjs +0 -0
  382. /package/{mjs → dist/mjs}/Interactions/utils.mjs.map +0 -0
  383. /package/{mjs → dist/mjs}/Interactions/webhook.mjs +0 -0
  384. /package/{mjs → dist/mjs}/Interactions/webhook.mjs.map +0 -0
  385. /package/{mjs → dist/mjs}/RateLimit/memory.mjs +0 -0
  386. /package/{mjs → dist/mjs}/RateLimit/memory.mjs.map +0 -0
  387. /package/{mjs → dist/mjs}/RateLimit/utils.mjs +0 -0
  388. /package/{mjs → dist/mjs}/RateLimit/utils.mjs.map +0 -0
  389. /package/{mjs → dist/mjs}/RateLimit.mjs +0 -0
  390. /package/{mjs → dist/mjs}/RateLimit.mjs.map +0 -0
  391. /package/{mjs → dist/mjs}/gateway.mjs +0 -0
  392. /package/{mjs → dist/mjs}/gateway.mjs.map +0 -0
  393. /package/{mjs → dist/mjs}/index.mjs +0 -0
  394. /package/{mjs → dist/mjs}/index.mjs.map +0 -0
  395. /package/{mjs → dist/mjs}/types.mjs +0 -0
  396. /package/{mjs → dist/mjs}/types.mjs.map +0 -0
  397. /package/{mjs → dist/mjs}/utils/Effect.mjs +0 -0
  398. /package/{mjs → dist/mjs}/utils/Effect.mjs.map +0 -0
  399. /package/{mjs → dist/mjs}/version.mjs +0 -0
  400. /package/{mjs → dist/mjs}/version.mjs.map +0 -0
  401. /package/{mjs → dist/mjs}/webhooks.mjs +0 -0
  402. /package/{mjs → dist/mjs}/webhooks.mjs.map +0 -0
  403. /package/{tsconfig.base.json → dist/tsconfig.base.json} +0 -0
  404. /package/{tsconfig.build.json → dist/tsconfig.build.json} +0 -0
  405. /package/{tsconfig.examples.json → dist/tsconfig.examples.json} +0 -0
  406. /package/{tsconfig.json → dist/tsconfig.json} +0 -0
  407. /package/{tsconfig.madge.json → dist/tsconfig.madge.json} +0 -0
  408. /package/{tsconfig.test.json → dist/tsconfig.test.json} +0 -0
  409. /package/{types.d.ts → dist/types.d.ts} +0 -0
  410. /package/{types.d.ts.map → dist/types.d.ts.map} +0 -0
  411. /package/{utils → dist/utils}/Effect.d.ts +0 -0
  412. /package/{utils → dist/utils}/Effect.d.ts.map +0 -0
  413. /package/{version.d.ts → dist/version.d.ts} +0 -0
  414. /package/{version.d.ts.map → dist/version.d.ts.map} +0 -0
  415. /package/{webhooks.d.ts → dist/webhooks.d.ts} +0 -0
  416. /package/{webhooks.d.ts.map → dist/webhooks.d.ts.map} +0 -0
@@ -0,0 +1,42 @@
1
+ import * as Duration from "effect/Duration"
2
+ import { pipe } from "effect/Function"
3
+ import * as Option from "effect/Option"
4
+ import * as Headers from "effect/unstable/http/Headers"
5
+
6
+ const majorResources = ["channels", "guilds", "webhooks"] as const
7
+
8
+ export const routeFromConfig = (path: string, method: string) => {
9
+ // Only keep major ID's
10
+ const routeURL = path
11
+ .split("?")[0]
12
+ .replace(/\/([A-Za-z]+)\/(\d{16,21}|@me)/g, (match, resource) =>
13
+ majorResources.includes(resource) ? match : `/${resource}`,
14
+ )
15
+ // Strip reactions
16
+ .replace(/\/reactions\/(.*)/, "/reactions")
17
+
18
+ return `${method}-${routeURL}`
19
+ }
20
+
21
+ export const numberHeader = (headers: Headers.Headers) => (key: string) =>
22
+ pipe(
23
+ Headers.get(headers, key),
24
+ Option.fromUndefinedOr,
25
+ Option.map(parseFloat),
26
+ Option.filter(n => !isNaN(n)),
27
+ )
28
+
29
+ export const retryAfter = (headers: Headers.Headers) =>
30
+ numberHeader(headers)("x-ratelimit-reset-after").pipe(
31
+ Option.orElse(() => numberHeader(headers)("retry-after")),
32
+ Option.map(Duration.seconds),
33
+ )
34
+
35
+ export const rateLimitFromHeaders = (headers: Headers.Headers) =>
36
+ Option.all({
37
+ bucket: Option.fromUndefinedOr(Headers.get(headers, "x-ratelimit-bucket")),
38
+ retryAfter: retryAfter(headers),
39
+ limit: numberHeader(headers)("x-ratelimit-limit"),
40
+ remaining: numberHeader(headers)("x-ratelimit-remaining"),
41
+ })
42
+ export type RateLimitDetails = ReturnType<typeof rateLimitFromHeaders>
@@ -0,0 +1,256 @@
1
+ import { DiscordConfig } from "./DiscordConfig.ts"
2
+ import {
3
+ rateLimitFromHeaders,
4
+ retryAfter,
5
+ routeFromConfig,
6
+ } from "./DiscordREST/utils.ts"
7
+ import { RateLimitStore, RateLimiter, RateLimiterLive } from "./RateLimit.ts"
8
+ import * as Discord from "./types.ts"
9
+ import { LIB_VERSION } from "./version.ts"
10
+ import * as Duration from "effect/Duration"
11
+ import { millis } from "effect/Duration"
12
+ import * as Effect from "effect/Effect"
13
+ import * as Fiber from "effect/Fiber"
14
+ import { flow } from "effect/Function"
15
+ import * as Layer from "effect/Layer"
16
+ import * as Option from "effect/Option"
17
+ import * as Redacted from "effect/Redacted"
18
+ import * as ServiceMap from "effect/ServiceMap"
19
+ import * as HttpBody from "effect/unstable/http/HttpBody"
20
+ import * as HttpClient from "effect/unstable/http/HttpClient"
21
+ import type { HttpClientError } from "effect/unstable/http/HttpClientError"
22
+ import * as HttpRequest from "effect/unstable/http/HttpClientRequest"
23
+ import type * as HttpResponse from "effect/unstable/http/HttpClientResponse"
24
+
25
+ const make = Effect.gen(function* () {
26
+ const { rest, token } = yield* DiscordConfig
27
+
28
+ const store = yield* RateLimitStore
29
+ const { maybeWait } = yield* RateLimiter
30
+
31
+ const globalRateLimit = maybeWait(
32
+ "dfx.rest.global",
33
+ Duration.fromInputUnsafe(rest.globalRateLimit.window),
34
+ rest.globalRateLimit.limit,
35
+ )
36
+
37
+ // Invalid route handling (40x)
38
+ const badRoutes = new Set<string>()
39
+ const tenMinutes = Duration.minutes(10)
40
+ const tenMinutesMillis = Duration.toMillis(tenMinutes)
41
+ const addBadRoute = (route: string) =>
42
+ Effect.suspend(() => {
43
+ badRoutes.add(route)
44
+ return Effect.log("bad route")
45
+ }).pipe(
46
+ Effect.andThen(
47
+ store.incrementCounter("dfx.rest.invalid", tenMinutesMillis, 10000),
48
+ ),
49
+ Effect.annotateLogs("route", route),
50
+ )
51
+
52
+ const invalidRateLimit = (route: string) =>
53
+ Effect.suspend(() =>
54
+ badRoutes.has(route)
55
+ ? maybeWait("dfx.rest.invalid", tenMinutes, 10000)
56
+ : Effect.void,
57
+ )
58
+
59
+ // Request rate limiting
60
+ const requestRateLimit = Effect.fnUntraced(function* (
61
+ path: string,
62
+ request: HttpRequest.HttpClientRequest,
63
+ ) {
64
+ const route = routeFromConfig(path, request.method)
65
+ const maybeBucket = yield* store.getBucketForRoute(route)
66
+ yield* invalidRateLimit(route)
67
+ if (Option.isNone(maybeBucket)) return
68
+ const bucket = maybeBucket.value
69
+ yield* maybeWait(
70
+ `dfx.rest.${bucket.key}`,
71
+ millis(bucket.resetAfter),
72
+ bucket.limit,
73
+ )
74
+ })
75
+
76
+ // Update rate limit buckets
77
+ const updateBuckets = Effect.fnUntraced(function* (
78
+ request: HttpRequest.HttpClientRequest,
79
+ response: HttpResponse.HttpClientResponse,
80
+ ) {
81
+ const route = routeFromConfig(request.url, request.method)
82
+ const rateLimitOption = rateLimitFromHeaders(response.headers)
83
+ if (Option.isNone(rateLimitOption)) return
84
+ const rateLimit = rateLimitOption.value
85
+ const hasBucket = yield* store.hasBucket(rateLimit.bucket)
86
+ const fibers: Array<Fiber.Fiber<unknown, unknown>> = []
87
+
88
+ badRoutes.delete(route)
89
+ fibers.push(
90
+ yield* Effect.forkChild(store.putBucketRoute(route, rateLimit.bucket)),
91
+ )
92
+
93
+ if (!hasBucket || rateLimit.limit - 1 === rateLimit.remaining) {
94
+ fibers.push(
95
+ yield* Effect.forkChild(store.removeCounter(`dfx.rest.?.${route}`)),
96
+ )
97
+ fibers.push(
98
+ yield* Effect.forkChild(
99
+ store.putBucket({
100
+ key: rateLimit.bucket,
101
+ resetAfter: Duration.toMillis(rateLimit.retryAfter),
102
+ limit:
103
+ !hasBucket && rateLimit.remaining > 0
104
+ ? rateLimit.remaining
105
+ : rateLimit.limit,
106
+ }),
107
+ ),
108
+ )
109
+ }
110
+
111
+ yield* Fiber.awaitAll(fibers)
112
+ })
113
+
114
+ const defaultClient = (yield* HttpClient.HttpClient).pipe(
115
+ HttpClient.transformResponse(
116
+ Effect.provideService(HttpClient.TracerPropagationEnabled, false),
117
+ ),
118
+ )
119
+ const rateLimitedClient: HttpClient.HttpClient = defaultClient.pipe(
120
+ HttpClient.tapRequest(request =>
121
+ Effect.andThen(requestRateLimit(request.url, request), globalRateLimit),
122
+ ),
123
+ HttpClient.transformResponse(
124
+ flow(
125
+ Effect.tap(response => updateBuckets(response.request, response)),
126
+ Effect.flatMap(response => {
127
+ const request = response.request
128
+
129
+ switch (response.status) {
130
+ case 403:
131
+ return Effect.as(
132
+ Effect.all(
133
+ [
134
+ Effect.annotateLogs(
135
+ Effect.logDebug("403"),
136
+ "url",
137
+ request.url,
138
+ ),
139
+ addBadRoute(routeFromConfig(request.url, request.method)),
140
+ updateBuckets(request, response),
141
+ ],
142
+ { concurrency: "unbounded", discard: true },
143
+ ),
144
+ response,
145
+ )
146
+
147
+ case 429:
148
+ return Effect.annotateLogs(
149
+ Effect.logDebug("429"),
150
+ "url",
151
+ request.url,
152
+ ).pipe(
153
+ Effect.andThen(
154
+ addBadRoute(routeFromConfig(request.url, request.method)),
155
+ ),
156
+ Effect.andThen(updateBuckets(request, response)),
157
+ Effect.andThen(
158
+ Effect.sleep(
159
+ Option.getOrElse(retryAfter(response.headers), () =>
160
+ Duration.seconds(5),
161
+ ),
162
+ ),
163
+ ),
164
+ Effect.andThen(rateLimitedClient.execute(request)),
165
+ )
166
+ }
167
+
168
+ return Effect.succeed(response)
169
+ }),
170
+ Effect.annotateLogs({
171
+ package: "dfx",
172
+ module: "DiscordREST",
173
+ }),
174
+ ),
175
+ ),
176
+ )
177
+
178
+ const httpClient = HttpClient.mapRequestInputEffect(rateLimitedClient, req =>
179
+ Effect.sync(() => {
180
+ const fiber = Fiber.getCurrent()!
181
+ let request = req.pipe(
182
+ HttpRequest.prependUrl(rest.baseUrl),
183
+ HttpRequest.setHeaders({
184
+ Authorization: `Bot ${Redacted.value(token)}`,
185
+ "User-Agent": `DiscordBot (https://github.com/tim-smart/dfx, ${LIB_VERSION})`,
186
+ }),
187
+ )
188
+ const formData = ServiceMap.getOption(fiber.services, DiscordFormData)
189
+ if (Option.isSome(formData)) {
190
+ if (request.body._tag === "Uint8Array") {
191
+ formData.value.set(
192
+ "payload_json",
193
+ new Blob([request.body.body as Uint8Array<ArrayBuffer>], {
194
+ type: "application/json",
195
+ }),
196
+ "",
197
+ )
198
+ }
199
+ request = HttpRequest.setBody(
200
+ request,
201
+ HttpBody.formData(formData.value),
202
+ )
203
+ }
204
+ return request
205
+ }),
206
+ )
207
+
208
+ return DiscordREST.of({
209
+ ...Discord.make(httpClient),
210
+ withFormData(formData) {
211
+ return Effect.provideService(DiscordFormData, formData)
212
+ },
213
+ withFiles(files) {
214
+ return <A, E, R>(
215
+ effect: Effect.Effect<A, E, R>,
216
+ ): Effect.Effect<A, E, R> =>
217
+ Effect.suspend(() => {
218
+ const formData = new FormData()
219
+ for (let i = 0; i < files.length; i++) {
220
+ formData.append(`files[${i}]`, files[i])
221
+ }
222
+ return Effect.provideService(effect, DiscordFormData, formData)
223
+ })
224
+ },
225
+ })
226
+ })
227
+
228
+ export type DiscordRESTError =
229
+ | HttpClientError
230
+ | Discord.DiscordRestError<"RatelimitedResponse", Discord.RatelimitedResponse>
231
+ | Discord.DiscordRestError<"ErrorResponse", Discord.ErrorResponse>
232
+
233
+ export class DiscordFormData extends ServiceMap.Service<
234
+ DiscordFormData,
235
+ FormData
236
+ >()("dfx/DiscordREST/DiscordFormData") {}
237
+
238
+ export interface DiscordRestService extends Discord.DiscordRest {
239
+ withFormData(
240
+ formData: FormData,
241
+ ): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
242
+ withFiles(
243
+ files: ReadonlyArray<File>,
244
+ ): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
245
+ }
246
+
247
+ export class DiscordREST extends ServiceMap.Service<
248
+ DiscordREST,
249
+ DiscordRestService
250
+ >()("dfx/DiscordREST") {}
251
+
252
+ export const DiscordRESTLive: Layer.Layer<
253
+ DiscordREST,
254
+ never,
255
+ DiscordConfig | HttpClient.HttpClient | RateLimitStore
256
+ > = Layer.effect(DiscordREST, make).pipe(Layer.provide(RateLimiterLive))
@@ -0,0 +1,73 @@
1
+ export type Flags<T extends number | bigint> = Record<string, T>
2
+
3
+ /**
4
+ * Returns all the flags OR'ed together.
5
+ */
6
+ export function all(flags: Flags<number>): number
7
+ export function all(flags: Flags<bigint>): bigint
8
+ export function all(flags: Flags<any>): any {
9
+ return Object.values(flags).reduce((acc, flag) => acc | flag)
10
+ }
11
+
12
+ /**
13
+ * Returns a function that converts a bitfield to a list of flag names.
14
+ */
15
+ export function toList<T extends Flags<number>>(
16
+ flags: T,
17
+ ): (bitfield: number) => Array<keyof T>
18
+ export function toList<T extends Flags<bigint>>(
19
+ flags: T,
20
+ ): (bitfield: bigint) => Array<keyof T>
21
+ export function toList<T extends Flags<any>>(
22
+ flags: T,
23
+ ): (bitfield: any) => Array<keyof T> {
24
+ const entries = Object.entries(flags)
25
+ return val => {
26
+ const out = []
27
+ for (let i = 0; i < entries.length; i++) {
28
+ const [key, flag] = entries[i]
29
+ if ((val & flag) === flag) {
30
+ out.push(key)
31
+ }
32
+ }
33
+ return out
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Returns a function that converts a list of flags names to a bigint bitfield.
39
+ */
40
+ export const fromListBigint =
41
+ <T extends Flags<bigint>>(flags: T) =>
42
+ (list: Array<keyof T>) =>
43
+ list.reduce((acc, key) => acc | flags[key], BigInt(0))
44
+
45
+ /**
46
+ * Returns a function that converts a list of flags names to a bitfield.
47
+ */
48
+ export const fromList =
49
+ <T extends Flags<number>>(flags: T) =>
50
+ (list: Array<keyof T>) =>
51
+ list.reduce((acc, key) => acc | flags[key], 0)
52
+
53
+ /**
54
+ * Checks if a bigint bitfield contains and a flag value.
55
+ */
56
+ export const hasBigInt = (flag: bigint | string) => {
57
+ const flagBigInt = BigInt(flag)
58
+ return (bits: bigint | string) => {
59
+ const bitsBigInt = BigInt(bits)
60
+ return (bitsBigInt & flagBigInt) === flagBigInt
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Checks if a bitfield contains and a flag value.
66
+ */
67
+ export const has = (flag: number | string) => {
68
+ const flagNumber = +flag
69
+ return (bits: number | string) => {
70
+ const bitsNumber = +bits
71
+ return (bitsNumber & flagNumber) === flagNumber
72
+ }
73
+ }
@@ -0,0 +1,35 @@
1
+ import * as Flags from "./flags.ts"
2
+ import * as Discord from "../types.ts"
3
+
4
+ /**
5
+ * All the intents
6
+ */
7
+ export const ALL = Flags.all(Discord.GatewayIntentBits)
8
+
9
+ /**
10
+ * Privileged intents
11
+ */
12
+ export const PRIVILEGED =
13
+ Discord.GatewayIntentBits.GuildPresences |
14
+ Discord.GatewayIntentBits.GuildMembers |
15
+ Discord.GatewayIntentBits.MessageContent
16
+
17
+ /**
18
+ * Un-privileged intents
19
+ */
20
+ export const UNPRIVILEGED = ALL ^ PRIVILEGED
21
+
22
+ /**
23
+ * Function that converts a intents bitfield value to a list of intent names.
24
+ */
25
+ export const toList = Flags.toList(Discord.GatewayIntentBits)
26
+
27
+ /**
28
+ * Function that converts a list of intent names to a bitfield value.
29
+ */
30
+ export const fromList = Flags.fromList(Discord.GatewayIntentBits)
31
+
32
+ /**
33
+ * Check if an intent flag exists in the permissions.
34
+ */
35
+ export const has = Flags.has