dfx 0.51.0 → 0.51.2

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 (335) hide show
  1. package/Cache/driver.d.ts +17 -16
  2. package/Cache/driver.d.ts.map +1 -1
  3. package/Cache/driver.js +10 -2
  4. package/Cache/driver.js.map +1 -1
  5. package/Cache/memory.d.ts +3 -3
  6. package/Cache/memory.d.ts.map +1 -1
  7. package/Cache/memory.js +55 -45
  8. package/Cache/memory.js.map +1 -1
  9. package/Cache/memoryTTL.d.ts +7 -6
  10. package/Cache/memoryTTL.d.ts.map +1 -1
  11. package/Cache/memoryTTL.js +126 -118
  12. package/Cache/memoryTTL.js.map +1 -1
  13. package/Cache/prelude.d.ts +53 -47
  14. package/Cache/prelude.d.ts.map +1 -1
  15. package/Cache/prelude.js +125 -96
  16. package/Cache/prelude.js.map +1 -1
  17. package/Cache.d.ts +33 -32
  18. package/Cache.d.ts.map +1 -1
  19. package/Cache.js +137 -65
  20. package/Cache.js.map +1 -1
  21. package/DiscordConfig.d.ts +26 -20
  22. package/DiscordConfig.d.ts.map +1 -1
  23. package/DiscordConfig.js +43 -25
  24. package/DiscordConfig.js.map +1 -1
  25. package/DiscordGateway/DiscordWS.d.ts +17 -14
  26. package/DiscordGateway/DiscordWS.d.ts.map +1 -1
  27. package/DiscordGateway/DiscordWS.js +49 -30
  28. package/DiscordGateway/DiscordWS.js.map +1 -1
  29. package/DiscordGateway/Shard/heartbeats.d.ts +7 -3
  30. package/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
  31. package/DiscordGateway/Shard/heartbeats.js +28 -18
  32. package/DiscordGateway/Shard/heartbeats.js.map +1 -1
  33. package/DiscordGateway/Shard/identify.d.ts +10 -8
  34. package/DiscordGateway/Shard/identify.d.ts.map +1 -1
  35. package/DiscordGateway/Shard/identify.js +41 -24
  36. package/DiscordGateway/Shard/identify.js.map +1 -1
  37. package/DiscordGateway/Shard/invalidSession.d.ts +6 -3
  38. package/DiscordGateway/Shard/invalidSession.d.ts.map +1 -1
  39. package/DiscordGateway/Shard/invalidSession.js +14 -5
  40. package/DiscordGateway/Shard/invalidSession.js.map +1 -1
  41. package/DiscordGateway/Shard/sendEvents.d.ts +1 -1
  42. package/DiscordGateway/Shard/sendEvents.d.ts.map +1 -1
  43. package/DiscordGateway/Shard/sendEvents.js +30 -18
  44. package/DiscordGateway/Shard/sendEvents.js.map +1 -1
  45. package/DiscordGateway/Shard/utils.d.ts +7 -3
  46. package/DiscordGateway/Shard/utils.d.ts.map +1 -1
  47. package/DiscordGateway/Shard/utils.js +19 -9
  48. package/DiscordGateway/Shard/utils.js.map +1 -1
  49. package/DiscordGateway/Shard.d.ts +15 -10
  50. package/DiscordGateway/Shard.d.ts.map +1 -1
  51. package/DiscordGateway/Shard.js +109 -87
  52. package/DiscordGateway/Shard.js.map +1 -1
  53. package/DiscordGateway/ShardStore.d.ts +9 -6
  54. package/DiscordGateway/ShardStore.d.ts.map +1 -1
  55. package/DiscordGateway/ShardStore.js +30 -18
  56. package/DiscordGateway/ShardStore.js.map +1 -1
  57. package/DiscordGateway/Sharder.d.ts +17 -11
  58. package/DiscordGateway/Sharder.d.ts.map +1 -1
  59. package/DiscordGateway/Sharder.js +82 -52
  60. package/DiscordGateway/Sharder.js.map +1 -1
  61. package/DiscordGateway/WS.d.ts +13 -10
  62. package/DiscordGateway/WS.d.ts.map +1 -1
  63. package/DiscordGateway/WS.js +100 -74
  64. package/DiscordGateway/WS.js.map +1 -1
  65. package/DiscordGateway.d.ts +19 -13
  66. package/DiscordGateway.d.ts.map +1 -1
  67. package/DiscordGateway.js +45 -32
  68. package/DiscordGateway.js.map +1 -1
  69. package/DiscordREST/types.d.ts +5 -5
  70. package/DiscordREST/types.d.ts.map +1 -1
  71. package/DiscordREST/types.js +5 -1
  72. package/DiscordREST/types.js.map +1 -1
  73. package/DiscordREST/utils.d.ts +3 -2
  74. package/DiscordREST/utils.d.ts.map +1 -1
  75. package/DiscordREST/utils.js +27 -17
  76. package/DiscordREST/utils.js.map +1 -1
  77. package/DiscordREST.d.ts +11 -8
  78. package/DiscordREST.d.ts.map +1 -1
  79. package/DiscordREST.js +141 -127
  80. package/DiscordREST.js.map +1 -1
  81. package/Helpers/flags.js +31 -19
  82. package/Helpers/flags.js.map +1 -1
  83. package/Helpers/intents.d.ts.map +1 -1
  84. package/Helpers/intents.js +22 -10
  85. package/Helpers/intents.js.map +1 -1
  86. package/Helpers/interactions.d.ts +22 -21
  87. package/Helpers/interactions.d.ts.map +1 -1
  88. package/Helpers/interactions.js +75 -39
  89. package/Helpers/interactions.js.map +1 -1
  90. package/Helpers/members.d.ts +3 -3
  91. package/Helpers/members.d.ts.map +1 -1
  92. package/Helpers/members.js +10 -3
  93. package/Helpers/members.js.map +1 -1
  94. package/Helpers/permissions.d.ts +5 -4
  95. package/Helpers/permissions.d.ts.map +1 -1
  96. package/Helpers/permissions.js +69 -52
  97. package/Helpers/permissions.js.map +1 -1
  98. package/Helpers/ui.d.ts +1 -1
  99. package/Helpers/ui.d.ts.map +1 -1
  100. package/Helpers/ui.js +44 -29
  101. package/Helpers/ui.js.map +1 -1
  102. package/Interactions/builder.d.ts +20 -19
  103. package/Interactions/builder.d.ts.map +1 -1
  104. package/Interactions/builder.js +66 -63
  105. package/Interactions/builder.js.map +1 -1
  106. package/Interactions/context.d.ts +26 -23
  107. package/Interactions/context.d.ts.map +1 -1
  108. package/Interactions/context.js +86 -57
  109. package/Interactions/context.js.map +1 -1
  110. package/Interactions/definitions.d.ts +33 -30
  111. package/Interactions/definitions.d.ts.map +1 -1
  112. package/Interactions/definitions.js +61 -47
  113. package/Interactions/definitions.js.map +1 -1
  114. package/Interactions/gateway.d.ts +15 -10
  115. package/Interactions/gateway.d.ts.map +1 -1
  116. package/Interactions/gateway.js +55 -42
  117. package/Interactions/gateway.js.map +1 -1
  118. package/Interactions/handlers.d.ts +6 -4
  119. package/Interactions/handlers.d.ts.map +1 -1
  120. package/Interactions/handlers.js +68 -57
  121. package/Interactions/handlers.js.map +1 -1
  122. package/Interactions/index.d.ts +11 -10
  123. package/Interactions/index.d.ts.map +1 -1
  124. package/Interactions/index.js +95 -10
  125. package/Interactions/index.js.map +1 -1
  126. package/Interactions/utils.d.ts +42 -40
  127. package/Interactions/utils.d.ts.map +1 -1
  128. package/Interactions/utils.js +40 -32
  129. package/Interactions/utils.js.map +1 -1
  130. package/Interactions/webhook.d.ts +20 -16
  131. package/Interactions/webhook.d.ts.map +1 -1
  132. package/Interactions/webhook.js +73 -41
  133. package/Interactions/webhook.js.map +1 -1
  134. package/Log.d.ts +8 -5
  135. package/Log.d.ts.map +1 -1
  136. package/Log.js +23 -14
  137. package/Log.js.map +1 -1
  138. package/RateLimit/memory.d.ts +1 -1
  139. package/RateLimit/memory.d.ts.map +1 -1
  140. package/RateLimit/memory.js +46 -33
  141. package/RateLimit/memory.js.map +1 -1
  142. package/RateLimit/utils.d.ts +1 -1
  143. package/RateLimit/utils.d.ts.map +1 -1
  144. package/RateLimit/utils.js +23 -16
  145. package/RateLimit/utils.js.map +1 -1
  146. package/RateLimit.d.ts +18 -14
  147. package/RateLimit.d.ts.map +1 -1
  148. package/RateLimit.js +40 -26
  149. package/RateLimit.js.map +1 -1
  150. package/gateway.d.ts +20 -13
  151. package/gateway.d.ts.map +1 -1
  152. package/gateway.js +72 -25
  153. package/gateway.js.map +1 -1
  154. package/index.d.ts +14 -13
  155. package/index.d.ts.map +1 -1
  156. package/index.js +71 -13
  157. package/index.js.map +1 -1
  158. package/mjs/Cache/driver.mjs +3 -0
  159. package/mjs/Cache/driver.mjs.map +1 -0
  160. package/mjs/Cache/memory.mjs +48 -0
  161. package/mjs/Cache/memory.mjs.map +1 -0
  162. package/mjs/Cache/memoryTTL.mjs +119 -0
  163. package/mjs/Cache/memoryTTL.mjs.map +1 -0
  164. package/mjs/Cache/prelude.mjs +125 -0
  165. package/mjs/Cache/prelude.mjs.map +1 -0
  166. package/mjs/Cache.mjs +87 -0
  167. package/mjs/Cache.mjs.map +1 -0
  168. package/mjs/DiscordConfig.mjs +34 -0
  169. package/mjs/DiscordConfig.mjs.map +1 -0
  170. package/mjs/DiscordGateway/DiscordWS.mjs +39 -0
  171. package/mjs/DiscordGateway/DiscordWS.mjs.map +1 -0
  172. package/mjs/DiscordGateway/Shard/heartbeats.mjs +21 -0
  173. package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +1 -0
  174. package/mjs/DiscordGateway/Shard/identify.mjs +37 -0
  175. package/mjs/DiscordGateway/Shard/identify.mjs.map +1 -0
  176. package/mjs/DiscordGateway/Shard/invalidSession.mjs +6 -0
  177. package/mjs/DiscordGateway/Shard/invalidSession.mjs.map +1 -0
  178. package/mjs/DiscordGateway/Shard/sendEvents.mjs +25 -0
  179. package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +1 -0
  180. package/mjs/DiscordGateway/Shard/utils.mjs +11 -0
  181. package/mjs/DiscordGateway/Shard/utils.mjs.map +1 -0
  182. package/mjs/DiscordGateway/Shard.mjs +99 -0
  183. package/mjs/DiscordGateway/Shard.mjs.map +1 -0
  184. package/mjs/DiscordGateway/ShardStore.mjs +24 -0
  185. package/mjs/DiscordGateway/ShardStore.mjs.map +1 -0
  186. package/mjs/DiscordGateway/Sharder.mjs +73 -0
  187. package/mjs/DiscordGateway/Sharder.mjs.map +1 -0
  188. package/mjs/DiscordGateway/WS.mjs +94 -0
  189. package/mjs/DiscordGateway/WS.mjs.map +1 -0
  190. package/mjs/DiscordGateway.mjs +36 -0
  191. package/mjs/DiscordGateway.mjs.map +1 -0
  192. package/mjs/DiscordREST/types.mjs +2 -0
  193. package/mjs/DiscordREST/types.mjs.map +1 -0
  194. package/mjs/DiscordREST/utils.mjs +19 -0
  195. package/mjs/DiscordREST/utils.mjs.map +1 -0
  196. package/mjs/DiscordREST.mjs +129 -0
  197. package/mjs/DiscordREST.mjs.map +1 -0
  198. package/mjs/Helpers/flags.mjs +36 -0
  199. package/mjs/Helpers/flags.mjs.map +1 -0
  200. package/mjs/Helpers/intents.mjs +27 -0
  201. package/mjs/Helpers/intents.mjs.map +1 -0
  202. package/mjs/Helpers/interactions.mjs +104 -0
  203. package/mjs/Helpers/interactions.mjs.map +1 -0
  204. package/mjs/Helpers/members.mjs +9 -0
  205. package/mjs/Helpers/members.mjs.map +1 -0
  206. package/mjs/Helpers/permissions.mjs +82 -0
  207. package/mjs/Helpers/permissions.mjs.map +1 -0
  208. package/mjs/Helpers/ui.mjs +66 -0
  209. package/mjs/Helpers/ui.mjs.map +1 -0
  210. package/mjs/Interactions/builder.mjs +62 -0
  211. package/mjs/Interactions/builder.mjs.map +1 -0
  212. package/mjs/Interactions/context.mjs +63 -0
  213. package/mjs/Interactions/context.mjs.map +1 -0
  214. package/mjs/Interactions/definitions.mjs +51 -0
  215. package/mjs/Interactions/definitions.mjs.map +1 -0
  216. package/mjs/Interactions/gateway.mjs +48 -0
  217. package/mjs/Interactions/gateway.mjs.map +1 -0
  218. package/mjs/Interactions/handlers.mjs +61 -0
  219. package/mjs/Interactions/handlers.mjs.map +1 -0
  220. package/mjs/Interactions/index.mjs +12 -0
  221. package/mjs/Interactions/index.mjs.map +1 -0
  222. package/mjs/Interactions/utils.mjs +35 -0
  223. package/mjs/Interactions/utils.mjs.map +1 -0
  224. package/mjs/Interactions/webhook.mjs +73 -0
  225. package/mjs/Interactions/webhook.mjs.map +1 -0
  226. package/mjs/Log.mjs +15 -0
  227. package/mjs/Log.mjs.map +1 -0
  228. package/mjs/RateLimit/memory.mjs +39 -0
  229. package/mjs/RateLimit/memory.mjs.map +1 -0
  230. package/mjs/RateLimit/utils.mjs +18 -0
  231. package/mjs/RateLimit/utils.mjs.map +1 -0
  232. package/mjs/RateLimit.mjs +29 -0
  233. package/mjs/RateLimit.mjs.map +1 -0
  234. package/mjs/gateway.mjs +27 -0
  235. package/mjs/gateway.mjs.map +1 -0
  236. package/mjs/index.mjs +15 -0
  237. package/mjs/index.mjs.map +1 -0
  238. package/mjs/types.mjs +1211 -0
  239. package/mjs/types.mjs.map +1 -0
  240. package/mjs/utils/Effect.mjs +28 -0
  241. package/mjs/utils/Effect.mjs.map +1 -0
  242. package/mjs/utils/tsplus.mjs +2 -0
  243. package/mjs/utils/tsplus.mjs.map +1 -0
  244. package/mjs/version.mjs +2 -0
  245. package/mjs/version.mjs.map +1 -0
  246. package/mjs/webhooks.mjs +30 -0
  247. package/mjs/webhooks.mjs.map +1 -0
  248. package/package.json +46 -50
  249. package/src/Cache/driver.ts +27 -15
  250. package/src/Cache/memory.ts +9 -5
  251. package/src/Cache/memoryTTL.ts +69 -53
  252. package/src/Cache/prelude.ts +113 -91
  253. package/src/Cache.ts +73 -58
  254. package/src/DiscordConfig.ts +33 -19
  255. package/src/DiscordGateway/DiscordWS.ts +28 -25
  256. package/src/DiscordGateway/Shard/heartbeats.ts +47 -27
  257. package/src/DiscordGateway/Shard/identify.ts +29 -25
  258. package/src/DiscordGateway/Shard/invalidSession.ts +9 -7
  259. package/src/DiscordGateway/Shard/sendEvents.ts +1 -1
  260. package/src/DiscordGateway/Shard/utils.ts +33 -9
  261. package/src/DiscordGateway/Shard.ts +119 -99
  262. package/src/DiscordGateway/ShardStore.ts +12 -5
  263. package/src/DiscordGateway/Sharder.ts +95 -74
  264. package/src/DiscordGateway/WS.ts +85 -60
  265. package/src/DiscordGateway.ts +58 -18
  266. package/src/DiscordREST/types.ts +5 -5
  267. package/src/DiscordREST/utils.ts +10 -7
  268. package/src/DiscordREST.ts +152 -132
  269. package/src/Helpers/intents.ts +1 -0
  270. package/src/Helpers/interactions.ts +51 -38
  271. package/src/Helpers/members.ts +2 -0
  272. package/src/Helpers/permissions.ts +6 -5
  273. package/src/Helpers/ui.ts +1 -1
  274. package/src/Interactions/builder.ts +56 -43
  275. package/src/Interactions/context.ts +68 -38
  276. package/src/Interactions/definitions.ts +32 -24
  277. package/src/Interactions/gateway.ts +72 -47
  278. package/src/Interactions/handlers.ts +56 -39
  279. package/src/Interactions/index.ts +6 -5
  280. package/src/Interactions/utils.ts +32 -21
  281. package/src/Interactions/webhook.ts +78 -42
  282. package/src/Log.ts +4 -0
  283. package/src/RateLimit/memory.ts +10 -4
  284. package/src/RateLimit/utils.ts +1 -1
  285. package/src/RateLimit.ts +38 -25
  286. package/src/gateway.ts +62 -25
  287. package/src/index.ts +29 -15
  288. package/src/utils/Effect.ts +69 -0
  289. package/src/version.ts +1 -0
  290. package/src/webhooks.ts +47 -20
  291. package/tsconfig.base.json +48 -0
  292. package/tsconfig.build.json +10 -0
  293. package/tsconfig.examples.json +11 -0
  294. package/tsconfig.json +12 -8
  295. package/tsconfig.madge.json +12 -0
  296. package/tsconfig.test.json +10 -0
  297. package/types.d.ts.map +1 -1
  298. package/types.js +1216 -1200
  299. package/types.js.map +1 -1
  300. package/utils/Effect.d.ts +8 -0
  301. package/utils/Effect.d.ts.map +1 -0
  302. package/utils/Effect.js +38 -0
  303. package/utils/Effect.js.map +1 -0
  304. package/utils/tsplus.js +5 -1
  305. package/utils/tsplus.js.map +1 -1
  306. package/version.d.ts +2 -0
  307. package/version.d.ts.map +1 -0
  308. package/version.js +9 -0
  309. package/version.js.map +1 -0
  310. package/webhooks.d.ts +14 -9
  311. package/webhooks.d.ts.map +1 -1
  312. package/webhooks.js +76 -27
  313. package/webhooks.js.map +1 -1
  314. package/_common.d.ts +0 -37
  315. package/_common.d.ts.map +0 -1
  316. package/_common.js +0 -8
  317. package/_common.js.map +0 -1
  318. package/global.d.ts +0 -18
  319. package/global.d.ts.map +0 -1
  320. package/global.js +0 -2
  321. package/global.js.map +0 -1
  322. package/src/_common.ts +0 -43
  323. package/src/global.ts +0 -45
  324. package/src/package.json +0 -52
  325. package/src/utils/effect.ts +0 -0
  326. package/src/utils/hub.ts +0 -47
  327. package/tsplus.config.json +0 -8
  328. package/utils/effect.d.ts +0 -2
  329. package/utils/effect.d.ts.map +0 -1
  330. package/utils/effect.js +0 -2
  331. package/utils/effect.js.map +0 -1
  332. package/utils/hub.d.ts +0 -12
  333. package/utils/hub.d.ts.map +0 -1
  334. package/utils/hub.js +0 -26
  335. package/utils/hub.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ import { Tag } from "@effect/data/Context";
2
+ import * as Option from "@effect/data/Option";
3
+ import * as Arr from "@effect/data/ReadonlyArray";
4
+ import * as Effect from "@effect/io/Effect";
5
+ import * as IxHelpers from "dfx/Helpers/interactions";
6
+ export const Interaction = /*#__PURE__*/Tag();
7
+ export const ApplicationCommand = /*#__PURE__*/Tag();
8
+ export const MessageComponentData = /*#__PURE__*/Tag();
9
+ export const ModalSubmitData = /*#__PURE__*/Tag();
10
+ export const FocusedOptionContext = /*#__PURE__*/Tag();
11
+ export const SubCommandContext = /*#__PURE__*/Tag();
12
+ export class ResolvedDataNotFound {
13
+ data;
14
+ name;
15
+ _tag = "ResolvedDataNotFound";
16
+ constructor(data, name) {
17
+ this.data = data;
18
+ this.name = name;
19
+ }
20
+ }
21
+ export const resolvedValues = f => Effect.flatMap(Interaction, ix => Effect.mapError(IxHelpers.resolveValues(f)(ix), () => new ResolvedDataNotFound(ix)));
22
+ export const resolved = (name, f) => Effect.flatMap(Interaction, ix => Effect.mapError(IxHelpers.resolveOptionValue(name, f)(ix), () => new ResolvedDataNotFound(ix, name)));
23
+ export const focusedOptionValue = /*#__PURE__*/Effect.map(FocusedOptionContext, _ => _.focusedOption.value ?? "");
24
+ export class SubCommandNotFound {
25
+ data;
26
+ _tag = "SubCommandNotFound";
27
+ constructor(data) {
28
+ this.data = data;
29
+ }
30
+ }
31
+ export const handleSubCommands = commands => ApplicationCommand.pipe(Effect.flatMap(data => Effect.mapError(Arr.findFirst(IxHelpers.allSubCommands(data), _ => !!commands[_.name]), () => new SubCommandNotFound(data))), Effect.flatMap(command => Effect.provideService(commands[command.name], SubCommandContext, {
32
+ command
33
+ })));
34
+ export const currentSubCommand = /*#__PURE__*/Effect.map(SubCommandContext, _ => _.command);
35
+ export const optionsMap = /*#__PURE__*/Effect.map(ApplicationCommand, IxHelpers.optionsMap);
36
+ export class RequiredOptionNotFound {
37
+ data;
38
+ name;
39
+ _tag = "RequiredOptionNotFound";
40
+ constructor(data, name) {
41
+ this.data = data;
42
+ this.name = name;
43
+ }
44
+ }
45
+ export const option = name => Effect.map(ApplicationCommand, IxHelpers.getOption(name));
46
+ export const optionValue = name => Effect.flatMap(option(name), _ => Option.match(Option.flatMapNullable(_, a => a.value), {
47
+ onNone: () => Effect.flatMap(ApplicationCommand, data => Effect.fail(new RequiredOptionNotFound(data, name))),
48
+ onSome: Effect.succeed
49
+ }));
50
+ export const optionValueOptional = name => Effect.map(option(name), Option.flatMapNullable(o => o.value));
51
+ export const modalValues = /*#__PURE__*/Effect.map(ModalSubmitData, IxHelpers.componentsMap);
52
+ export const modalValueOption = name => Effect.map(ModalSubmitData, IxHelpers.componentValue(name));
53
+ export class ModalValueNotFound {
54
+ data;
55
+ name;
56
+ _tag = "ModalValueNotFound";
57
+ constructor(data, name) {
58
+ this.data = data;
59
+ this.name = name;
60
+ }
61
+ }
62
+ export const modalValue = name => Effect.flatMap(ModalSubmitData, data => Effect.mapError(IxHelpers.componentValue(name)(data), () => new ModalValueNotFound(data, name)));
63
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.mjs","names":["Tag","Option","Arr","Effect","IxHelpers","Interaction","ApplicationCommand","MessageComponentData","ModalSubmitData","FocusedOptionContext","SubCommandContext","ResolvedDataNotFound","data","name","_tag","constructor","resolvedValues","f","flatMap","ix","mapError","resolveValues","resolved","resolveOptionValue","focusedOptionValue","map","_","focusedOption","value","SubCommandNotFound","handleSubCommands","commands","pipe","findFirst","allSubCommands","command","provideService","currentSubCommand","optionsMap","RequiredOptionNotFound","option","getOption","optionValue","match","flatMapNullable","a","onNone","fail","onSome","succeed","optionValueOptional","o","modalValues","componentsMap","modalValueOption","componentValue","ModalValueNotFound","modalValue"],"sources":["../../src/Interactions/context.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,sBAAsB;AAE1C,OAAO,KAAKC,MAAM,MAAM,qBAAqB;AAC7C,OAAO,KAAKC,GAAG,MAAM,4BAA4B;AACjD,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,SAAS,MAAM,0BAA0B;AAIrD,OAAO,MAAMC,WAAW,gBAAGL,GAAG,EAAuB;AACrD,OAAO,MAAMM,kBAAkB,gBAAGN,GAAG,EAAmC;AACxE,OAAO,MAAMO,oBAAoB,gBAAGP,GAAG,EAAiC;AACxE,OAAO,MAAMQ,eAAe,gBAAGR,GAAG,EAA4B;AAK9D,OAAO,MAAMS,oBAAoB,gBAAGT,GAAG,EAAwB;AAK/D,OAAO,MAAMU,iBAAiB,gBAAGV,GAAG,EAAqB;AAEzD,OAAM,MAAOW,oBAAoB;EAEVC,IAAA;EAAoCC,IAAA;EADhDC,IAAI,GAAG,sBAAsB;EACtCC,YAAqBH,IAAyB,EAAWC,IAAa;IAAjD,KAAAD,IAAI,GAAJA,IAAI;IAAgC,KAAAC,IAAI,GAAJA,IAAI;EAAY;;AAG3E,OAAO,MAAMG,cAAc,GACzBC,CAAwE,IAExEd,MAAM,CAACe,OAAO,CAACb,WAAW,EAAEc,EAAE,IAC5BhB,MAAM,CAACiB,QAAQ,CACbhB,SAAS,CAACiB,aAAa,CAACJ,CAAC,CAAC,CAACE,EAAE,CAAC,EAC9B,MAAM,IAAIR,oBAAoB,CAACQ,EAAE,CAAC,CACnC,CACF;AAEH,OAAO,MAAMG,QAAQ,GAAGA,CACtBT,IAAY,EACZI,CAAwE,KAExEd,MAAM,CAACe,OAAO,CAACb,WAAW,EAAEc,EAAE,IAC5BhB,MAAM,CAACiB,QAAQ,CACbhB,SAAS,CAACmB,kBAAkB,CAACV,IAAI,EAAEI,CAAC,CAAC,CAACE,EAAE,CAAC,EACzC,MAAM,IAAIR,oBAAoB,CAACQ,EAAE,EAAEN,IAAI,CAAC,CACzC,CACF;AAEH,OAAO,MAAMW,kBAAkB,gBAAGrB,MAAM,CAACsB,GAAG,CAC1ChB,oBAAoB,EACpBiB,CAAC,IAAIA,CAAC,CAACC,aAAa,CAACC,KAAK,IAAI,EAAE,CACjC;AAED,OAAM,MAAOC,kBAAkB;EAERjB,IAAA;EADZE,IAAI,GAAG,oBAAoB;EACpCC,YAAqBH,IAAqC;IAArC,KAAAA,IAAI,GAAJA,IAAI;EAAoC;;AAG/D,OAAO,MAAMkB,iBAAiB,GAM5BC,QAAa,IAoBbzB,kBAAkB,CAAC0B,IAAI,CACrB7B,MAAM,CAACe,OAAO,CAACN,IAAI,IACjBT,MAAM,CAACiB,QAAQ,CACblB,GAAG,CAAC+B,SAAS,CAAC7B,SAAS,CAAC8B,cAAc,CAACtB,IAAI,CAAC,EAAEc,CAAC,IAAI,CAAC,CAACK,QAAQ,CAACL,CAAC,CAACb,IAAI,CAAC,CAAC,EACtE,MAAM,IAAIgB,kBAAkB,CAACjB,IAAI,CAAC,CACnC,CACF,EACDT,MAAM,CAACe,OAAO,CAACiB,OAAO,IACpBhC,MAAM,CAACiC,cAAc,CAACL,QAAQ,CAACI,OAAO,CAACtB,IAAI,CAAC,EAAEH,iBAAiB,EAAE;EAC/DyB;CACD,CAAC,CACH,CACF;AAEH,OAAO,MAAME,iBAAiB,gBAI1BlC,MAAM,CAACsB,GAAG,CAACf,iBAAiB,EAAEgB,CAAC,IAAIA,CAAC,CAACS,OAAO,CAAC;AAEjD,OAAO,MAAMG,UAAU,gBAInBnC,MAAM,CAACsB,GAAG,CAACnB,kBAAkB,EAAEF,SAAS,CAACkC,UAAU,CAAC;AAExD,OAAM,MAAOC,sBAAsB;EAGtB3B,IAAA;EAGAC,IAAA;EALFC,IAAI,GAAG,wBAAwB;EACxCC,YACWH,IAE0C,EAC1CC,IAAY;IAHZ,KAAAD,IAAI,GAAJA,IAAI;IAGJ,KAAAC,IAAI,GAAJA,IAAI;EACZ;;AAGL,OAAO,MAAM2B,MAAM,GAAI3B,IAAY,IACjCV,MAAM,CAACsB,GAAG,CAACnB,kBAAkB,EAAEF,SAAS,CAACqC,SAAS,CAAC5B,IAAI,CAAC,CAAC;AAE3D,OAAO,MAAM6B,WAAW,GAAI7B,IAAY,IACtCV,MAAM,CAACe,OAAO,CAACsB,MAAM,CAAC3B,IAAI,CAAC,EAAEa,CAAC,IAC5BzB,MAAM,CAAC0C,KAAK,CACV1C,MAAM,CAAC2C,eAAe,CAAClB,CAAC,EAAEmB,CAAC,IAAIA,CAAC,CAACjB,KAAK,CAAC,EACvC;EACEkB,MAAM,EAAEA,CAAA,KACN3C,MAAM,CAACe,OAAO,CAACZ,kBAAkB,EAAEM,IAAI,IACrCT,MAAM,CAAC4C,IAAI,CAAC,IAAIR,sBAAsB,CAAC3B,IAAI,EAAEC,IAAI,CAAC,CAAC,CACpD;EACHmC,MAAM,EAAE7C,MAAM,CAAC8C;CAChB,CACF,CACF;AAEH,OAAO,MAAMC,mBAAmB,GAAIrC,IAAY,IAC9CV,MAAM,CAACsB,GAAG,CACRe,MAAM,CAAC3B,IAAI,CAAC,EACZZ,MAAM,CAAC2C,eAAe,CAACO,CAAC,IAAIA,CAAC,CAACvB,KAAK,CAAC,CACrC;AAEH,OAAO,MAAMwB,WAAW,gBAAGjD,MAAM,CAACsB,GAAG,CAACjB,eAAe,EAAEJ,SAAS,CAACiD,aAAa,CAAC;AAE/E,OAAO,MAAMC,gBAAgB,GAAIzC,IAAY,IAC3CV,MAAM,CAACsB,GAAG,CAACjB,eAAe,EAAEJ,SAAS,CAACmD,cAAc,CAAC1C,IAAI,CAAC,CAAC;AAE7D,OAAM,MAAO2C,kBAAkB;EAER5C,IAAA;EAAiCC,IAAA;EAD7CC,IAAI,GAAG,oBAAoB;EACpCC,YAAqBH,IAAsB,EAAWC,IAAY;IAA7C,KAAAD,IAAI,GAAJA,IAAI;IAA6B,KAAAC,IAAI,GAAJA,IAAI;EAAW;;AAGvE,OAAO,MAAM4C,UAAU,GAAI5C,IAAY,IACrCV,MAAM,CAACe,OAAO,CAACV,eAAe,EAAEI,IAAI,IAClCT,MAAM,CAACiB,QAAQ,CACbhB,SAAS,CAACmD,cAAc,CAAC1C,IAAI,CAAC,CAACD,IAAI,CAAC,EACpC,MAAM,IAAI4C,kBAAkB,CAAC5C,IAAI,EAAEC,IAAI,CAAC,CACzC,CACF"}
@@ -0,0 +1,51 @@
1
+ export class GlobalApplicationCommand {
2
+ command;
3
+ handle;
4
+ _tag = "GlobalApplicationCommand";
5
+ constructor(command, handle) {
6
+ this.command = command;
7
+ this.handle = handle;
8
+ }
9
+ }
10
+ export const global = (command, handle) => new GlobalApplicationCommand(command, handle);
11
+ export class GuildApplicationCommand {
12
+ command;
13
+ handle;
14
+ _tag = "GuildApplicationCommand";
15
+ constructor(command, handle) {
16
+ this.command = command;
17
+ this.handle = handle;
18
+ }
19
+ }
20
+ export const guild = (command, handle) => new GuildApplicationCommand(command, handle);
21
+ export class MessageComponent {
22
+ predicate;
23
+ handle;
24
+ _tag = "MessageComponent";
25
+ constructor(predicate, handle) {
26
+ this.predicate = predicate;
27
+ this.handle = handle;
28
+ }
29
+ }
30
+ export const messageComponent = (pred, handle) => new MessageComponent(pred, handle);
31
+ export class ModalSubmit {
32
+ predicate;
33
+ handle;
34
+ _tag = "ModalSubmit";
35
+ constructor(predicate, handle) {
36
+ this.predicate = predicate;
37
+ this.handle = handle;
38
+ }
39
+ }
40
+ export const modalSubmit = (pred, handle) => new ModalSubmit(pred, handle);
41
+ export class Autocomplete {
42
+ predicate;
43
+ handle;
44
+ _tag = "Autocomplete";
45
+ constructor(predicate, handle) {
46
+ this.predicate = predicate;
47
+ this.handle = handle;
48
+ }
49
+ }
50
+ export const autocomplete = (pred, handle) => new Autocomplete(pred, handle);
51
+ //# sourceMappingURL=definitions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.mjs","names":["GlobalApplicationCommand","command","handle","_tag","constructor","global","GuildApplicationCommand","guild","MessageComponent","predicate","messageComponent","pred","ModalSubmit","modalSubmit","Autocomplete","autocomplete"],"sources":["../../src/Interactions/definitions.ts"],"sourcesContent":[null],"mappings":"AAgBA,OAAM,MAAOA,wBAAwB;EAGxBC,OAAA;EACAC,MAAA;EAHFC,IAAI,GAAG,0BAA0B;EAC1CC,YACWH,OAAqD,EACrDC,MAA4B;IAD5B,KAAAD,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMG,MAAM,GAAGA,CAKpBJ,OAAU,EACVC,MAA+B,KAE/B,IAAIF,wBAAwB,CAG1BC,OAAc,EAAEC,MAAa,CAAC;AAElC,OAAM,MAAOI,uBAAuB;EAGvBL,OAAA;EACAC,MAAA;EAHFC,IAAI,GAAG,yBAAyB;EACzCC,YACWH,OAAoD,EACpDC,MAA4B;IAD5B,KAAAD,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMK,KAAK,GAAGA,CAKnBN,OAAU,EACVC,MAA+B,KAE/B,IAAII,uBAAuB,CAGzBL,OAAc,EAAEC,MAAa,CAAC;AAElC,OAAM,MAAOM,gBAAgB;EAGhBC,SAAA;EACAP,MAAA;EAHFC,IAAI,GAAG,kBAAkB;EAClCC,YACWK,SAA6D,EAC7DP,MAAwD;IADxD,KAAAO,SAAS,GAATA,SAAS;IACT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMQ,gBAAgB,GAAGA,CAC9BC,IAA0D,EAC1DT,MAA2D,KAE3D,IAAIM,gBAAgB,CAGlBG,IAAW,EAAET,MAAa,CAAC;AAE/B,OAAM,MAAOU,WAAW;EAGXH,SAAA;EACAP,MAAA;EAHFC,IAAI,GAAG,aAAa;EAC7BC,YACWK,SAA6D,EAC7DP,MAAwD;IADxD,KAAAO,SAAS,GAATA,SAAS;IACT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMW,WAAW,GAAGA,CACzBF,IAA0D,EAC1DT,MAA0D,KAE1D,IAAIU,WAAW,CAGbD,IAAW,EAAET,MAAa,CAAC;AAE/B,OAAM,MAAOY,YAAY;EAGZL,SAAA;EAIAP,MAAA;EANFC,IAAI,GAAG,cAAc;EAC9BC,YACWK,SAGwB,EACxBP,MAAwD;IAJxD,KAAAO,SAAS,GAATA,SAAS;IAIT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMa,YAAY,GAAGA,CAC1BJ,IAGmC,EACnCT,MAA0D,KAE1D,IAAIY,YAAY,CAQdH,IAAW,EAAET,MAAa,CAAC"}
@@ -0,0 +1,48 @@
1
+ import * as Http from "@effect-http/client";
2
+ import * as Chunk from "@effect/data/Chunk";
3
+ import { Tag } from "@effect/data/Context";
4
+ import * as Duration from "@effect/data/Duration";
5
+ import * as Effect from "@effect/io/Effect";
6
+ import * as Layer from "@effect/io/Layer";
7
+ import * as Queue from "@effect/io/Queue";
8
+ import * as Ref from "@effect/io/Ref";
9
+ import { DiscordGateway } from "dfx/DiscordGateway";
10
+ import { DiscordREST } from "dfx/DiscordREST";
11
+ import { handlers } from "dfx/Interactions/handlers";
12
+ import { Interaction, builder } from "dfx/Interactions/index";
13
+ import * as EffectUtils from "dfx/utils/Effect";
14
+ /**
15
+ * @tsplus pipeable dfx/InteractionBuilder runGateway
16
+ */
17
+ export const run = (postHandler, {
18
+ sync = true
19
+ } = {}) => ix => Effect.gen(function* (_) {
20
+ const GlobalApplicationCommand = ix.definitions.pipe(Chunk.map(_ => _[0]), Chunk.filter(_ => _._tag === "GlobalApplicationCommand"), Chunk.toReadonlyArray);
21
+ const GuildApplicationCommand = ix.definitions.pipe(Chunk.map(_ => _[0]), Chunk.filter(_ => _._tag === "GuildApplicationCommand"), Chunk.toReadonlyArray);
22
+ const gateway = yield* _(DiscordGateway);
23
+ const rest = yield* _(DiscordREST);
24
+ const application = yield* _(rest.getCurrentBotApplicationInformation(), Effect.flatMap(a => a.json));
25
+ const globalSync = rest.bulkOverwriteGlobalApplicationCommands(application.id, {
26
+ body: Http.body.json(GlobalApplicationCommand.map(_ => _.command))
27
+ });
28
+ const guildSync = GuildApplicationCommand.length ? gateway.handleDispatch("GUILD_CREATE", a => rest.bulkOverwriteGuildApplicationCommands(application.id, a.id, GuildApplicationCommand.map(_ => _.command))) : Effect.never;
29
+ const handle = handlers(ix.definitions, (i, r) => rest.createInteractionResponse(i.id, i.token, r));
30
+ const run = gateway.handleDispatch("INTERACTION_CREATE", i => Effect.provideService(postHandler(handle[i.type](i)), Interaction, i));
31
+ return yield* _(sync ? Effect.forever(Effect.all(run, globalSync, guildSync, {
32
+ concurrency: "unbounded",
33
+ discard: true
34
+ })) : run);
35
+ });
36
+ const makeRegistry = /*#__PURE__*/Effect.gen(function* (_) {
37
+ const ref = yield* _(Ref.make(builder));
38
+ const queue = yield* _(Queue.sliding(1));
39
+ const register = ix => Effect.flatMap(Ref.updateAndGet(ref, _ => _.concat(ix)), _ => Queue.offer(queue, _));
40
+ const run_ = (onError, opts) => EffectUtils.foreverSwitch(Queue.take(queue), ix => Effect.delay(run(Effect.catchAllCause(onError), opts)(ix), Duration.seconds(0.1)));
41
+ return {
42
+ register,
43
+ run: run_
44
+ };
45
+ });
46
+ export const InteractionsRegistry = /*#__PURE__*/Tag();
47
+ export const InteractionsRegistryLive = /*#__PURE__*/Layer.effect(InteractionsRegistry, makeRegistry);
48
+ //# sourceMappingURL=gateway.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.mjs","names":["Http","Chunk","Tag","Duration","Effect","Layer","Queue","Ref","DiscordGateway","DiscordREST","handlers","Interaction","builder","EffectUtils","run","postHandler","sync","ix","gen","_","GlobalApplicationCommand","definitions","pipe","map","filter","_tag","toReadonlyArray","GuildApplicationCommand","gateway","rest","application","getCurrentBotApplicationInformation","flatMap","a","json","globalSync","bulkOverwriteGlobalApplicationCommands","id","body","command","guildSync","length","handleDispatch","bulkOverwriteGuildApplicationCommands","never","handle","i","r","createInteractionResponse","token","provideService","type","forever","all","concurrency","discard","makeRegistry","ref","make","queue","sliding","register","updateAndGet","concat","offer","run_","onError","opts","foreverSwitch","take","delay","catchAllCause","seconds","InteractionsRegistry","InteractionsRegistryLive","effect"],"sources":["../../src/Interactions/gateway.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import * as Option from "@effect/data/Option";
2
+ import * as Effect from "@effect/io/Effect";
3
+ import * as IxHelpers from "dfx/Helpers/interactions";
4
+ import * as Ctx from "dfx/Interactions/context";
5
+ import { flattenDefinitions, splitDefinitions } from "dfx/Interactions/utils";
6
+ export class DefinitionNotFound {
7
+ interaction;
8
+ _tag = "DefinitionNotFound";
9
+ constructor(interaction) {
10
+ this.interaction = interaction;
11
+ }
12
+ }
13
+ export const handlers = (definitions, handleResponse) => {
14
+ const flattened = flattenDefinitions(definitions, handleResponse);
15
+ const {
16
+ Commands,
17
+ Autocomplete,
18
+ MessageComponent,
19
+ ModalSubmit
20
+ } = splitDefinitions(flattened);
21
+ return {
22
+ [1 /* Discord.InteractionType.PING */]: () => Effect.succeed({
23
+ type: 1 /* Discord.InteractionCallbackType.PONG */
24
+ }),
25
+
26
+ [2 /* Discord.InteractionType.APPLICATION_COMMAND */]: i => {
27
+ const data = i.data;
28
+ return Option.match(Option.fromNullable(Commands[data.name]), {
29
+ onNone: () => Effect.fail(new DefinitionNotFound(i)),
30
+ onSome: command => Effect.provideService(command.handle(i), Ctx.ApplicationCommand, data)
31
+ });
32
+ },
33
+ [5 /* Discord.InteractionType.MODAL_SUBMIT */]: i => {
34
+ const data = i.data;
35
+ return Effect.findFirst(ModalSubmit, _ => _.predicate(data.custom_id)).pipe(Effect.flatMap(Option.match({
36
+ onNone: () => Effect.fail(new DefinitionNotFound(i)),
37
+ onSome: match => Effect.provideService(match.handle(i), Ctx.ModalSubmitData, data)
38
+ })));
39
+ },
40
+ [3 /* Discord.InteractionType.MESSAGE_COMPONENT */]: i => {
41
+ const data = i.data;
42
+ return Effect.findFirst(MessageComponent, _ => _.predicate(data.custom_id)).pipe(Effect.flatMap(Option.match({
43
+ onNone: () => Effect.fail(new DefinitionNotFound(i)),
44
+ onSome: match => Effect.provideService(match.handle(i), Ctx.MessageComponentData, data)
45
+ })));
46
+ },
47
+ [4 /* Discord.InteractionType.APPLICATION_COMMAND_AUTOCOMPLETE */]: i => {
48
+ const data = i.data;
49
+ return Option.match(IxHelpers.focusedOption(data), {
50
+ onNone: () => Effect.fail(new DefinitionNotFound(i)),
51
+ onSome: focusedOption => Effect.findFirst(Autocomplete, _ => _.predicate(data, focusedOption)).pipe(Effect.flatMap(Option.match({
52
+ onNone: () => Effect.fail(new DefinitionNotFound(i)),
53
+ onSome: match => Effect.provideService(match.handle(i), Ctx.ApplicationCommand, data).pipe(Effect.provideService(Ctx.FocusedOptionContext, {
54
+ focusedOption
55
+ }))
56
+ })))
57
+ });
58
+ }
59
+ };
60
+ };
61
+ //# sourceMappingURL=handlers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.mjs","names":["Option","Effect","IxHelpers","Ctx","flattenDefinitions","splitDefinitions","DefinitionNotFound","interaction","_tag","constructor","handlers","definitions","handleResponse","flattened","Commands","Autocomplete","MessageComponent","ModalSubmit","succeed","type","i","data","match","fromNullable","name","onNone","fail","onSome","command","provideService","handle","ApplicationCommand","findFirst","_","predicate","custom_id","pipe","flatMap","ModalSubmitData","MessageComponentData","focusedOption","FocusedOptionContext"],"sources":["../../src/Interactions/handlers.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import * as Effect from "@effect/io/Effect";
2
+ export { response } from "dfx/Helpers/interactions";
3
+ export * from "dfx/Interactions/builder";
4
+ export * from "dfx/Interactions/context";
5
+ export { autocomplete, global, guild, messageComponent, modalSubmit } from "dfx/Interactions/definitions";
6
+ // Filters
7
+ export const id = query => customId => Effect.succeed(query === customId);
8
+ export const idStartsWith = query => customId => Effect.succeed(customId.startsWith(query));
9
+ export const idRegex = query => customId => Effect.succeed(query.test(customId));
10
+ export const option = (command, optionName) => (data, focusedOption) => Effect.succeed(data.name === command && focusedOption.name === optionName);
11
+ export const optionOnly = optionName => (_, focusedOption) => Effect.succeed(focusedOption.name === optionName);
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Effect","response","autocomplete","global","guild","messageComponent","modalSubmit","id","query","customId","succeed","idStartsWith","startsWith","idRegex","test","option","command","optionName","data","focusedOption","name","optionOnly","_"],"sources":["../../src/Interactions/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAG3C,SAASC,QAAQ,QAAQ,0BAA0B;AACnD,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AACxC,SAEEC,YAAY,EACZC,MAAM,EACNC,KAAK,EACLC,gBAAgB,EAChBC,WAAW,QACN,8BAA8B;AAErC;AACA,OAAO,MAAMC,EAAE,GAAIC,KAAa,IAAMC,QAAgB,IACpDT,MAAM,CAACU,OAAO,CAACF,KAAK,KAAKC,QAAQ,CAAC;AAEpC,OAAO,MAAME,YAAY,GAAIH,KAAa,IAAMC,QAAgB,IAC9DT,MAAM,CAACU,OAAO,CAACD,QAAQ,CAACG,UAAU,CAACJ,KAAK,CAAC,CAAC;AAE5C,OAAO,MAAMK,OAAO,GAAIL,KAAa,IAAMC,QAAgB,IACzDT,MAAM,CAACU,OAAO,CAACF,KAAK,CAACM,IAAI,CAACL,QAAQ,CAAC,CAAC;AAEtC,OAAO,MAAMM,MAAM,GACjBA,CAACC,OAAe,EAAEC,UAAkB,KACpC,CACEC,IAAmD,EACnDC,aAGC,KAEDnB,MAAM,CAACU,OAAO,CAACQ,IAAI,CAACE,IAAI,KAAKJ,OAAO,IAAIG,aAAa,CAACC,IAAI,KAAKH,UAAU,CAAC;AAE9E,OAAO,MAAMI,UAAU,GACpBJ,UAAkB,IACnB,CACEK,CAAU,EACVH,aAGC,KAEDnB,MAAM,CAACU,OAAO,CAACS,aAAa,CAACC,IAAI,KAAKH,UAAU,CAAC"}
@@ -0,0 +1,35 @@
1
+ import * as Chunk from "@effect/data/Chunk";
2
+ import * as Effect from "@effect/io/Effect";
3
+ import * as Ctx from "dfx/Interactions/context";
4
+ const context = {
5
+ resolve: Ctx.resolved,
6
+ option: Ctx.option,
7
+ optionValue: Ctx.optionValue,
8
+ optionValueOptional: Ctx.optionValueOptional,
9
+ subCommands: Ctx.handleSubCommands
10
+ };
11
+ export const flattenDefinitions = (definitions, handleResponse) => Chunk.map(definitions, ([definition, transform]) => ({
12
+ ...definition,
13
+ handle: i => Effect.isEffect(definition.handle) ? transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _))) : transform(Effect.flatMap(definition.handle(context), _ => handleResponse(i, _)))
14
+ }));
15
+ export const splitDefinitions = definitions => {
16
+ const grouped = Chunk.reduce(definitions, {
17
+ Autocomplete: Chunk.empty(),
18
+ GlobalApplicationCommand: Chunk.empty(),
19
+ GuildApplicationCommand: Chunk.empty(),
20
+ MessageComponent: Chunk.empty(),
21
+ ModalSubmit: Chunk.empty()
22
+ }, (acc, d) => ({
23
+ ...acc,
24
+ [d._tag]: Chunk.append(acc[d._tag], d)
25
+ }));
26
+ const Commands = Chunk.appendAll(grouped.GlobalApplicationCommand, grouped.GuildApplicationCommand).pipe(Chunk.reduce({}, (acc, d) => ({
27
+ ...acc,
28
+ [d.command.name]: d
29
+ })));
30
+ return {
31
+ ...grouped,
32
+ Commands
33
+ };
34
+ };
35
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","names":["Chunk","Effect","Ctx","context","resolve","resolved","option","optionValue","optionValueOptional","subCommands","handleSubCommands","flattenDefinitions","definitions","handleResponse","map","definition","transform","handle","i","isEffect","flatMap","_","splitDefinitions","grouped","reduce","Autocomplete","empty","GlobalApplicationCommand","GuildApplicationCommand","MessageComponent","ModalSubmit","acc","d","_tag","append","Commands","appendAll","pipe","command","name"],"sources":["../../src/Interactions/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,oBAAoB;AAC3C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,GAAG,MAAM,0BAA0B;AAoB/C,MAAMC,OAAO,GAAyB;EACpCC,OAAO,EAAEF,GAAG,CAACG,QAAQ;EACrBC,MAAM,EAAEJ,GAAG,CAACI,MAAM;EAClBC,WAAW,EAAEL,GAAG,CAACK,WAAW;EAC5BC,mBAAmB,EAAEN,GAAG,CAACM,mBAAmB;EAC5CC,WAAW,EAAEP,GAAG,CAACQ;CACX;AAER,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,WAKC,EACDC,cAG2B,KAE3Bb,KAAK,CAACc,GAAG,CAACF,WAAW,EAAE,CAAC,CAACG,UAAU,EAAEC,SAAS,CAAC,MAAM;EACnD,GAAGD,UAAU;EACbE,MAAM,EAAGC,CAAsB,IAC7BjB,MAAM,CAACkB,QAAQ,CAACJ,UAAU,CAACE,MAAM,CAAC,GAC9BD,SAAS,CACPf,MAAM,CAACmB,OAAO,CAACL,UAAU,CAACE,MAAM,EAAEI,CAAC,IAAIR,cAAc,CAACK,CAAC,EAAEG,CAAC,CAAC,CAAC,CAC7D,GACDL,SAAS,CACPf,MAAM,CAACmB,OAAO,CAACL,UAAU,CAACE,MAAM,CAACd,OAAO,CAAC,EAAEkB,CAAC,IAC1CR,cAAc,CAACK,CAAC,EAAEG,CAAC,CAAC,CACrB;CAEV,CAAC,CAAC;AAEL,OAAO,MAAMC,gBAAgB,GAC3BV,WAA0D,IACxD;EACF,MAAMW,OAAO,GAAGvB,KAAK,CAACwB,MAAM,CAC1BZ,WAAW,EACX;IACEa,YAAY,EAAEzB,KAAK,CAAC0B,KAAK,EAAE;IAC3BC,wBAAwB,EAAE3B,KAAK,CAAC0B,KAAK,EAAE;IACvCE,uBAAuB,EAAE5B,KAAK,CAAC0B,KAAK,EAAE;IACtCG,gBAAgB,EAAE7B,KAAK,CAAC0B,KAAK,EAAE;IAC/BI,WAAW,EAAE9B,KAAK,CAAC0B,KAAK;GAKzB,EACD,CAACK,GAAG,EAAEC,CAAC,MAAM;IACX,GAAGD,GAAG;IACN,CAACC,CAAC,CAACC,IAAI,GAAGjC,KAAK,CAACkC,MAAM,CAACH,GAAG,CAACC,CAAC,CAACC,IAAI,CAAqB,EAAED,CAAC;GAC1D,CAAC,CACH;EAED,MAAMG,QAAQ,GAAGnC,KAAK,CAACoC,SAAS,CAC9Bb,OAAO,CAACI,wBAAwB,EAChCJ,OAAO,CAACK,uBAAuB,CAChC,CAACS,IAAI,CACJrC,KAAK,CAACwB,MAAM,CACV,EAA6D,EAC7D,CAACO,GAAG,EAAEC,CAAC,MACJ;IACC,GAAGD,GAAG;IACN,CAACC,CAAC,CAACM,OAAO,CAACC,IAAI,GAAGP;GACX,EACZ,CACF;EAED,OAAO;IACL,GAAGT,OAAO;IACVY;GACD;AACH,CAAC"}
@@ -0,0 +1,73 @@
1
+ import * as Chunk from "@effect/data/Chunk";
2
+ import { Tag } from "@effect/data/Context";
3
+ import { identity } from "@effect/data/Function";
4
+ import * as Option from "@effect/data/Option";
5
+ import * as ConfigSecret from "@effect/io/Config/Secret";
6
+ import * as Effect from "@effect/io/Effect";
7
+ import * as Layer from "@effect/io/Layer";
8
+ import { handlers } from "dfx/Interactions/handlers";
9
+ import { Interaction } from "dfx/Interactions/index";
10
+ import * as Verify from "discord-verify";
11
+ export class BadWebhookSignature {
12
+ _tag = "BadWebhookSignature";
13
+ }
14
+ const checkSignature = (publicKey, headers, body, crypto, algorithm) => Option.all({
15
+ signature: Option.fromNullable(headers["x-signature-ed25519"]),
16
+ timestamp: Option.fromNullable(headers["x-signature-timestamp"])
17
+ }).pipe(Effect.flatMap(_ => Effect.promise(() => Verify.verify(body, _.signature, _.timestamp, publicKey, crypto, algorithm))), Effect.filterOrFail(identity, () => new BadWebhookSignature()), Effect.catchAllCause(() => Effect.fail(new BadWebhookSignature())), Effect.asUnit);
18
+ const makeConfig = ({
19
+ applicationId,
20
+ publicKey,
21
+ crypto,
22
+ algorithm
23
+ }) => ({
24
+ applicationId,
25
+ publicKey: ConfigSecret.value(publicKey),
26
+ crypto,
27
+ algorithm: Verify.PlatformAlgorithm[algorithm]
28
+ });
29
+ export const WebhookConfig = /*#__PURE__*/Tag();
30
+ export const makeConfigLayer = opts => Layer.succeed(WebhookConfig, makeConfig(opts));
31
+ export const makeFromConfig = a => Layer.effect(WebhookConfig, Effect.map(Effect.config(a), makeConfig));
32
+ export class WebhookParseError {
33
+ reason;
34
+ _tag = "WebhookParseError";
35
+ constructor(reason) {
36
+ this.reason = reason;
37
+ }
38
+ }
39
+ const fromHeadersAndBody = (headers, body) => Effect.tap(WebhookConfig, ({
40
+ publicKey,
41
+ crypto,
42
+ algorithm
43
+ }) => checkSignature(publicKey, headers, body, crypto, algorithm)).pipe(Effect.flatMap(() => Effect.try({
44
+ try: () => JSON.parse(body),
45
+ catch: reason => new WebhookParseError(reason)
46
+ })));
47
+ const run = (definitions, handleResponse) => {
48
+ const handler = handlers(definitions, handleResponse);
49
+ return (headers, body) => Effect.flatMap(fromHeadersAndBody(headers, body), interaction => Effect.provideService(handler[interaction.type](interaction), Interaction, interaction));
50
+ };
51
+ /**
52
+ * @tsplus getter dfx/InteractionBuilder webhookHandler
53
+ */
54
+ export const makeHandler = ix => {
55
+ const handle = run(Chunk.map(ix.definitions, ([d]) => [d, identity]), (_i, r) => Effect.succeed(r));
56
+ return ({
57
+ headers,
58
+ body,
59
+ success,
60
+ error
61
+ }) => handle(headers, body).pipe(Effect.flatMap(success), Effect.catchAllCause(error));
62
+ };
63
+ /**
64
+ * @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
65
+ */
66
+ export const makeSimpleHandler = ix => {
67
+ const handle = run(Chunk.map(ix.definitions, ([d]) => [d, identity]), (_i, r) => Effect.succeed(r));
68
+ return ({
69
+ headers,
70
+ body
71
+ }) => handle(headers, body);
72
+ };
73
+ //# sourceMappingURL=webhook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.mjs","names":["Chunk","Tag","identity","Option","ConfigSecret","Effect","Layer","handlers","Interaction","Verify","BadWebhookSignature","_tag","checkSignature","publicKey","headers","body","crypto","algorithm","all","signature","fromNullable","timestamp","pipe","flatMap","_","promise","verify","filterOrFail","catchAllCause","fail","asUnit","makeConfig","applicationId","value","PlatformAlgorithm","WebhookConfig","makeConfigLayer","opts","succeed","makeFromConfig","a","effect","map","config","WebhookParseError","reason","constructor","fromHeadersAndBody","tap","try","JSON","parse","catch","run","definitions","handleResponse","handler","interaction","provideService","type","makeHandler","ix","handle","d","_i","r","success","error","makeSimpleHandler"],"sources":["../../src/Interactions/webhook.ts"],"sourcesContent":[null],"mappings":"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"}
package/mjs/Log.mjs ADDED
@@ -0,0 +1,15 @@
1
+ import * as Effect from "@effect/io/Effect";
2
+ import * as Layer from "@effect/io/Layer";
3
+ import { Tag } from "@effect/data/Context";
4
+ const make = (debug = false) => ({
5
+ info: (...args) => Effect.sync(() => {
6
+ console.error("INFO", ...args);
7
+ }),
8
+ debug: (...args) => debug ? Effect.sync(() => {
9
+ console.error("DEBUG", ...args);
10
+ }) : Effect.unit
11
+ });
12
+ export const Log = /*#__PURE__*/Tag();
13
+ export const LiveLog = /*#__PURE__*/Layer.succeed(Log, /*#__PURE__*/make(false));
14
+ export const LiveLogDebug = /*#__PURE__*/Layer.succeed(Log, /*#__PURE__*/make(true));
15
+ //# sourceMappingURL=Log.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Log.mjs","names":["Effect","Layer","Tag","make","debug","info","args","sync","console","error","unit","Log","LiveLog","succeed","LiveLogDebug"],"sources":["../src/Log.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AACzC,SAASC,GAAG,QAAQ,sBAAsB;AAE1C,MAAMC,IAAI,GAAGA,CAACC,KAAK,GAAG,KAAK,MAAM;EAC/BC,IAAI,EAAEA,CAAC,GAAGC,IAAW,KACnBN,MAAM,CAACO,IAAI,CAAC,MAAK;IACfC,OAAO,CAACC,KAAK,CAAC,MAAM,EAAE,GAAGH,IAAI,CAAC;EAChC,CAAC,CAAC;EACJF,KAAK,EAAEA,CAAC,GAAGE,IAAW,KACpBF,KAAK,GACDJ,MAAM,CAACO,IAAI,CAAC,MAAK;IACfC,OAAO,CAACC,KAAK,CAAC,OAAO,EAAE,GAAGH,IAAI,CAAC;EACjC,CAAC,CAAC,GACFN,MAAM,CAACU;CACd,CAAC;AAGF,OAAO,MAAMC,GAAG,gBAAGT,GAAG,EAAO;AAC7B,OAAO,MAAMU,OAAO,gBAAGX,KAAK,CAACY,OAAO,CAACF,GAAG,eAAER,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,OAAO,MAAMW,YAAY,gBAAGb,KAAK,CAACY,OAAO,CAACF,GAAG,eAAER,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import * as Option from "@effect/data/Option";
2
+ import * as Effect from "@effect/io/Effect";
3
+ export const make = () => {
4
+ const buckets = new Map();
5
+ const routes = new Map();
6
+ const counters = new Map();
7
+ const getCounter = key => Option.filter(Option.fromNullable(counters.get(key)), c => c.expires > Date.now());
8
+ const getBucketForRoute = route => Effect.sync(() => Option.fromNullable(buckets.get(routes.get(route))));
9
+ return {
10
+ hasBucket: key => Effect.sync(() => buckets.has(key)),
11
+ putBucket: bucket => Effect.sync(() => {
12
+ buckets.set(bucket.key, bucket);
13
+ }),
14
+ getBucketForRoute,
15
+ putBucketRoute: (route, bucket) => Effect.sync(() => {
16
+ routes.set(route, bucket);
17
+ }),
18
+ removeCounter: key => Effect.sync(() => {
19
+ counters.delete(key);
20
+ }),
21
+ incrementCounter: (key, window, limit) => Effect.sync(() => {
22
+ const now = Date.now();
23
+ const perRequest = Math.ceil(window / limit);
24
+ const counter = Option.getOrElse(getCounter(key), () => ({
25
+ expires: now,
26
+ count: 0
27
+ }));
28
+ const count = counter.count + 1;
29
+ const expires = counter.expires + perRequest;
30
+ counters.set(key, {
31
+ ...counter,
32
+ count,
33
+ expires
34
+ });
35
+ return [count, expires - now];
36
+ })
37
+ };
38
+ };
39
+ //# sourceMappingURL=memory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.mjs","names":["Option","Effect","make","buckets","Map","routes","counters","getCounter","key","filter","fromNullable","get","c","expires","Date","now","getBucketForRoute","route","sync","hasBucket","has","putBucket","bucket","set","putBucketRoute","removeCounter","delete","incrementCounter","window","limit","perRequest","Math","ceil","counter","getOrElse","count"],"sources":["../../src/RateLimit/memory.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,qBAAqB;AAC7C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAQ3C,OAAO,MAAMC,IAAI,GAAGA,CAAA,KAAqB;EACvC,MAAMC,OAAO,GAAG,IAAIC,GAAG,EAAyB;EAChD,MAAMC,MAAM,GAAG,IAAID,GAAG,EAAkB;EACxC,MAAME,QAAQ,GAAG,IAAIF,GAAG,EAAmB;EAE3C,MAAMG,UAAU,GAAIC,GAAW,IAC7BR,MAAM,CAACS,MAAM,CACXT,MAAM,CAACU,YAAY,CAACJ,QAAQ,CAACK,GAAG,CAACH,GAAG,CAAC,CAAC,EACtCI,CAAC,IAAIA,CAAC,CAACC,OAAO,GAAGC,IAAI,CAACC,GAAG,EAAE,CAC5B;EAEH,MAAMC,iBAAiB,GAAIC,KAAa,IACtChB,MAAM,CAACiB,IAAI,CAAC,MAAMlB,MAAM,CAACU,YAAY,CAACP,OAAO,CAACQ,GAAG,CAACN,MAAM,CAACM,GAAG,CAACM,KAAK,CAAE,CAAC,CAAC,CAAC;EAEzE,OAAO;IACLE,SAAS,EAAEX,GAAG,IAAIP,MAAM,CAACiB,IAAI,CAAC,MAAMf,OAAO,CAACiB,GAAG,CAACZ,GAAG,CAAC,CAAC;IAErDa,SAAS,EAAEC,MAAM,IACfrB,MAAM,CAACiB,IAAI,CAAC,MAAK;MACff,OAAO,CAACoB,GAAG,CAACD,MAAM,CAACd,GAAG,EAAEc,MAAM,CAAC;IACjC,CAAC,CAAC;IAEJN,iBAAiB;IAEjBQ,cAAc,EAAEA,CAACP,KAAK,EAAEK,MAAM,KAC5BrB,MAAM,CAACiB,IAAI,CAAC,MAAK;MACfb,MAAM,CAACkB,GAAG,CAACN,KAAK,EAAEK,MAAM,CAAC;IAC3B,CAAC,CAAC;IAEJG,aAAa,EAAEjB,GAAG,IAChBP,MAAM,CAACiB,IAAI,CAAC,MAAK;MACfZ,QAAQ,CAACoB,MAAM,CAAClB,GAAG,CAAC;IACtB,CAAC,CAAC;IAEJmB,gBAAgB,EAAEA,CAACnB,GAAG,EAAEoB,MAAM,EAAEC,KAAK,KACnC5B,MAAM,CAACiB,IAAI,CAAC,MAAK;MACf,MAAMH,GAAG,GAAGD,IAAI,CAACC,GAAG,EAAE;MACtB,MAAMe,UAAU,GAAGC,IAAI,CAACC,IAAI,CAACJ,MAAM,GAAGC,KAAK,CAAC;MAC5C,MAAMI,OAAO,GAAGjC,MAAM,CAACkC,SAAS,CAC9B3B,UAAU,CAACC,GAAG,CAAC,EACf,OAAgB;QACdK,OAAO,EAAEE,GAAG;QACZoB,KAAK,EAAE;OACR,CAAC,CACH;MAED,MAAMA,KAAK,GAAGF,OAAO,CAACE,KAAK,GAAG,CAAC;MAC/B,MAAMtB,OAAO,GAAGoB,OAAO,CAACpB,OAAO,GAAGiB,UAAU;MAC5CxB,QAAQ,CAACiB,GAAG,CAACf,GAAG,EAAE;QAAE,GAAGyB,OAAO;QAAEE,KAAK;QAAEtB;MAAO,CAAE,CAAC;MAEjD,OAAO,CAACsB,KAAK,EAAEtB,OAAO,GAAGE,GAAG,CAAC;IAC/B,CAAC;GACJ;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { millis, zero } from "@effect/data/Duration";
2
+ export const delayFrom = (window, limit, count, ttl) => {
3
+ const perRequest = Math.ceil(window / limit);
4
+ const totalTime = count * perRequest;
5
+ const elapsedTime = totalTime - ttl;
6
+ const elapsedWindows = Math.floor(elapsedTime / window);
7
+ const completedRequests = elapsedWindows * limit;
8
+ const remainingRequests = count - completedRequests;
9
+ const remainingWindows = Math.floor((remainingRequests - 1) / limit);
10
+ const delayRemainder = elapsedTime % window;
11
+ const requestRemainder = count % limit;
12
+ const staggerDelay = requestRemainder * 50;
13
+ if (remainingWindows === 0) {
14
+ return zero;
15
+ }
16
+ return millis(remainingWindows * window - delayRemainder + staggerDelay);
17
+ };
18
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","names":["millis","zero","delayFrom","window","limit","count","ttl","perRequest","Math","ceil","totalTime","elapsedTime","elapsedWindows","floor","completedRequests","remainingRequests","remainingWindows","delayRemainder","requestRemainder","staggerDelay"],"sources":["../../src/RateLimit/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAmBA,MAAM,EAAEC,IAAI,QAAQ,uBAAuB;AAE9D,OAAO,MAAMC,SAAS,GAAGA,CACvBC,MAAc,EACdC,KAAa,EACbC,KAAa,EACbC,GAAW,KACC;EACZ,MAAMC,UAAU,GAAGC,IAAI,CAACC,IAAI,CAACN,MAAM,GAAGC,KAAK,CAAC;EAE5C,MAAMM,SAAS,GAAGL,KAAK,GAAGE,UAAU;EACpC,MAAMI,WAAW,GAAGD,SAAS,GAAGJ,GAAG;EACnC,MAAMM,cAAc,GAAGJ,IAAI,CAACK,KAAK,CAACF,WAAW,GAAGR,MAAM,CAAC;EACvD,MAAMW,iBAAiB,GAAGF,cAAc,GAAGR,KAAK;EAChD,MAAMW,iBAAiB,GAAGV,KAAK,GAAGS,iBAAiB;EACnD,MAAME,gBAAgB,GAAGR,IAAI,CAACK,KAAK,CAAC,CAACE,iBAAiB,GAAG,CAAC,IAAIX,KAAK,CAAC;EACpE,MAAMa,cAAc,GAAGN,WAAW,GAAGR,MAAM;EAE3C,MAAMe,gBAAgB,GAAGb,KAAK,GAAGD,KAAK;EACtC,MAAMe,YAAY,GAAGD,gBAAgB,GAAG,EAAE;EAE1C,IAAIF,gBAAgB,KAAK,CAAC,EAAE;IAC1B,OAAOf,IAAI;;EAGb,OAAOD,MAAM,CAACgB,gBAAgB,GAAGb,MAAM,GAAGc,cAAc,GAAGE,YAAY,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Tag } from "@effect/data/Context";
2
+ import * as Duration from "@effect/data/Duration";
3
+ import * as Effect from "@effect/io/Effect";
4
+ import * as Layer from "@effect/io/Layer";
5
+ import { Log } from "dfx/Log";
6
+ import * as Memory from "dfx/RateLimit/memory";
7
+ import { delayFrom } from "dfx/RateLimit/utils";
8
+ export const RateLimitStore = /*#__PURE__*/Tag();
9
+ export const LiveMemoryRateLimitStore = /*#__PURE__*/Layer.sync(RateLimitStore, Memory.make);
10
+ const makeLimiter = /*#__PURE__*/Effect.gen(function* (_) {
11
+ const store = yield* _(RateLimitStore);
12
+ const log = yield* _(Log);
13
+ const maybeWait = (key, window, limit, multiplier = 1.05) => {
14
+ const windowMs = Duration.toMillis(window) * multiplier;
15
+ return store.incrementCounter(key, windowMs, limit).pipe(Effect.map(([count, ttl]) => delayFrom(windowMs, limit, count, ttl)), Effect.tap(d => log.debug("RateLimitStore maybeWait", {
16
+ key,
17
+ window: Duration.toMillis(window),
18
+ windowMs,
19
+ limit,
20
+ delay: Duration.toMillis(d)
21
+ })), Effect.tap(_ => Duration.toMillis(_) === 0 ? Effect.unit : Effect.sleep(_)), Effect.asUnit);
22
+ };
23
+ return {
24
+ maybeWait
25
+ };
26
+ });
27
+ export const RateLimiter = /*#__PURE__*/Tag();
28
+ export const LiveRateLimiter = /*#__PURE__*/Layer.effect(RateLimiter, makeLimiter);
29
+ //# sourceMappingURL=RateLimit.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimit.mjs","names":["Tag","Duration","Effect","Layer","Log","Memory","delayFrom","RateLimitStore","LiveMemoryRateLimitStore","sync","make","makeLimiter","gen","_","store","log","maybeWait","key","window","limit","multiplier","windowMs","toMillis","incrementCounter","pipe","map","count","ttl","tap","d","debug","delay","unit","sleep","asUnit","RateLimiter","LiveRateLimiter","effect"],"sources":["../src/RateLimit.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAG,QAAQ,sBAAsB;AAC1C,OAAO,KAAKC,QAAQ,MAAM,uBAAuB;AAEjD,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AACzC,SAASC,GAAG,QAAQ,SAAS;AAC7B,OAAO,KAAKC,MAAM,MAAM,sBAAsB;AAC9C,SAASC,SAAS,QAAQ,qBAAqB;AAmC/C,OAAO,MAAMC,cAAc,gBAAGP,GAAG,EAAkB;AACnD,OAAO,MAAMQ,wBAAwB,gBAAGL,KAAK,CAACM,IAAI,CAACF,cAAc,EAAEF,MAAM,CAACK,IAAI,CAAC;AAE/E,MAAMC,WAAW,gBAAGT,MAAM,CAACU,GAAG,CAAC,WAAWC,CAAC;EACzC,MAAMC,KAAK,GAAG,OAAOD,CAAC,CAACN,cAAc,CAAC;EACtC,MAAMQ,GAAG,GAAG,OAAOF,CAAC,CAACT,GAAG,CAAC;EAEzB,MAAMY,SAAS,GAAGA,CAChBC,GAAW,EACXC,MAAyB,EACzBC,KAAa,EACbC,UAAU,GAAG,IAAI,KACf;IACF,MAAMC,QAAQ,GAAGpB,QAAQ,CAACqB,QAAQ,CAACJ,MAAM,CAAC,GAAGE,UAAU;IAEvD,OAAON,KAAK,CAACS,gBAAgB,CAACN,GAAG,EAAEI,QAAQ,EAAEF,KAAK,CAAC,CAACK,IAAI,CACtDtB,MAAM,CAACuB,GAAG,CAAC,CAAC,CAACC,KAAK,EAAEC,GAAG,CAAC,KAAKrB,SAAS,CAACe,QAAQ,EAAEF,KAAK,EAAEO,KAAK,EAAEC,GAAG,CAAC,CAAC,EACpEzB,MAAM,CAAC0B,GAAG,CAACC,CAAC,IACVd,GAAG,CAACe,KAAK,CAAC,0BAA0B,EAAE;MACpCb,GAAG;MACHC,MAAM,EAAEjB,QAAQ,CAACqB,QAAQ,CAACJ,MAAM,CAAC;MACjCG,QAAQ;MACRF,KAAK;MACLY,KAAK,EAAE9B,QAAQ,CAACqB,QAAQ,CAACO,CAAC;KAC3B,CAAC,CACH,EACD3B,MAAM,CAAC0B,GAAG,CAACf,CAAC,IACVZ,QAAQ,CAACqB,QAAQ,CAACT,CAAC,CAAC,KAAK,CAAC,GAAGX,MAAM,CAAC8B,IAAI,GAAG9B,MAAM,CAAC+B,KAAK,CAACpB,CAAC,CAAC,CAC3D,EACDX,MAAM,CAACgC,MAAM,CACd;EACH,CAAC;EAED,OAAO;IAAElB;EAAS,CAAE;AACtB,CAAC,CAAC;AAIF,OAAO,MAAMmB,WAAW,gBAAGnC,GAAG,EAAe;AAC7C,OAAO,MAAMoC,eAAe,gBAAGjC,KAAK,CAACkC,MAAM,CAACF,WAAW,EAAExB,WAAW,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { LiveFetchRequestExecutor } from "@effect-http/client";
2
+ import * as Config from "@effect/io/Config";
3
+ import * as Effect from "@effect/io/Effect";
4
+ import * as Layer from "@effect/io/Layer";
5
+ import { DiscordConfig, LiveDiscordREST, Log } from "dfx";
6
+ import * as CachePrelude from "dfx/Cache/prelude";
7
+ import { LiveDiscordGateway } from "dfx/DiscordGateway";
8
+ import * as DiscordWS from "dfx/DiscordGateway/DiscordWS";
9
+ import { LiveJsonDiscordWSCodec } from "dfx/DiscordGateway/DiscordWS";
10
+ import * as Shard from "dfx/DiscordGateway/Shard";
11
+ import * as SendEvent from "dfx/DiscordGateway/Shard/sendEvents";
12
+ import * as ShardStore from "dfx/DiscordGateway/ShardStore";
13
+ import { LiveMemoryShardStore } from "dfx/DiscordGateway/ShardStore";
14
+ import * as WS from "dfx/DiscordGateway/WS";
15
+ import { LiveMemoryRateLimitStore, LiveRateLimiter } from "dfx/RateLimit";
16
+ export { DiscordGateway, LiveDiscordGateway } from "dfx/DiscordGateway";
17
+ export { InteractionsRegistry, InteractionsRegistryLive, run as runIx } from "dfx/Interactions/gateway";
18
+ export { CachePrelude, DiscordWS, SendEvent, Shard, ShardStore, WS };
19
+ export const MemoryRateLimit = /*#__PURE__*/Layer.provide(LiveMemoryRateLimitStore, LiveRateLimiter);
20
+ export const MemoryBot = /*#__PURE__*/Layer.provide( /*#__PURE__*/Layer.mergeAll(LiveMemoryShardStore, LiveMemoryRateLimitStore, LiveJsonDiscordWSCodec), /*#__PURE__*/Layer.merge( /*#__PURE__*/Layer.provideMerge(LiveDiscordREST, LiveDiscordGateway), MemoryRateLimit));
21
+ export const makeLiveWithoutFetch = config => Layer.unwrapEffect(Effect.config(Config.unwrap(config)).pipe(Effect.map(DiscordConfig.make), Effect.map(config => {
22
+ const LiveLog = config.debug ? Log.LiveLogDebug : Log.LiveLog;
23
+ const LiveConfig = Layer.succeed(DiscordConfig.DiscordConfig, config);
24
+ return Layer.provideMerge(Layer.merge(LiveLog, LiveConfig), MemoryBot);
25
+ })));
26
+ export const makeLive = config => Layer.provide(LiveFetchRequestExecutor, makeLiveWithoutFetch(config));
27
+ //# sourceMappingURL=gateway.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.mjs","names":["LiveFetchRequestExecutor","Config","Effect","Layer","DiscordConfig","LiveDiscordREST","Log","CachePrelude","LiveDiscordGateway","DiscordWS","LiveJsonDiscordWSCodec","Shard","SendEvent","ShardStore","LiveMemoryShardStore","WS","LiveMemoryRateLimitStore","LiveRateLimiter","DiscordGateway","InteractionsRegistry","InteractionsRegistryLive","run","runIx","MemoryRateLimit","provide","MemoryBot","mergeAll","merge","provideMerge","makeLiveWithoutFetch","config","unwrapEffect","unwrap","pipe","map","make","LiveLog","debug","LiveLogDebug","LiveConfig","succeed","makeLive"],"sources":["../src/gateway.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,wBAAwB,QAAQ,qBAAqB;AAC9D,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAE3C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,KAAK,MAAM,kBAAkB;AAEzC,SAASC,aAAa,EAAEC,eAAe,EAAEC,GAAG,QAAQ,KAAK;AACzD,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD,SAASC,kBAAkB,QAAQ,oBAAoB;AACvD,OAAO,KAAKC,SAAS,MAAM,8BAA8B;AACzD,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,OAAO,KAAKC,KAAK,MAAM,0BAA0B;AACjD,OAAO,KAAKC,SAAS,MAAM,qCAAqC;AAChE,OAAO,KAAKC,UAAU,MAAM,+BAA+B;AAC3D,SAASC,oBAAoB,QAAQ,+BAA+B;AACpE,OAAO,KAAKC,EAAE,MAAM,uBAAuB;AAE3C,SAASC,wBAAwB,EAAEC,eAAe,QAAQ,eAAe;AAEzE,SAASC,cAAc,EAAEV,kBAAkB,QAAQ,oBAAoB;AACvE,SACEW,oBAAoB,EACpBC,wBAAwB,EACxBC,GAAG,IAAIC,KAAK,QACP,0BAA0B;AACjC,SAASf,YAAY,EAAEE,SAAS,EAAEG,SAAS,EAAED,KAAK,EAAEE,UAAU,EAAEE,EAAE;AAElE,OAAO,MAAMQ,eAAe,gBAAGpB,KAAK,CAACqB,OAAO,CAC1CR,wBAAwB,EACxBC,eAAe,CAChB;AAED,OAAO,MAAMQ,SAAS,gBAAGtB,KAAK,CAACqB,OAAO,eACpCrB,KAAK,CAACuB,QAAQ,CACZZ,oBAAoB,EACpBE,wBAAwB,EACxBN,sBAAsB,CACvB,eACDP,KAAK,CAACwB,KAAK,eACTxB,KAAK,CAACyB,YAAY,CAACvB,eAAe,EAAEG,kBAAkB,CAAC,EACvDe,eAAe,CAChB,CACF;AACD,OAAO,MAAMM,oBAAoB,GAC/BC,MAAkD,IAUlD3B,KAAK,CAAC4B,YAAY,CAChB7B,MAAM,CAAC4B,MAAM,CAAC7B,MAAM,CAAC+B,MAAM,CAACF,MAAM,CAAC,CAAC,CAACG,IAAI,CACvC/B,MAAM,CAACgC,GAAG,CAAC9B,aAAa,CAAC+B,IAAI,CAAC,EAC9BjC,MAAM,CAACgC,GAAG,CAACJ,MAAM,IAAG;EAClB,MAAMM,OAAO,GAAGN,MAAM,CAACO,KAAK,GAAG/B,GAAG,CAACgC,YAAY,GAAGhC,GAAG,CAAC8B,OAAO;EAC7D,MAAMG,UAAU,GAAGpC,KAAK,CAACqC,OAAO,CAACpC,aAAa,CAACA,aAAa,EAAE0B,MAAM,CAAC;EACrE,OAAO3B,KAAK,CAACyB,YAAY,CAACzB,KAAK,CAACwB,KAAK,CAACS,OAAO,EAAEG,UAAU,CAAC,EAAEd,SAAS,CAAC;AACxE,CAAC,CAAC,CACH,CACF;AAEH,OAAO,MAAMgB,QAAQ,GACnBX,MAAkD,IAS/C3B,KAAK,CAACqB,OAAO,CAACxB,wBAAwB,EAAE6B,oBAAoB,CAACC,MAAM,CAAC,CAAC"}
package/mjs/index.mjs ADDED
@@ -0,0 +1,15 @@
1
+ import * as Cache from "dfx/Cache";
2
+ import * as DiscordConfig from "dfx/DiscordConfig";
3
+ import * as Flags from "dfx/Helpers/flags";
4
+ import * as Intents from "dfx/Helpers/intents";
5
+ import * as IxHelpers from "dfx/Helpers/interactions";
6
+ import * as Members from "dfx/Helpers/members";
7
+ import * as Perms from "dfx/Helpers/permissions";
8
+ import * as UI from "dfx/Helpers/ui";
9
+ import * as Ix from "dfx/Interactions/index";
10
+ import * as Log from "dfx/Log";
11
+ import * as Discord from "dfx/types";
12
+ export { DiscordREST, LiveDiscordREST } from "dfx/DiscordREST";
13
+ export { LiveMemoryRateLimitStore, LiveRateLimiter, RateLimitStore, RateLimiter } from "dfx/RateLimit";
14
+ export { Cache, Discord, DiscordConfig, Flags, Intents, Ix, IxHelpers, Log, Members, Perms, UI };
15
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Cache","DiscordConfig","Flags","Intents","IxHelpers","Members","Perms","UI","Ix","Log","Discord","DiscordREST","LiveDiscordREST","LiveMemoryRateLimitStore","LiveRateLimiter","RateLimitStore","RateLimiter"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,WAAW;AAClC,OAAO,KAAKC,aAAa,MAAM,mBAAmB;AAClD,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAC1C,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAC9C,OAAO,KAAKC,SAAS,MAAM,0BAA0B;AACrD,OAAO,KAAKC,OAAO,MAAM,qBAAqB;AAC9C,OAAO,KAAKC,KAAK,MAAM,yBAAyB;AAChD,OAAO,KAAKC,EAAE,MAAM,gBAAgB;AACpC,OAAO,KAAKC,EAAE,MAAM,wBAAwB;AAC5C,OAAO,KAAKC,GAAG,MAAM,SAAS;AAC9B,OAAO,KAAKC,OAAO,MAAM,WAAW;AAEpC,SAASC,WAAW,EAAEC,eAAe,QAAQ,iBAAiB;AAC9D,SAEEC,wBAAwB,EACxBC,eAAe,EACfC,cAAc,EACdC,WAAW,QACN,eAAe;AAEtB,SACEhB,KAAK,EACLU,OAAO,EACPT,aAAa,EACbC,KAAK,EACLC,OAAO,EACPK,EAAE,EACFJ,SAAS,EACTK,GAAG,EACHJ,OAAO,EACPC,KAAK,EACLC,EAAE"}