dfx 0.126.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/.babel.cjs.json +11 -0
  2. package/.babel.mjs.json +10 -0
  3. package/.envrc +1 -0
  4. package/.gitmodules +3 -0
  5. package/.husky/pre-commit +2 -0
  6. package/.oxlintrc.json +72 -0
  7. package/.prettierignore +0 -0
  8. package/.prettierrc.json +5 -0
  9. package/.tool-versions +1 -0
  10. package/.vscode/debug.cjs +8 -0
  11. package/.vscode/launch.json +23 -0
  12. package/.vscode/settings.json +29 -0
  13. package/.vscode/tasks.json +44 -0
  14. package/AGENTS.md +15 -0
  15. package/CHANGELOG.md +1554 -0
  16. package/examples/.env.example +5 -0
  17. package/examples/interactions.ts +79 -0
  18. package/examples/readme.ts +56 -0
  19. package/examples/registry.ts +66 -0
  20. package/flake.lock +27 -0
  21. package/flake.nix +21 -0
  22. package/lerna.json +12 -0
  23. package/package.json +79 -36
  24. package/pnpm-workspace.yaml +7 -0
  25. package/scripts/generate-client.sh +10 -0
  26. package/scripts/worktree-setup.sh +8 -0
  27. package/src/Cache/memory.ts +5 -5
  28. package/src/Cache/memoryTTL.ts +11 -7
  29. package/src/Cache/prelude.ts +10 -8
  30. package/src/Cache.ts +31 -35
  31. package/src/DiscordConfig.ts +12 -16
  32. package/src/DiscordGateway/DiscordWS.ts +58 -32
  33. package/src/DiscordGateway/Messaging.ts +13 -15
  34. package/src/DiscordGateway/Shard/StateStore.ts +30 -25
  35. package/src/DiscordGateway/Shard/heartbeats.ts +25 -28
  36. package/src/DiscordGateway/Shard/identify.ts +11 -6
  37. package/src/DiscordGateway/Shard/sendEvents.ts +1 -1
  38. package/src/DiscordGateway/Shard/utils.ts +1 -1
  39. package/src/DiscordGateway/Shard.ts +39 -35
  40. package/src/DiscordGateway/ShardStore.ts +6 -7
  41. package/src/DiscordGateway/Sharder.ts +31 -29
  42. package/src/DiscordGateway.ts +15 -14
  43. package/src/DiscordREST/Generated.ts +660 -341
  44. package/src/DiscordREST/utils.ts +6 -3
  45. package/src/DiscordREST.ts +37 -41
  46. package/src/Helpers/flags.ts +10 -5
  47. package/src/Helpers/intents.ts +2 -2
  48. package/src/Helpers/interactions.ts +16 -14
  49. package/src/Helpers/members.ts +3 -3
  50. package/src/Helpers/permissions.ts +5 -5
  51. package/src/Helpers/ui.ts +16 -16
  52. package/src/Interactions/builder.ts +10 -10
  53. package/src/Interactions/commandHelper.ts +18 -29
  54. package/src/Interactions/context.ts +51 -65
  55. package/src/Interactions/definitions.ts +3 -3
  56. package/src/Interactions/gateway.ts +33 -45
  57. package/src/Interactions/handlers.ts +8 -5
  58. package/src/Interactions/index.ts +5 -5
  59. package/src/Interactions/utils.ts +6 -6
  60. package/src/Interactions/webhook.ts +31 -38
  61. package/src/RateLimit/memory.ts +3 -3
  62. package/src/RateLimit.ts +18 -15
  63. package/src/gateway.ts +21 -21
  64. package/src/index.ts +17 -17
  65. package/src/types.ts +18 -16
  66. package/src/utils/Effect.ts +38 -27
  67. package/src/webhooks.ts +7 -7
  68. package/test/index.test.ts +5 -0
  69. package/tsconfig.base.json +12 -6
  70. package/tsconfig.examples.json +0 -1
  71. package/vitest.config.ts +22 -0
  72. package/Cache/driver.d.ts +0 -24
  73. package/Cache/driver.d.ts.map +0 -1
  74. package/Cache/driver.js +0 -11
  75. package/Cache/driver.js.map +0 -1
  76. package/Cache/memory.d.ts +0 -5
  77. package/Cache/memory.d.ts.map +0 -1
  78. package/Cache/memory.js +0 -57
  79. package/Cache/memory.js.map +0 -1
  80. package/Cache/memoryTTL.d.ts +0 -23
  81. package/Cache/memoryTTL.d.ts.map +0 -1
  82. package/Cache/memoryTTL.js +0 -128
  83. package/Cache/memoryTTL.js.map +0 -1
  84. package/Cache/prelude.d.ts +0 -32
  85. package/Cache/prelude.d.ts.map +0 -1
  86. package/Cache/prelude.js +0 -143
  87. package/Cache/prelude.js.map +0 -1
  88. package/Cache.d.ts +0 -82
  89. package/Cache.d.ts.map +0 -1
  90. package/Cache.js +0 -144
  91. package/Cache.js.map +0 -1
  92. package/DiscordConfig.d.ts +0 -35
  93. package/DiscordConfig.d.ts.map +0 -1
  94. package/DiscordConfig.js +0 -42
  95. package/DiscordConfig.js.map +0 -1
  96. package/DiscordGateway/DiscordWS.d.ts +0 -37
  97. package/DiscordGateway/DiscordWS.d.ts.map +0 -1
  98. package/DiscordGateway/DiscordWS.js +0 -73
  99. package/DiscordGateway/DiscordWS.js.map +0 -1
  100. package/DiscordGateway/Messaging.d.ts +0 -393
  101. package/DiscordGateway/Messaging.d.ts.map +0 -1
  102. package/DiscordGateway/Messaging.js +0 -40
  103. package/DiscordGateway/Messaging.js.map +0 -1
  104. package/DiscordGateway/Shard/StateStore.d.ts +0 -24
  105. package/DiscordGateway/Shard/StateStore.d.ts.map +0 -1
  106. package/DiscordGateway/Shard/StateStore.js +0 -48
  107. package/DiscordGateway/Shard/StateStore.js.map +0 -1
  108. package/DiscordGateway/Shard/heartbeats.d.ts +0 -8
  109. package/DiscordGateway/Shard/heartbeats.d.ts.map +0 -1
  110. package/DiscordGateway/Shard/heartbeats.js +0 -28
  111. package/DiscordGateway/Shard/heartbeats.js.map +0 -1
  112. package/DiscordGateway/Shard/identify.d.ts +0 -12
  113. package/DiscordGateway/Shard/identify.d.ts.map +0 -1
  114. package/DiscordGateway/Shard/identify.js +0 -38
  115. package/DiscordGateway/Shard/identify.js.map +0 -1
  116. package/DiscordGateway/Shard/sendEvents.d.ts +0 -8
  117. package/DiscordGateway/Shard/sendEvents.d.ts.map +0 -1
  118. package/DiscordGateway/Shard/sendEvents.js +0 -39
  119. package/DiscordGateway/Shard/sendEvents.js.map +0 -1
  120. package/DiscordGateway/Shard/utils.d.ts +0 -6
  121. package/DiscordGateway/Shard/utils.d.ts.map +0 -1
  122. package/DiscordGateway/Shard/utils.js +0 -11
  123. package/DiscordGateway/Shard/utils.js.map +0 -1
  124. package/DiscordGateway/Shard.d.ts +0 -28
  125. package/DiscordGateway/Shard.d.ts.map +0 -1
  126. package/DiscordGateway/Shard.js +0 -149
  127. package/DiscordGateway/Shard.js.map +0 -1
  128. package/DiscordGateway/ShardStore.d.ts +0 -18
  129. package/DiscordGateway/ShardStore.d.ts.map +0 -1
  130. package/DiscordGateway/ShardStore.js +0 -31
  131. package/DiscordGateway/ShardStore.js.map +0 -1
  132. package/DiscordGateway/Sharder.d.ts +0 -13
  133. package/DiscordGateway/Sharder.d.ts.map +0 -1
  134. package/DiscordGateway/Sharder.js +0 -73
  135. package/DiscordGateway/Sharder.js.map +0 -1
  136. package/DiscordGateway.d.ts +0 -32
  137. package/DiscordGateway.d.ts.map +0 -1
  138. package/DiscordGateway.js +0 -28
  139. package/DiscordGateway.js.map +0 -1
  140. package/DiscordREST/Generated.d.ts +0 -5399
  141. package/DiscordREST/Generated.d.ts.map +0 -1
  142. package/DiscordREST/Generated.js +0 -2405
  143. package/DiscordREST/Generated.js.map +0 -1
  144. package/DiscordREST/utils.d.ts +0 -14
  145. package/DiscordREST/utils.d.ts.map +0 -1
  146. package/DiscordREST/utils.js +0 -31
  147. package/DiscordREST/utils.js.map +0 -1
  148. package/DiscordREST.d.ts +0 -23
  149. package/DiscordREST.d.ts.map +0 -1
  150. package/DiscordREST.js +0 -132
  151. package/DiscordREST.js.map +0 -1
  152. package/Helpers/flags.d.ts +0 -28
  153. package/Helpers/flags.d.ts.map +0 -1
  154. package/Helpers/flags.js +0 -48
  155. package/Helpers/flags.js.map +0 -1
  156. package/Helpers/intents.d.ts +0 -25
  157. package/Helpers/intents.d.ts.map +0 -1
  158. package/Helpers/intents.js +0 -34
  159. package/Helpers/intents.js.map +0 -1
  160. package/Helpers/interactions.d.ts +0 -116
  161. package/Helpers/interactions.d.ts.map +0 -1
  162. package/Helpers/interactions.js +0 -143
  163. package/Helpers/interactions.js.map +0 -1
  164. package/Helpers/members.d.ts +0 -10
  165. package/Helpers/members.d.ts.map +0 -1
  166. package/Helpers/members.js +0 -17
  167. package/Helpers/members.js.map +0 -1
  168. package/Helpers/permissions.d.ts +0 -42
  169. package/Helpers/permissions.d.ts.map +0 -1
  170. package/Helpers/permissions.js +0 -97
  171. package/Helpers/permissions.js.map +0 -1
  172. package/Helpers/ui.d.ts +0 -105
  173. package/Helpers/ui.d.ts.map +0 -1
  174. package/Helpers/ui.js +0 -162
  175. package/Helpers/ui.js.map +0 -1
  176. package/Interactions/builder.d.ts +0 -48
  177. package/Interactions/builder.d.ts.map +0 -1
  178. package/Interactions/builder.js +0 -64
  179. package/Interactions/builder.js.map +0 -1
  180. package/Interactions/commandHelper.d.ts +0 -99
  181. package/Interactions/commandHelper.d.ts.map +0 -1
  182. package/Interactions/commandHelper.js +0 -53
  183. package/Interactions/commandHelper.js.map +0 -1
  184. package/Interactions/context.d.ts +0 -54
  185. package/Interactions/context.d.ts.map +0 -1
  186. package/Interactions/context.js +0 -42
  187. package/Interactions/context.js.map +0 -1
  188. package/Interactions/definitions.d.ts +0 -44
  189. package/Interactions/definitions.d.ts.map +0 -1
  190. package/Interactions/definitions.js +0 -67
  191. package/Interactions/definitions.js.map +0 -1
  192. package/Interactions/error.d.ts +0 -2
  193. package/Interactions/error.d.ts.map +0 -1
  194. package/Interactions/error.js +0 -8
  195. package/Interactions/error.js.map +0 -1
  196. package/Interactions/gateway.d.ts +0 -21
  197. package/Interactions/gateway.d.ts.map +0 -1
  198. package/Interactions/gateway.js +0 -90
  199. package/Interactions/gateway.js.map +0 -1
  200. package/Interactions/handlers.d.ts +0 -15
  201. package/Interactions/handlers.d.ts.map +0 -1
  202. package/Interactions/handlers.js +0 -72
  203. package/Interactions/handlers.js.map +0 -1
  204. package/Interactions/index.d.ts +0 -16
  205. package/Interactions/index.d.ts.map +0 -1
  206. package/Interactions/index.js +0 -94
  207. package/Interactions/index.js.map +0 -1
  208. package/Interactions/utils.d.ts +0 -61
  209. package/Interactions/utils.d.ts.map +0 -1
  210. package/Interactions/utils.js +0 -35
  211. package/Interactions/utils.js.map +0 -1
  212. package/Interactions/webhook.d.ts +0 -73
  213. package/Interactions/webhook.d.ts.map +0 -1
  214. package/Interactions/webhook.js +0 -89
  215. package/Interactions/webhook.js.map +0 -1
  216. package/RateLimit/memory.d.ts +0 -3
  217. package/RateLimit/memory.d.ts.map +0 -1
  218. package/RateLimit/memory.js +0 -47
  219. package/RateLimit/memory.js.map +0 -1
  220. package/RateLimit/utils.d.ts +0 -3
  221. package/RateLimit/utils.d.ts.map +0 -1
  222. package/RateLimit/utils.js +0 -25
  223. package/RateLimit/utils.js.map +0 -1
  224. package/RateLimit.d.ts +0 -30
  225. package/RateLimit.d.ts.map +0 -1
  226. package/RateLimit.js +0 -35
  227. package/RateLimit.js.map +0 -1
  228. package/gateway.d.ts +0 -19
  229. package/gateway.d.ts.map +0 -1
  230. package/gateway.js +0 -72
  231. package/gateway.js.map +0 -1
  232. package/index.d.ts +0 -18
  233. package/index.d.ts.map +0 -1
  234. package/index.js +0 -71
  235. package/index.js.map +0 -1
  236. package/mjs/Cache/driver.mjs +0 -3
  237. package/mjs/Cache/driver.mjs.map +0 -1
  238. package/mjs/Cache/memory.mjs +0 -48
  239. package/mjs/Cache/memory.mjs.map +0 -1
  240. package/mjs/Cache/memoryTTL.mjs +0 -119
  241. package/mjs/Cache/memoryTTL.mjs.map +0 -1
  242. package/mjs/Cache/prelude.mjs +0 -131
  243. package/mjs/Cache/prelude.mjs.map +0 -1
  244. package/mjs/Cache.mjs +0 -89
  245. package/mjs/Cache.mjs.map +0 -1
  246. package/mjs/DiscordConfig.mjs +0 -32
  247. package/mjs/DiscordConfig.mjs.map +0 -1
  248. package/mjs/DiscordGateway/DiscordWS.mjs +0 -66
  249. package/mjs/DiscordGateway/DiscordWS.mjs.map +0 -1
  250. package/mjs/DiscordGateway/Messaging.mjs +0 -33
  251. package/mjs/DiscordGateway/Messaging.mjs.map +0 -1
  252. package/mjs/DiscordGateway/Shard/StateStore.mjs +0 -40
  253. package/mjs/DiscordGateway/Shard/StateStore.mjs.map +0 -1
  254. package/mjs/DiscordGateway/Shard/heartbeats.mjs +0 -20
  255. package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +0 -1
  256. package/mjs/DiscordGateway/Shard/identify.mjs +0 -30
  257. package/mjs/DiscordGateway/Shard/identify.mjs.map +0 -1
  258. package/mjs/DiscordGateway/Shard/sendEvents.mjs +0 -26
  259. package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +0 -1
  260. package/mjs/DiscordGateway/Shard/utils.mjs +0 -3
  261. package/mjs/DiscordGateway/Shard/utils.mjs.map +0 -1
  262. package/mjs/DiscordGateway/Shard.mjs +0 -142
  263. package/mjs/DiscordGateway/Shard.mjs.map +0 -1
  264. package/mjs/DiscordGateway/ShardStore.mjs +0 -24
  265. package/mjs/DiscordGateway/ShardStore.mjs.map +0 -1
  266. package/mjs/DiscordGateway/Sharder.mjs +0 -66
  267. package/mjs/DiscordGateway/Sharder.mjs.map +0 -1
  268. package/mjs/DiscordGateway.mjs +0 -21
  269. package/mjs/DiscordGateway.mjs.map +0 -1
  270. package/mjs/DiscordREST/Generated.mjs +0 -2396
  271. package/mjs/DiscordREST/Generated.mjs.map +0 -1
  272. package/mjs/DiscordREST/utils.mjs +0 -20
  273. package/mjs/DiscordREST/utils.mjs.map +0 -1
  274. package/mjs/DiscordREST.mjs +0 -124
  275. package/mjs/DiscordREST.mjs.map +0 -1
  276. package/mjs/Helpers/flags.mjs +0 -36
  277. package/mjs/Helpers/flags.mjs.map +0 -1
  278. package/mjs/Helpers/intents.mjs +0 -27
  279. package/mjs/Helpers/intents.mjs.map +0 -1
  280. package/mjs/Helpers/interactions.mjs +0 -115
  281. package/mjs/Helpers/interactions.mjs.map +0 -1
  282. package/mjs/Helpers/members.mjs +0 -9
  283. package/mjs/Helpers/members.mjs.map +0 -1
  284. package/mjs/Helpers/permissions.mjs +0 -84
  285. package/mjs/Helpers/permissions.mjs.map +0 -1
  286. package/mjs/Helpers/ui.mjs +0 -137
  287. package/mjs/Helpers/ui.mjs.map +0 -1
  288. package/mjs/Interactions/builder.mjs +0 -56
  289. package/mjs/Interactions/builder.mjs.map +0 -1
  290. package/mjs/Interactions/commandHelper.mjs +0 -45
  291. package/mjs/Interactions/commandHelper.mjs.map +0 -1
  292. package/mjs/Interactions/context.mjs +0 -29
  293. package/mjs/Interactions/context.mjs.map +0 -1
  294. package/mjs/Interactions/definitions.mjs +0 -51
  295. package/mjs/Interactions/definitions.mjs.map +0 -1
  296. package/mjs/Interactions/error.mjs +0 -2
  297. package/mjs/Interactions/error.mjs.map +0 -1
  298. package/mjs/Interactions/gateway.mjs +0 -81
  299. package/mjs/Interactions/gateway.mjs.map +0 -1
  300. package/mjs/Interactions/handlers.mjs +0 -63
  301. package/mjs/Interactions/handlers.mjs.map +0 -1
  302. package/mjs/Interactions/index.mjs +0 -11
  303. package/mjs/Interactions/index.mjs.map +0 -1
  304. package/mjs/Interactions/utils.mjs +0 -26
  305. package/mjs/Interactions/utils.mjs.map +0 -1
  306. package/mjs/Interactions/webhook.mjs +0 -76
  307. package/mjs/Interactions/webhook.mjs.map +0 -1
  308. package/mjs/RateLimit/memory.mjs +0 -39
  309. package/mjs/RateLimit/memory.mjs.map +0 -1
  310. package/mjs/RateLimit/utils.mjs +0 -18
  311. package/mjs/RateLimit/utils.mjs.map +0 -1
  312. package/mjs/RateLimit.mjs +0 -28
  313. package/mjs/RateLimit.mjs.map +0 -1
  314. package/mjs/gateway.mjs +0 -19
  315. package/mjs/gateway.mjs.map +0 -1
  316. package/mjs/index.mjs +0 -18
  317. package/mjs/index.mjs.map +0 -1
  318. package/mjs/types.mjs +0 -356
  319. package/mjs/types.mjs.map +0 -1
  320. package/mjs/utils/Effect.mjs +0 -18
  321. package/mjs/utils/Effect.mjs.map +0 -1
  322. package/mjs/version.mjs +0 -2
  323. package/mjs/version.mjs.map +0 -1
  324. package/mjs/webhooks.mjs +0 -6
  325. package/mjs/webhooks.mjs.map +0 -1
  326. package/src/version.ts +0 -1
  327. package/types.d.ts +0 -2457
  328. package/types.d.ts.map +0 -1
  329. package/types.js +0 -408
  330. package/types.js.map +0 -1
  331. package/utils/Effect.d.ts +0 -5
  332. package/utils/Effect.d.ts.map +0 -1
  333. package/utils/Effect.js +0 -27
  334. package/utils/Effect.js.map +0 -1
  335. package/version.d.ts +0 -2
  336. package/version.d.ts.map +0 -1
  337. package/version.js +0 -8
  338. package/version.js.map +0 -1
  339. package/webhooks.d.ts +0 -8
  340. package/webhooks.d.ts.map +0 -1
  341. package/webhooks.js +0 -55
  342. package/webhooks.js.map +0 -1
package/src/index.ts CHANGED
@@ -1,28 +1,28 @@
1
- import type { HttpClient } from "@effect/platform/HttpClient"
2
- import * as Cache from "dfx/Cache"
3
- import * as DiscordConfig from "dfx/DiscordConfig"
4
- import type { DiscordREST } from "dfx/DiscordREST"
5
- import { DiscordRESTLive } from "dfx/DiscordREST"
6
- import * as Flags from "dfx/Helpers/flags"
7
- import * as Intents from "dfx/Helpers/intents"
8
- import * as IxHelpers from "dfx/Helpers/interactions"
9
- import * as Members from "dfx/Helpers/members"
10
- import * as Perms from "dfx/Helpers/permissions"
11
- import * as UI from "dfx/Helpers/ui"
12
- import * as Ix from "dfx/Interactions/index"
13
- import { MemoryRateLimitStoreLive } from "dfx/RateLimit"
14
- import * as Discord from "dfx/types"
1
+ import type { HttpClient } from "effect/unstable/http/HttpClient"
2
+ import * as Cache from "./Cache.ts"
3
+ import * as DiscordConfig from "./DiscordConfig.ts"
4
+ import type { DiscordREST } from "./DiscordREST.ts"
5
+ import { DiscordRESTLive } from "./DiscordREST.ts"
6
+ import * as Flags from "./Helpers/flags.ts"
7
+ import * as Intents from "./Helpers/intents.ts"
8
+ import * as IxHelpers from "./Helpers/interactions.ts"
9
+ import * as Members from "./Helpers/members.ts"
10
+ import * as Perms from "./Helpers/permissions.ts"
11
+ import * as UI from "./Helpers/ui.ts"
12
+ import * as Ix from "./Interactions/index.ts"
13
+ import { MemoryRateLimitStoreLive } from "./RateLimit.ts"
14
+ import * as Discord from "./types.ts"
15
15
  import * as Layer from "effect/Layer"
16
16
 
17
- export { DiscordREST, DiscordRESTLive } from "dfx/DiscordREST"
17
+ export { DiscordREST, DiscordRESTLive } from "./DiscordREST.ts"
18
18
 
19
19
  export {
20
- BucketDetails,
20
+ type BucketDetails,
21
21
  MemoryRateLimitStoreLive,
22
22
  RateLimitStore,
23
23
  RateLimiter,
24
24
  RateLimiterLive,
25
- } from "dfx/RateLimit"
25
+ } from "./RateLimit.ts"
26
26
 
27
27
  export {
28
28
  Cache,
package/src/types.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type * as Rest from "dfx/DiscordREST/Generated"
1
+ import type * as Rest from "./DiscordREST/Generated.ts"
2
2
  import type { APIInteraction } from "discord-api-types/v10"
3
3
 
4
- export * from "dfx/DiscordREST/Generated"
5
- export {
4
+ export * from "./DiscordREST/Generated.ts"
5
+ export type {
6
6
  APIInteraction,
7
7
  APIBaseApplicationCommandInteractionData,
8
8
  APIApplicationCommandAutocompleteInteraction,
@@ -21,9 +21,11 @@ export {
21
21
  APIModalSubmitInteraction,
22
22
  APIModalSubmission,
23
23
  APIPingInteraction,
24
+ } from "discord-api-types/v10"
25
+ export {
26
+ MessageFlags,
24
27
  PermissionFlagsBits as Permissions,
25
28
  EmbedType,
26
- MessageFlags,
27
29
  } from "discord-api-types/v10"
28
30
 
29
31
  export type Snowflake = Rest.SnowflakeType
@@ -1096,8 +1098,10 @@ export type GatewayGuildDeleteDispatch = _DataPayload<
1096
1098
  /**
1097
1099
  * @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-delete}
1098
1100
  */
1099
- export interface GatewayGuildDeleteDispatchData
1100
- extends Omit<APIUnavailableGuild, "unavailable"> {
1101
+ export interface GatewayGuildDeleteDispatchData extends Omit<
1102
+ APIUnavailableGuild,
1103
+ "unavailable"
1104
+ > {
1101
1105
  /**
1102
1106
  * `true` if this guild is unavailable due to an outage
1103
1107
  *
@@ -1905,8 +1909,7 @@ export type GatewayMessageReactionRemoveEmojiDispatch = _DataPayload<
1905
1909
  /**
1906
1910
  * @see {@link https://discord.com/developers/docs/topics/gateway-events#message-reaction-remove-emoji}
1907
1911
  */
1908
- export interface GatewayMessageReactionRemoveEmojiDispatchData
1909
- extends GatewayMessageReactionRemoveData {
1912
+ export interface GatewayMessageReactionRemoveEmojiDispatchData extends GatewayMessageReactionRemoveData {
1910
1913
  /**
1911
1914
  * The emoji that was removed
1912
1915
  */
@@ -2271,8 +2274,7 @@ export type GatewayGuildAuditLogEntryCreateDispatch = _DataPayload<
2271
2274
  /**
2272
2275
  * @see {@link https://discord.com/developers/docs/topics/gateway-events#guild-audit-log-entry-create}
2273
2276
  */
2274
- export interface GatewayGuildAuditLogEntryCreateDispatchData
2275
- extends APIAuditLogEntry {
2277
+ export interface GatewayGuildAuditLogEntryCreateDispatchData extends APIAuditLogEntry {
2276
2278
  /**
2277
2279
  * ID of the guild
2278
2280
  */
@@ -2471,8 +2473,7 @@ export interface GatewayRequestGuildMembersDataBase {
2471
2473
  /**
2472
2474
  * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}
2473
2475
  */
2474
- export interface GatewayRequestGuildMembersDataWithUserIds
2475
- extends GatewayRequestGuildMembersDataBase {
2476
+ export interface GatewayRequestGuildMembersDataWithUserIds extends GatewayRequestGuildMembersDataBase {
2476
2477
  /**
2477
2478
  * Used to specify which users you wish to fetch
2478
2479
  */
@@ -2482,8 +2483,7 @@ export interface GatewayRequestGuildMembersDataWithUserIds
2482
2483
  /**
2483
2484
  * @see {@link https://discord.com/developers/docs/topics/gateway-events#request-guild-members}
2484
2485
  */
2485
- export interface GatewayRequestGuildMembersDataWithQuery
2486
- extends GatewayRequestGuildMembersDataBase {
2486
+ export interface GatewayRequestGuildMembersDataWithQuery extends GatewayRequestGuildMembersDataBase {
2487
2487
  /**
2488
2488
  * String that username starts with, or an empty string to return all members
2489
2489
  */
@@ -2619,8 +2619,10 @@ export type _NonDispatchPayload = Omit<_BasePayload, "s" | "t"> & {
2619
2619
  s: null
2620
2620
  }
2621
2621
 
2622
- export interface _DataPayload<Event extends GatewayDispatchEvents, D = unknown>
2623
- extends _BasePayload {
2622
+ export interface _DataPayload<
2623
+ Event extends GatewayDispatchEvents,
2624
+ D = unknown,
2625
+ > extends _BasePayload {
2624
2626
  op: GatewayOpcodes.Dispatch
2625
2627
  t: Event
2626
2628
  d: D
@@ -1,34 +1,40 @@
1
- import { pipe } from "effect/Function"
1
+ import { constant, constTrue } from "effect/Function"
2
2
  import * as Deferred from "effect/Deferred"
3
3
  import * as Effect from "effect/Effect"
4
4
  import * as Fiber from "effect/Fiber"
5
5
  import * as PubSub from "effect/PubSub"
6
- import * as Queue from "effect/Queue"
6
+ import * as Scope from "effect/Scope"
7
+ import * as Exit from "effect/Exit"
7
8
 
8
9
  export const subscribeForEachPar = <R, E, A, X>(
9
10
  self: PubSub.PubSub<A>,
10
11
  effect: (_: A) => Effect.Effect<X, E, R>,
11
12
  ): Effect.Effect<never, E, R> =>
12
- Effect.flatMap(Deferred.make<never, E>(), deferred => {
13
- const run = pipe(
14
- PubSub.subscribe(self),
15
- Effect.flatMap(queue =>
16
- Effect.forever(
17
- Effect.flatMap(Queue.take(queue), a =>
18
- Effect.fork(
19
- Effect.catchAllCause(effect(a), cause =>
20
- Deferred.failCause(deferred, cause),
21
- ),
22
- ),
23
- ),
24
- ),
25
- ),
26
- Effect.scoped,
27
- Effect.interruptible,
28
- )
29
-
30
- return Effect.raceFirst(run, Deferred.await(deferred))
31
- })
13
+ Effect.scopedWith(
14
+ Effect.fnUntraced(function* (scope) {
15
+ const deferred = yield* Deferred.make<never, E>()
16
+ const sub = yield* PubSub.subscribe(self).pipe(Scope.provide(scope))
17
+ const services = yield* Effect.services<R>()
18
+ const runFork = Effect.runForkWith(services)
19
+ const track = Fiber.runIn(scope)
20
+ function onExit(exit: Exit.Exit<X, E>) {
21
+ if (Exit.isFailure(exit)) {
22
+ Deferred.doneUnsafe(deferred, exit as Exit.Exit<never, E>)
23
+ }
24
+ }
25
+ yield* Effect.whileLoop<[A, ...A[]], never, never>({
26
+ while: constTrue,
27
+ body: constant(PubSub.takeAll(sub)),
28
+ step(items) {
29
+ for (let i = 0; i < items.length; i++) {
30
+ const item = items[i]
31
+ track(runFork(effect(item))).addObserver(onExit)
32
+ }
33
+ },
34
+ }).pipe(Effect.raceFirst(Deferred.await(deferred)))
35
+ return yield* Effect.never
36
+ }),
37
+ )
32
38
 
33
39
  export const foreverSwitch = <R, E, A, R1, E1, X>(
34
40
  self: Effect.Effect<A, E, R>,
@@ -36,19 +42,24 @@ export const foreverSwitch = <R, E, A, R1, E1, X>(
36
42
  ): Effect.Effect<never, E | E1, R | R1> =>
37
43
  Effect.gen(function* () {
38
44
  const deferred = yield* Deferred.make<never, E1>()
39
- let fiber: Fiber.RuntimeFiber<unknown, unknown> | undefined
45
+ let fiber: Fiber.Fiber<unknown, unknown> | undefined
40
46
  return yield* self.pipe(
41
- Effect.tap(() => (fiber ? Fiber.interruptFork(fiber) : Effect.void)),
47
+ Effect.tap(() => {
48
+ fiber?.interruptUnsafe()
49
+ return Effect.void
50
+ }),
42
51
  Effect.flatMap(a =>
43
52
  f(a).pipe(
44
- Effect.catchAllCause(cause => Deferred.failCause(deferred, cause)),
45
- Effect.fork,
53
+ Effect.catchCause(cause => Deferred.failCause(deferred, cause)),
54
+ Effect.forkChild,
46
55
  Effect.tap(fiber_ => {
47
56
  fiber = fiber_
57
+ return Effect.void
48
58
  }),
49
59
  ),
50
60
  ),
51
- Effect.forever,
61
+ Effect.forever({ disableYield: true }),
52
62
  Effect.raceFirst(Deferred.await(deferred)),
63
+ Effect.onExit(() => (fiber ? Fiber.interrupt(fiber) : Effect.void)),
53
64
  )
54
65
  })
package/src/webhooks.ts CHANGED
@@ -1,9 +1,9 @@
1
- import type { HttpClient } from "@effect/platform/HttpClient"
2
- import type { DiscordConfig } from "dfx/DiscordConfig"
3
- import type { DiscordREST } from "dfx/DiscordREST"
4
- import { DiscordRESTLive } from "dfx/DiscordREST"
5
- import type { RateLimiter } from "dfx/RateLimit"
6
- import { MemoryRateLimitStoreLive, RateLimiterLive } from "dfx/RateLimit"
1
+ import type { HttpClient } from "effect/unstable/http/HttpClient"
2
+ import type { DiscordConfig } from "./DiscordConfig.ts"
3
+ import type { DiscordREST } from "./DiscordREST.ts"
4
+ import { DiscordRESTLive } from "./DiscordREST.ts"
5
+ import type { RateLimiter } from "./RateLimit.ts"
6
+ import { MemoryRateLimitStoreLive, RateLimiterLive } from "./RateLimit.ts"
7
7
  import * as Layer from "effect/Layer"
8
8
 
9
9
  export {
@@ -14,7 +14,7 @@ export {
14
14
  layer as webhookLayer,
15
15
  layerConfig as webhookLayerConfig,
16
16
  WebhookParseError,
17
- } from "dfx/Interactions/webhook"
17
+ } from "./Interactions/webhook.ts"
18
18
 
19
19
  export const DiscordLive: Layer.Layer<
20
20
  DiscordREST | RateLimiter,
@@ -0,0 +1,5 @@
1
+ describe("test", () => {
2
+ it("should work", () => {
3
+ expect(1).toBe(1)
4
+ })
5
+ })
@@ -10,9 +10,9 @@
10
10
  "emitDecoratorMetadata": true,
11
11
  "experimentalDecorators": true,
12
12
  "preserveSymlinks": true,
13
- "moduleResolution": "node",
13
+ "moduleResolution": "nodenext",
14
14
  "noEmit": false,
15
- "lib": ["ES2021", "DOM"],
15
+ "lib": ["ESNext", "DOM"],
16
16
  "sourceMap": true,
17
17
  "declarationMap": true,
18
18
  "strict": true,
@@ -30,18 +30,24 @@
30
30
  "noImplicitThis": true,
31
31
  "noUncheckedIndexedAccess": false,
32
32
  "strictNullChecks": true,
33
- "baseUrl": ".",
34
33
  "target": "ESNext",
35
- "module": "ES2022",
34
+ "module": "nodenext",
35
+ "allowImportingTsExtensions": true,
36
+ "rewriteRelativeImportExtensions": true,
36
37
  "incremental": true,
37
38
  "removeComments": false,
38
39
  "paths": {
39
40
  "dfx": ["./src/index.ts"],
40
41
  "dfx/test/*": ["./test/*"],
41
42
  "dfx/examples/*": ["./examples/*"],
42
- "dfx/*": ["./src/*"]
43
+ "dfx/*": ["./src/*.ts", "./src/*"]
43
44
  },
44
- "plugins": [{ "name": "@effect/language-service" }]
45
+ "plugins": [
46
+ {
47
+ "name": "@effect/language-service",
48
+ "namespaceImportPackages": ["effect", "@effect/platform-node"]
49
+ }
50
+ ]
45
51
  },
46
52
  "include": [],
47
53
  "exclude": ["node_modules", "build", "lib"]
@@ -3,7 +3,6 @@
3
3
  "compilerOptions": {
4
4
  "tsBuildInfoFile": "build/tsbuildinfo/examples.tsbuildinfo",
5
5
  "rootDir": "examples",
6
- "module": "CommonJS",
7
6
  "outDir": "build/examples"
8
7
  },
9
8
  "include": ["examples/**/*.ts"],
@@ -0,0 +1,22 @@
1
+ /// <reference types="vitest" />
2
+
3
+ import babel from "@vitejs/plugin-react"
4
+ import path from "path"
5
+ import { defineConfig } from "vite"
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ const babelConfig = require("./.babel.mjs.json")
9
+
10
+ export default defineConfig({
11
+ plugins: [babel({ babel: babelConfig })],
12
+ test: {
13
+ include: ["./test/**/*.test.ts"],
14
+ globals: true,
15
+ },
16
+ resolve: {
17
+ alias: {
18
+ "dfx/test": path.join(__dirname, "test"),
19
+ dfx: path.join(__dirname, "src"),
20
+ },
21
+ },
22
+ })
package/Cache/driver.d.ts DELETED
@@ -1,24 +0,0 @@
1
- import type * as Option from "effect/Option";
2
- import type * as Effect from "effect/Effect";
3
- export interface ParentCacheDriver<E, T> {
4
- readonly size: Effect.Effect<number, E>;
5
- sizeForParent: (parentId: string) => Effect.Effect<number, E>;
6
- get: (parentId: string, resourceId: string) => Effect.Effect<Option.Option<T>, E>;
7
- getForParent: (parentId: string) => Effect.Effect<Option.Option<ReadonlyMap<string, T>>, E>;
8
- set: (parentId: string, resourceId: string, resource: T) => Effect.Effect<void, E>;
9
- delete: (parentId: string, resourceId: string) => Effect.Effect<void, E>;
10
- parentDelete: (parentId: string) => Effect.Effect<void, E>;
11
- refreshTTL: (parentId: string, resourceId: string) => Effect.Effect<void, E>;
12
- readonly run: Effect.Effect<never, E>;
13
- }
14
- export declare const createParentDriver: <E, T>(driver: ParentCacheDriver<E, T>) => ParentCacheDriver<E, T>;
15
- export interface CacheDriver<E, T> {
16
- readonly size: Effect.Effect<number, E>;
17
- get: (resourceId: string) => Effect.Effect<Option.Option<T>, E>;
18
- set: (resourceId: string, resource: T) => Effect.Effect<void, E>;
19
- delete: (resourceId: string) => Effect.Effect<void, E>;
20
- refreshTTL: (resourceId: string) => Effect.Effect<void, E>;
21
- readonly run: Effect.Effect<never, E>;
22
- }
23
- export declare const createDriver: <E, T>(driver: CacheDriver<E, T>) => CacheDriver<E, T>;
24
- //# sourceMappingURL=driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../src/Cache/driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACvC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC7D,GAAG,EAAE,CACH,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5D,GAAG,EAAE,CACH,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,KACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3B,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACxE,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1D,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;CACtC;AAED,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,4BAChE,CAAA;AAER,MAAM,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACvC,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAChE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACtD,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;CACtC;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,sBAAW,CAAA"}
package/Cache/driver.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createParentDriver = exports.createDriver = void 0;
7
- const createParentDriver = driver => driver;
8
- exports.createParentDriver = createParentDriver;
9
- const createDriver = driver => driver;
10
- exports.createDriver = createDriver;
11
- //# sourceMappingURL=driver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"driver.js","names":["createParentDriver","driver","exports","createDriver"],"sources":["../src/Cache/driver.ts"],"sourcesContent":[null],"mappings":";;;;;;AAwBO,MAAMA,kBAAkB,GAAUC,MAA+B,IACtEA,MAAM;AAAAC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAWD,MAAMG,YAAY,GAAUF,MAAyB,IAAKA,MAAM;AAAAC,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
package/Cache/memory.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type { CacheDriver, ParentCacheDriver } from "dfx/Cache/driver";
3
- export declare const createWithParent: <T>() => Effect.Effect<ParentCacheDriver<never, T>>;
4
- export declare const create: <T>() => Effect.Effect<CacheDriver<never, T>>;
5
- //# sourceMappingURL=memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/Cache/memory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGtE,eAAO,MAAM,gBAAgB,GAAI,CAAC,OAAK,MAAM,CAAC,MAAM,CAClD,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAgDzB,CAAA;AAEJ,eAAO,MAAM,MAAM,GAAI,CAAC,OAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CA0B5D,CAAA"}
package/Cache/memory.js DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createWithParent = exports.create = void 0;
7
- var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
8
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
9
- var _driver = /*#__PURE__*/require("dfx/Cache/driver");
10
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
- const createWithParent = () => Effect.sync(() => {
12
- const map = new Map();
13
- return (0, _driver.createParentDriver)({
14
- size: Effect.sync(() => {
15
- let count = 0;
16
- for (const a of map.values()) {
17
- count += a.size;
18
- }
19
- return count;
20
- }),
21
- sizeForParent: parentId => Effect.sync(() => map.get(parentId)?.size ?? 0),
22
- get: (parentId, resourceId) => Effect.sync(() => Option.fromNullable(map.get(parentId)?.get(resourceId))),
23
- getForParent: parentId => Effect.sync(() => Option.fromNullable(map.get(parentId))),
24
- set: (parentId, resourceId, resource) => Effect.sync(() => {
25
- if (!map.has(parentId)) {
26
- map.set(parentId, new Map());
27
- }
28
- map.get(parentId).set(resourceId, resource);
29
- }),
30
- delete: (parentId, resourceId) => Effect.sync(() => {
31
- map.get(parentId)?.delete(resourceId);
32
- }),
33
- parentDelete: parentId => Effect.sync(() => {
34
- map.delete(parentId);
35
- }),
36
- refreshTTL: () => Effect.void,
37
- run: Effect.never
38
- });
39
- });
40
- exports.createWithParent = createWithParent;
41
- const create = () => Effect.sync(() => {
42
- const map = new Map();
43
- return (0, _driver.createDriver)({
44
- size: Effect.sync(() => map.size),
45
- get: resourceId => Effect.sync(() => Option.fromNullable(map.get(resourceId))),
46
- set: (resourceId, resource) => Effect.sync(() => {
47
- map.set(resourceId, resource);
48
- }),
49
- delete: resourceId => Effect.sync(() => {
50
- map.delete(resourceId);
51
- }),
52
- refreshTTL: () => Effect.void,
53
- run: Effect.never
54
- });
55
- });
56
- exports.create = create;
57
- //# sourceMappingURL=memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","names":["Option","_interopRequireWildcard","require","Effect","_driver","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createWithParent","sync","map","Map","createParentDriver","size","count","a","values","sizeForParent","parentId","resourceId","fromNullable","getForParent","resource","delete","parentDelete","refreshTTL","void","run","never","exports","create","createDriver"],"sources":["../src/Cache/memory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,23 +0,0 @@
1
- import type { CacheDriver, ParentCacheDriver } from "dfx/Cache/driver";
2
- import * as Duration from "effect/Duration";
3
- import * as Effect from "effect/Effect";
4
- export interface MemoryTTLOpts {
5
- /** The approx. number of milliseconds to keep items */
6
- readonly ttl: Duration.Duration;
7
- /**
8
- * How often items should be cleared.
9
- */
10
- readonly resolution?: Duration.Duration;
11
- /**
12
- * What sweep strategy to use.
13
- *
14
- * "activity" means the TTL is reset for every `set` OR `get` operation
15
- * "usage" means the TTL is only reset for the `get` operation
16
- *
17
- * Defaults to "usage"
18
- */
19
- readonly strategy?: "activity" | "usage" | "expiry";
20
- }
21
- export declare const create: <T>(opts: MemoryTTLOpts) => Effect.Effect<CacheDriver<never, T>>;
22
- export declare const createWithParent: <T>(opts: MemoryTTLOpts) => Effect.Effect<ParentCacheDriver<never, T>>;
23
- //# sourceMappingURL=memoryTTL.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryTTL.d.ts","sourceRoot":"","sources":["../src/Cache/memoryTTL.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGtE,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAE/B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAEvC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;CACpD;AA6GD,eAAO,MAAM,MAAM,GAAI,CAAC,EACtB,MAAM,aAAa,KAClB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAqC,CAAA;AAE3E,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,MAAM,aAAa,KAClB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAgFxC,CAAA"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createWithParent = exports.create = void 0;
7
- var _driver = /*#__PURE__*/require("dfx/Cache/driver");
8
- var Array = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Array"));
9
- var Duration = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Duration"));
10
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
11
- var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
- const make = ({
14
- resolution = Duration.minutes(1),
15
- strategy = "usage",
16
- ttl
17
- }) => {
18
- const resolutionMs = Duration.toMillis(resolution);
19
- const additionalMilliseconds = (Math.floor(Duration.toMillis(ttl) / resolutionMs) + 1) * resolutionMs;
20
- const items = new Map();
21
- const buckets = [];
22
- const refreshTTL = item => {
23
- const now = Date.now();
24
- const remainder = now % resolutionMs;
25
- const expires = now - remainder + additionalMilliseconds;
26
- let currentBucket = buckets[buckets.length - 1];
27
- if ((currentBucket?.expires || 0) < expires) {
28
- currentBucket = {
29
- expires,
30
- items: []
31
- };
32
- buckets.push(currentBucket);
33
- }
34
- currentBucket.items.push(item);
35
- };
36
- const sweep = () => {
37
- const now = Date.now();
38
- const remainder = now % resolutionMs;
39
- const currentExpires = now - remainder;
40
- while (buckets.length && buckets[0].expires <= currentExpires) {
41
- buckets.shift();
42
- }
43
- if (global.gc) {
44
- global.gc();
45
- }
46
- };
47
- const getSync = resourceId => {
48
- const ref = items.get(resourceId);
49
- if (!ref) return undefined;
50
- const item = ref.deref();
51
- if (!item) {
52
- items.delete(resourceId);
53
- return undefined;
54
- }
55
- if (strategy !== "expiry") {
56
- refreshTTL(item);
57
- }
58
- return item.resource;
59
- };
60
- return (0, _driver.createDriver)({
61
- size: Effect.sync(() => items.size),
62
- get: resourceId => Effect.sync(() => Option.fromNullable(getSync(resourceId))),
63
- refreshTTL: id => Effect.sync(() => {
64
- getSync(id);
65
- }),
66
- set: (resourceId, resource) => Effect.sync(() => {
67
- const item = items.get(resourceId)?.deref();
68
- if (item && strategy !== "activity") {
69
- item.resource = resource;
70
- } else {
71
- const newItem = {
72
- resource
73
- };
74
- refreshTTL(newItem);
75
- items.set(resourceId, new WeakRef(newItem));
76
- }
77
- }),
78
- delete: resourceId => Effect.sync(() => {
79
- items.delete(resourceId);
80
- }),
81
- run: Effect.sync(sweep).pipe(Effect.delay(Duration.times(resolution, 0.5)), Effect.forever)
82
- });
83
- };
84
- const create = opts => Effect.sync(() => make(opts));
85
- exports.create = create;
86
- const createWithParent = opts => Effect.sync(() => {
87
- const store = make(opts);
88
- const parentIds = new Map();
89
- return (0, _driver.createParentDriver)({
90
- size: store.size,
91
- sizeForParent: parentId => Effect.sync(() => parentIds.get(parentId)?.size ?? 0),
92
- refreshTTL: (_, id) => store.refreshTTL(id),
93
- get: (_, id) => store.get(id),
94
- getForParent: parentId => Option.fromNullable(parentIds.get(parentId)).pipe(Effect.flatMap(ids => Effect.forEach(ids, id => store.get(id).pipe(Effect.tap(item => Effect.sync(() => {
95
- if (item._tag === "None") {
96
- ids.delete(id);
97
- }
98
- })), Effect.map(item => [id, item])), {
99
- concurrency: "unbounded"
100
- })), Effect.map(Array.reduce(new Map(), (acc, [id, item]) => item._tag === "Some" ? acc.set(id, item.value) : acc)), Effect.option),
101
- set: (parentId, resourceId, resource) => Effect.zipRight(store.set(resourceId, resource), Effect.sync(() => {
102
- if (!parentIds.has(parentId)) {
103
- parentIds.set(parentId, new Set());
104
- }
105
- parentIds.get(parentId).add(resourceId);
106
- })),
107
- delete: (parentId, resourceId) => Effect.zipRight(store.delete(resourceId), Effect.sync(() => {
108
- parentIds.get(parentId)?.delete(resourceId);
109
- })),
110
- parentDelete: parentId => Effect.suspend(() => {
111
- const ids = parentIds.get(parentId);
112
- parentIds.delete(parentId);
113
- const effects = [];
114
- if (ids) {
115
- ids.forEach(id => {
116
- effects.push(store.delete(id));
117
- });
118
- }
119
- return Effect.all(effects, {
120
- concurrency: "unbounded",
121
- discard: true
122
- });
123
- }),
124
- run: store.run
125
- });
126
- });
127
- exports.createWithParent = createWithParent;
128
- //# sourceMappingURL=memoryTTL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryTTL.js","names":["_driver","require","Array","_interopRequireWildcard","Duration","Effect","Option","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","resolution","minutes","strategy","ttl","resolutionMs","toMillis","additionalMilliseconds","Math","floor","items","Map","buckets","refreshTTL","item","now","Date","remainder","expires","currentBucket","length","push","sweep","currentExpires","shift","global","gc","getSync","resourceId","ref","undefined","deref","delete","resource","createDriver","size","sync","fromNullable","id","newItem","WeakRef","run","pipe","delay","times","forever","create","opts","exports","createWithParent","store","parentIds","createParentDriver","sizeForParent","parentId","_","getForParent","flatMap","ids","forEach","tap","_tag","map","concurrency","reduce","acc","value","option","zipRight","Set","add","parentDelete","suspend","effects","all","discard"],"sources":["../src/Cache/memoryTTL.ts"],"sourcesContent":[null],"mappings":";;;;;;AACA,IAAAA,OAAA,gBAAAC,OAAA;AACA,IAAAC,KAAA,gBAAAC,uBAAA,cAAAF,OAAA;AACA,IAAAG,QAAA,gBAAAD,uBAAA,cAAAF,OAAA;AACA,IAAAI,MAAA,gBAAAF,uBAAA,cAAAF,OAAA;AACA,IAAAK,MAAA,gBAAAH,uBAAA,cAAAF,OAAA;AAAuC,SAAAE,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AA+BvC,MAAMkB,IAAI,GAAGA,CAAI;EACfC,UAAU,GAAGvB,QAAQ,CAACwB,OAAO,CAAC,CAAC,CAAC;EAChCC,QAAQ,GAAG,OAAO;EAClBC;AAAG,CACW,KAA2B;EACzC,MAAMC,YAAY,GAAG3B,QAAQ,CAAC4B,QAAQ,CAACL,UAAU,CAAC;EAClD,MAAMM,sBAAsB,GAC1B,CAACC,IAAI,CAACC,KAAK,CAAC/B,QAAQ,CAAC4B,QAAQ,CAACF,GAAG,CAAC,GAAGC,YAAY,CAAC,GAAG,CAAC,IAAIA,YAAY;EAExE,MAAMK,KAAK,GAAG,IAAIC,GAAG,EAAiC;EACtD,MAAMC,OAAO,GAAwB,EAAE;EAEvC,MAAMC,UAAU,GAAIC,IAAkB,IAAI;IACxC,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE;IACtB,MAAME,SAAS,GAAGF,GAAG,GAAGV,YAAY;IACpC,MAAMa,OAAO,GAAGH,GAAG,GAAGE,SAAS,GAAGV,sBAAsB;IACxD,IAAIY,aAAa,GAAGP,OAAO,CAACA,OAAO,CAACQ,MAAM,GAAG,CAAC,CAAC;IAE/C,IAAI,CAACD,aAAa,EAAED,OAAO,IAAI,CAAC,IAAIA,OAAO,EAAE;MAC3CC,aAAa,GAAG;QACdD,OAAO;QACPR,KAAK,EAAE;OACR;MACDE,OAAO,CAACS,IAAI,CAACF,aAAa,CAAC;IAC7B;IAEAA,aAAa,CAACT,KAAK,CAACW,IAAI,CAACP,IAAI,CAAC;EAChC,CAAC;EAED,MAAMQ,KAAK,GAAGA,CAAA,KAAK;IACjB,MAAMP,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE;IACtB,MAAME,SAAS,GAAGF,GAAG,GAAGV,YAAY;IACpC,MAAMkB,cAAc,GAAGR,GAAG,GAAGE,SAAS;IAEtC,OAAOL,OAAO,CAACQ,MAAM,IAAIR,OAAO,CAAC,CAAC,CAAC,CAACM,OAAO,IAAIK,cAAc,EAAE;MAC7DX,OAAO,CAACY,KAAK,EAAG;IAClB;IAEA,IAAIC,MAAM,CAACC,EAAE,EAAE;MACbD,MAAM,CAACC,EAAE,EAAE;IACb;EACF,CAAC;EAED,MAAMC,OAAO,GAAIC,UAAkB,IAAI;IACrC,MAAMC,GAAG,GAAGnB,KAAK,CAACjB,GAAG,CAACmC,UAAU,CAAC;IACjC,IAAI,CAACC,GAAG,EAAE,OAAOC,SAAS;IAE1B,MAAMhB,IAAI,GAAGe,GAAG,CAACE,KAAK,EAAE;IACxB,IAAI,CAACjB,IAAI,EAAE;MACTJ,KAAK,CAACsB,MAAM,CAACJ,UAAU,CAAC;MACxB,OAAOE,SAAS;IAClB;IAEA,IAAI3B,QAAQ,KAAK,QAAQ,EAAE;MACzBU,UAAU,CAACC,IAAI,CAAC;IAClB;IAEA,OAAOA,IAAI,CAACmB,QAAQ;EACtB,CAAC;EAED,OAAO,IAAAC,oBAAY,EAAC;IAClBC,IAAI,EAAExD,MAAM,CAACyD,IAAI,CAAC,MAAM1B,KAAK,CAACyB,IAAI,CAAC;IAEnC1C,GAAG,EAAEmC,UAAU,IACbjD,MAAM,CAACyD,IAAI,CACT,MAAwBxD,MAAM,CAACyD,YAAY,CAACV,OAAO,CAACC,UAAU,CAAC,CAAC,CACjE;IAEHf,UAAU,EAAEyB,EAAE,IACZ3D,MAAM,CAACyD,IAAI,CAAC,MAAK;MACfT,OAAO,CAACW,EAAE,CAAC;IACb,CAAC,CAAC;IAEJ5C,GAAG,EAAEA,CAACkC,UAAU,EAAEK,QAAQ,KACxBtD,MAAM,CAACyD,IAAI,CAAC,MAAK;MACf,MAAMtB,IAAI,GAAGJ,KAAK,CAACjB,GAAG,CAACmC,UAAU,CAAC,EAAEG,KAAK,EAAE;MAE3C,IAAIjB,IAAI,IAAIX,QAAQ,KAAK,UAAU,EAAE;QACnCW,IAAI,CAACmB,QAAQ,GAAGA,QAAQ;MAC1B,CAAC,MAAM;QACL,MAAMM,OAAO,GAAG;UAAEN;QAAQ,CAAE;QAC5BpB,UAAU,CAAC0B,OAAO,CAAC;QACnB7B,KAAK,CAAChB,GAAG,CAACkC,UAAU,EAAE,IAAIY,OAAO,CAACD,OAAO,CAAC,CAAC;MAC7C;IACF,CAAC,CAAC;IAEJP,MAAM,EAAEJ,UAAU,IAChBjD,MAAM,CAACyD,IAAI,CAAC,MAAK;MACf1B,KAAK,CAACsB,MAAM,CAACJ,UAAU,CAAC;IAC1B,CAAC,CAAC;IAEJa,GAAG,EAAE9D,MAAM,CAACyD,IAAI,CAACd,KAAK,CAAC,CAACoB,IAAI,CAC1B/D,MAAM,CAACgE,KAAK,CAACjE,QAAQ,CAACkE,KAAK,CAAC3C,UAAU,EAAE,GAAG,CAAC,CAAC,EAC7CtB,MAAM,CAACkE,OAAO;GAEjB,CAAC;AACJ,CAAC;AAEM,MAAMC,MAAM,GACjBC,IAAmB,IACsBpE,MAAM,CAACyD,IAAI,CAAC,MAAMpC,IAAI,CAAI+C,IAAI,CAAC,CAAC;AAAAC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAEpE,MAAMG,gBAAgB,GAC3BF,IAAmB,IAEnBpE,MAAM,CAACyD,IAAI,CAAC,MAAK;EACf,MAAMc,KAAK,GAAGlD,IAAI,CAAI+C,IAAI,CAAC;EAC3B,MAAMI,SAAS,GAAG,IAAIxC,GAAG,EAAuB;EAEhD,OAAO,IAAAyC,0BAAkB,EAAC;IACxBjB,IAAI,EAAEe,KAAK,CAACf,IAAI;IAChBkB,aAAa,EAAEC,QAAQ,IACrB3E,MAAM,CAACyD,IAAI,CAAC,MAAMe,SAAS,CAAC1D,GAAG,CAAC6D,QAAQ,CAAC,EAAEnB,IAAI,IAAI,CAAC,CAAC;IAEvDtB,UAAU,EAAEA,CAAC0C,CAAC,EAAEjB,EAAE,KAAKY,KAAK,CAACrC,UAAU,CAACyB,EAAE,CAAC;IAE3C7C,GAAG,EAAEA,CAAC8D,CAAC,EAAEjB,EAAE,KAAKY,KAAK,CAACzD,GAAG,CAAC6C,EAAE,CAAC;IAE7BkB,YAAY,EAAEF,QAAQ,IACpB1E,MAAM,CAACyD,YAAY,CAACc,SAAS,CAAC1D,GAAG,CAAC6D,QAAQ,CAAC,CAAC,CAACZ,IAAI,CAC/C/D,MAAM,CAAC8E,OAAO,CAACC,GAAG,IAChB/E,MAAM,CAACgF,OAAO,CACZD,GAAG,EACHpB,EAAE,IACAY,KAAK,CAACzD,GAAG,CAAC6C,EAAE,CAAC,CAACI,IAAI,CAChB/D,MAAM,CAACiF,GAAG,CAAC9C,IAAI,IACbnC,MAAM,CAACyD,IAAI,CAAC,MAAK;MACf,IAAItB,IAAI,CAAC+C,IAAI,KAAK,MAAM,EAAE;QACxBH,GAAG,CAAC1B,MAAM,CAACM,EAAE,CAAC;MAChB;IACF,CAAC,CAAC,CACH,EACD3D,MAAM,CAACmF,GAAG,CAAChD,IAAI,IAAI,CAACwB,EAAE,EAAExB,IAAI,CAAU,CAAC,CACxC,EACH;MAAEiD,WAAW,EAAE;IAAW,CAAE,CAC7B,CACF,EACDpF,MAAM,CAACmF,GAAG,CACRtF,KAAK,CAACwF,MAAM,CAAC,IAAIrD,GAAG,EAAa,EAAE,CAACsD,GAAG,EAAE,CAAC3B,EAAE,EAAExB,IAAI,CAAC,KACjDA,IAAI,CAAC+C,IAAI,KAAK,MAAM,GAAGI,GAAG,CAACvE,GAAG,CAAC4C,EAAE,EAAExB,IAAI,CAACoD,KAAK,CAAC,GAAGD,GAAG,CACrD,CACF,EACDtF,MAAM,CAACwF,MAAM,CACd;IAEHzE,GAAG,EAAEA,CAAC4D,QAAQ,EAAE1B,UAAU,EAAEK,QAAQ,KAClCtD,MAAM,CAACyF,QAAQ,CACblB,KAAK,CAACxD,GAAG,CAACkC,UAAU,EAAEK,QAAQ,CAAC,EAC/BtD,MAAM,CAACyD,IAAI,CAAC,MAAK;MACf,IAAI,CAACe,SAAS,CAAC3D,GAAG,CAAC8D,QAAQ,CAAC,EAAE;QAC5BH,SAAS,CAACzD,GAAG,CAAC4D,QAAQ,EAAE,IAAIe,GAAG,EAAE,CAAC;MACpC;MACAlB,SAAS,CAAC1D,GAAG,CAAC6D,QAAQ,CAAE,CAACgB,GAAG,CAAC1C,UAAU,CAAC;IAC1C,CAAC,CAAC,CACH;IAEHI,MAAM,EAAEA,CAACsB,QAAQ,EAAE1B,UAAU,KAC3BjD,MAAM,CAACyF,QAAQ,CACblB,KAAK,CAAClB,MAAM,CAACJ,UAAU,CAAC,EACxBjD,MAAM,CAACyD,IAAI,CAAC,MAAK;MACfe,SAAS,CAAC1D,GAAG,CAAC6D,QAAQ,CAAC,EAAEtB,MAAM,CAACJ,UAAU,CAAC;IAC7C,CAAC,CAAC,CACH;IAEH2C,YAAY,EAAEjB,QAAQ,IACpB3E,MAAM,CAAC6F,OAAO,CAAC,MAAK;MAClB,MAAMd,GAAG,GAAGP,SAAS,CAAC1D,GAAG,CAAC6D,QAAQ,CAAC;MACnCH,SAAS,CAACnB,MAAM,CAACsB,QAAQ,CAAC;MAE1B,MAAMmB,OAAO,GAA+B,EAAE;MAC9C,IAAIf,GAAG,EAAE;QACPA,GAAG,CAACC,OAAO,CAACrB,EAAE,IAAG;UACfmC,OAAO,CAACpD,IAAI,CAAC6B,KAAK,CAAClB,MAAM,CAACM,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC;MACJ;MAEA,OAAO3D,MAAM,CAAC+F,GAAG,CAACD,OAAO,EAAE;QACzBV,WAAW,EAAE,WAAW;QACxBY,OAAO,EAAE;OACV,CAAC;IACJ,CAAC,CAAC;IAEJlC,GAAG,EAAES,KAAK,CAACT;GACZ,CAAC;AACJ,CAAC,CAAC;AAAAO,OAAA,CAAAC,gBAAA,GAAAA,gBAAA","ignoreList":[]}