dfx 1.0.1 → 1.0.3

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 (299) 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 +1566 -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 -35
  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/test/index.test.ts +5 -0
  28. package/vitest.config.ts +22 -0
  29. package/Cache/driver.d.ts +0 -24
  30. package/Cache/driver.d.ts.map +0 -1
  31. package/Cache/driver.js +0 -11
  32. package/Cache/driver.js.map +0 -1
  33. package/Cache/memory.d.ts +0 -5
  34. package/Cache/memory.d.ts.map +0 -1
  35. package/Cache/memory.js +0 -57
  36. package/Cache/memory.js.map +0 -1
  37. package/Cache/memoryTTL.d.ts +0 -23
  38. package/Cache/memoryTTL.d.ts.map +0 -1
  39. package/Cache/memoryTTL.js +0 -128
  40. package/Cache/memoryTTL.js.map +0 -1
  41. package/Cache/prelude.d.ts +0 -32
  42. package/Cache/prelude.d.ts.map +0 -1
  43. package/Cache/prelude.js +0 -143
  44. package/Cache/prelude.js.map +0 -1
  45. package/Cache.d.ts +0 -81
  46. package/Cache.d.ts.map +0 -1
  47. package/Cache.js +0 -145
  48. package/Cache.js.map +0 -1
  49. package/DiscordConfig.d.ts +0 -35
  50. package/DiscordConfig.d.ts.map +0 -1
  51. package/DiscordConfig.js +0 -43
  52. package/DiscordConfig.js.map +0 -1
  53. package/DiscordGateway/DiscordWS.d.ts +0 -37
  54. package/DiscordGateway/DiscordWS.d.ts.map +0 -1
  55. package/DiscordGateway/DiscordWS.js +0 -86
  56. package/DiscordGateway/DiscordWS.js.map +0 -1
  57. package/DiscordGateway/Messaging.d.ts +0 -587
  58. package/DiscordGateway/Messaging.d.ts.map +0 -1
  59. package/DiscordGateway/Messaging.js +0 -43
  60. package/DiscordGateway/Messaging.js.map +0 -1
  61. package/DiscordGateway/Shard/StateStore.d.ts +0 -24
  62. package/DiscordGateway/Shard/StateStore.d.ts.map +0 -1
  63. package/DiscordGateway/Shard/StateStore.js +0 -49
  64. package/DiscordGateway/Shard/StateStore.js.map +0 -1
  65. package/DiscordGateway/Shard/heartbeats.d.ts +0 -8
  66. package/DiscordGateway/Shard/heartbeats.d.ts.map +0 -1
  67. package/DiscordGateway/Shard/heartbeats.js +0 -33
  68. package/DiscordGateway/Shard/heartbeats.js.map +0 -1
  69. package/DiscordGateway/Shard/identify.d.ts +0 -12
  70. package/DiscordGateway/Shard/identify.d.ts.map +0 -1
  71. package/DiscordGateway/Shard/identify.js +0 -37
  72. package/DiscordGateway/Shard/identify.js.map +0 -1
  73. package/DiscordGateway/Shard/sendEvents.d.ts +0 -8
  74. package/DiscordGateway/Shard/sendEvents.d.ts.map +0 -1
  75. package/DiscordGateway/Shard/sendEvents.js +0 -39
  76. package/DiscordGateway/Shard/sendEvents.js.map +0 -1
  77. package/DiscordGateway/Shard/utils.d.ts +0 -6
  78. package/DiscordGateway/Shard/utils.d.ts.map +0 -1
  79. package/DiscordGateway/Shard/utils.js +0 -11
  80. package/DiscordGateway/Shard/utils.js.map +0 -1
  81. package/DiscordGateway/Shard.d.ts +0 -29
  82. package/DiscordGateway/Shard.d.ts.map +0 -1
  83. package/DiscordGateway/Shard.js +0 -155
  84. package/DiscordGateway/Shard.js.map +0 -1
  85. package/DiscordGateway/ShardStore.d.ts +0 -19
  86. package/DiscordGateway/ShardStore.d.ts.map +0 -1
  87. package/DiscordGateway/ShardStore.js +0 -32
  88. package/DiscordGateway/ShardStore.js.map +0 -1
  89. package/DiscordGateway/Sharder.d.ts +0 -14
  90. package/DiscordGateway/Sharder.d.ts.map +0 -1
  91. package/DiscordGateway/Sharder.js +0 -75
  92. package/DiscordGateway/Sharder.js.map +0 -1
  93. package/DiscordGateway.d.ts +0 -33
  94. package/DiscordGateway.d.ts.map +0 -1
  95. package/DiscordGateway.js +0 -28
  96. package/DiscordGateway.js.map +0 -1
  97. package/DiscordREST/Generated.d.ts +0 -5577
  98. package/DiscordREST/Generated.d.ts.map +0 -1
  99. package/DiscordREST/Generated.js +0 -2480
  100. package/DiscordREST/Generated.js.map +0 -1
  101. package/DiscordREST/utils.d.ts +0 -14
  102. package/DiscordREST/utils.d.ts.map +0 -1
  103. package/DiscordREST/utils.js +0 -32
  104. package/DiscordREST/utils.js.map +0 -1
  105. package/DiscordREST.d.ts +0 -22
  106. package/DiscordREST.d.ts.map +0 -1
  107. package/DiscordREST.js +0 -128
  108. package/DiscordREST.js.map +0 -1
  109. package/Helpers/flags.d.ts +0 -28
  110. package/Helpers/flags.d.ts.map +0 -1
  111. package/Helpers/flags.js +0 -57
  112. package/Helpers/flags.js.map +0 -1
  113. package/Helpers/intents.d.ts +0 -25
  114. package/Helpers/intents.d.ts.map +0 -1
  115. package/Helpers/intents.js +0 -34
  116. package/Helpers/intents.js.map +0 -1
  117. package/Helpers/interactions.d.ts +0 -116
  118. package/Helpers/interactions.d.ts.map +0 -1
  119. package/Helpers/interactions.js +0 -143
  120. package/Helpers/interactions.js.map +0 -1
  121. package/Helpers/members.d.ts +0 -10
  122. package/Helpers/members.d.ts.map +0 -1
  123. package/Helpers/members.js +0 -17
  124. package/Helpers/members.js.map +0 -1
  125. package/Helpers/permissions.d.ts +0 -42
  126. package/Helpers/permissions.d.ts.map +0 -1
  127. package/Helpers/permissions.js +0 -97
  128. package/Helpers/permissions.js.map +0 -1
  129. package/Helpers/ui.d.ts +0 -105
  130. package/Helpers/ui.d.ts.map +0 -1
  131. package/Helpers/ui.js +0 -162
  132. package/Helpers/ui.js.map +0 -1
  133. package/Interactions/builder.d.ts +0 -48
  134. package/Interactions/builder.d.ts.map +0 -1
  135. package/Interactions/builder.js +0 -64
  136. package/Interactions/builder.js.map +0 -1
  137. package/Interactions/commandHelper.d.ts +0 -83
  138. package/Interactions/commandHelper.d.ts.map +0 -1
  139. package/Interactions/commandHelper.js +0 -57
  140. package/Interactions/commandHelper.js.map +0 -1
  141. package/Interactions/context.d.ts +0 -53
  142. package/Interactions/context.d.ts.map +0 -1
  143. package/Interactions/context.js +0 -47
  144. package/Interactions/context.js.map +0 -1
  145. package/Interactions/definitions.d.ts +0 -43
  146. package/Interactions/definitions.d.ts.map +0 -1
  147. package/Interactions/definitions.js +0 -67
  148. package/Interactions/definitions.js.map +0 -1
  149. package/Interactions/error.d.ts +0 -2
  150. package/Interactions/error.d.ts.map +0 -1
  151. package/Interactions/error.js +0 -8
  152. package/Interactions/error.js.map +0 -1
  153. package/Interactions/gateway.d.ts +0 -20
  154. package/Interactions/gateway.d.ts.map +0 -1
  155. package/Interactions/gateway.js +0 -92
  156. package/Interactions/gateway.js.map +0 -1
  157. package/Interactions/handlers.d.ts +0 -15
  158. package/Interactions/handlers.d.ts.map +0 -1
  159. package/Interactions/handlers.js +0 -73
  160. package/Interactions/handlers.js.map +0 -1
  161. package/Interactions/index.d.ts +0 -17
  162. package/Interactions/index.d.ts.map +0 -1
  163. package/Interactions/index.js +0 -94
  164. package/Interactions/index.js.map +0 -1
  165. package/Interactions/utils.d.ts +0 -61
  166. package/Interactions/utils.d.ts.map +0 -1
  167. package/Interactions/utils.js +0 -35
  168. package/Interactions/utils.js.map +0 -1
  169. package/Interactions/webhook.d.ts +0 -71
  170. package/Interactions/webhook.d.ts.map +0 -1
  171. package/Interactions/webhook.js +0 -89
  172. package/Interactions/webhook.js.map +0 -1
  173. package/RateLimit/memory.d.ts +0 -3
  174. package/RateLimit/memory.d.ts.map +0 -1
  175. package/RateLimit/memory.js +0 -47
  176. package/RateLimit/memory.js.map +0 -1
  177. package/RateLimit/utils.d.ts +0 -3
  178. package/RateLimit/utils.d.ts.map +0 -1
  179. package/RateLimit/utils.js +0 -25
  180. package/RateLimit/utils.js.map +0 -1
  181. package/RateLimit.d.ts +0 -30
  182. package/RateLimit.d.ts.map +0 -1
  183. package/RateLimit.js +0 -37
  184. package/RateLimit.js.map +0 -1
  185. package/gateway.d.ts +0 -19
  186. package/gateway.d.ts.map +0 -1
  187. package/gateway.js +0 -72
  188. package/gateway.js.map +0 -1
  189. package/index.d.ts +0 -18
  190. package/index.d.ts.map +0 -1
  191. package/index.js +0 -71
  192. package/index.js.map +0 -1
  193. package/mjs/Cache/driver.mjs +0 -3
  194. package/mjs/Cache/driver.mjs.map +0 -1
  195. package/mjs/Cache/memory.mjs +0 -48
  196. package/mjs/Cache/memory.mjs.map +0 -1
  197. package/mjs/Cache/memoryTTL.mjs +0 -119
  198. package/mjs/Cache/memoryTTL.mjs.map +0 -1
  199. package/mjs/Cache/prelude.mjs +0 -131
  200. package/mjs/Cache/prelude.mjs.map +0 -1
  201. package/mjs/Cache.mjs +0 -90
  202. package/mjs/Cache.mjs.map +0 -1
  203. package/mjs/DiscordConfig.mjs +0 -32
  204. package/mjs/DiscordConfig.mjs.map +0 -1
  205. package/mjs/DiscordGateway/DiscordWS.mjs +0 -77
  206. package/mjs/DiscordGateway/DiscordWS.mjs.map +0 -1
  207. package/mjs/DiscordGateway/Messaging.mjs +0 -35
  208. package/mjs/DiscordGateway/Messaging.mjs.map +0 -1
  209. package/mjs/DiscordGateway/Shard/StateStore.mjs +0 -41
  210. package/mjs/DiscordGateway/Shard/StateStore.mjs.map +0 -1
  211. package/mjs/DiscordGateway/Shard/heartbeats.mjs +0 -25
  212. package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +0 -1
  213. package/mjs/DiscordGateway/Shard/identify.mjs +0 -29
  214. package/mjs/DiscordGateway/Shard/identify.mjs.map +0 -1
  215. package/mjs/DiscordGateway/Shard/sendEvents.mjs +0 -26
  216. package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +0 -1
  217. package/mjs/DiscordGateway/Shard/utils.mjs +0 -3
  218. package/mjs/DiscordGateway/Shard/utils.mjs.map +0 -1
  219. package/mjs/DiscordGateway/Shard.mjs +0 -147
  220. package/mjs/DiscordGateway/Shard.mjs.map +0 -1
  221. package/mjs/DiscordGateway/ShardStore.mjs +0 -24
  222. package/mjs/DiscordGateway/ShardStore.mjs.map +0 -1
  223. package/mjs/DiscordGateway/Sharder.mjs +0 -67
  224. package/mjs/DiscordGateway/Sharder.mjs.map +0 -1
  225. package/mjs/DiscordGateway.mjs +0 -21
  226. package/mjs/DiscordGateway.mjs.map +0 -1
  227. package/mjs/DiscordREST/Generated.mjs +0 -2471
  228. package/mjs/DiscordREST/Generated.mjs.map +0 -1
  229. package/mjs/DiscordREST/utils.mjs +0 -21
  230. package/mjs/DiscordREST/utils.mjs.map +0 -1
  231. package/mjs/DiscordREST.mjs +0 -119
  232. package/mjs/DiscordREST.mjs.map +0 -1
  233. package/mjs/Helpers/flags.mjs +0 -45
  234. package/mjs/Helpers/flags.mjs.map +0 -1
  235. package/mjs/Helpers/intents.mjs +0 -27
  236. package/mjs/Helpers/intents.mjs.map +0 -1
  237. package/mjs/Helpers/interactions.mjs +0 -115
  238. package/mjs/Helpers/interactions.mjs.map +0 -1
  239. package/mjs/Helpers/members.mjs +0 -9
  240. package/mjs/Helpers/members.mjs.map +0 -1
  241. package/mjs/Helpers/permissions.mjs +0 -84
  242. package/mjs/Helpers/permissions.mjs.map +0 -1
  243. package/mjs/Helpers/ui.mjs +0 -137
  244. package/mjs/Helpers/ui.mjs.map +0 -1
  245. package/mjs/Interactions/builder.mjs +0 -56
  246. package/mjs/Interactions/builder.mjs.map +0 -1
  247. package/mjs/Interactions/commandHelper.mjs +0 -49
  248. package/mjs/Interactions/commandHelper.mjs.map +0 -1
  249. package/mjs/Interactions/context.mjs +0 -28
  250. package/mjs/Interactions/context.mjs.map +0 -1
  251. package/mjs/Interactions/definitions.mjs +0 -51
  252. package/mjs/Interactions/definitions.mjs.map +0 -1
  253. package/mjs/Interactions/error.mjs +0 -2
  254. package/mjs/Interactions/error.mjs.map +0 -1
  255. package/mjs/Interactions/gateway.mjs +0 -82
  256. package/mjs/Interactions/gateway.mjs.map +0 -1
  257. package/mjs/Interactions/handlers.mjs +0 -64
  258. package/mjs/Interactions/handlers.mjs.map +0 -1
  259. package/mjs/Interactions/index.mjs +0 -11
  260. package/mjs/Interactions/index.mjs.map +0 -1
  261. package/mjs/Interactions/utils.mjs +0 -26
  262. package/mjs/Interactions/utils.mjs.map +0 -1
  263. package/mjs/Interactions/webhook.mjs +0 -75
  264. package/mjs/Interactions/webhook.mjs.map +0 -1
  265. package/mjs/RateLimit/memory.mjs +0 -39
  266. package/mjs/RateLimit/memory.mjs.map +0 -1
  267. package/mjs/RateLimit/utils.mjs +0 -18
  268. package/mjs/RateLimit/utils.mjs.map +0 -1
  269. package/mjs/RateLimit.mjs +0 -28
  270. package/mjs/RateLimit.mjs.map +0 -1
  271. package/mjs/gateway.mjs +0 -19
  272. package/mjs/gateway.mjs.map +0 -1
  273. package/mjs/index.mjs +0 -18
  274. package/mjs/index.mjs.map +0 -1
  275. package/mjs/types.mjs +0 -356
  276. package/mjs/types.mjs.map +0 -1
  277. package/mjs/utils/Effect.mjs +0 -44
  278. package/mjs/utils/Effect.mjs.map +0 -1
  279. package/mjs/version.mjs +0 -2
  280. package/mjs/version.mjs.map +0 -1
  281. package/mjs/webhooks.mjs +0 -6
  282. package/mjs/webhooks.mjs.map +0 -1
  283. package/src/version.ts +0 -1
  284. package/types.d.ts +0 -2458
  285. package/types.d.ts.map +0 -1
  286. package/types.js +0 -408
  287. package/types.js.map +0 -1
  288. package/utils/Effect.d.ts +0 -5
  289. package/utils/Effect.d.ts.map +0 -1
  290. package/utils/Effect.js +0 -53
  291. package/utils/Effect.js.map +0 -1
  292. package/version.d.ts +0 -2
  293. package/version.d.ts.map +0 -1
  294. package/version.js +0 -8
  295. package/version.js.map +0 -1
  296. package/webhooks.d.ts +0 -8
  297. package/webhooks.d.ts.map +0 -1
  298. package/webhooks.js +0 -55
  299. package/webhooks.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ DISCORD_BOT_TOKEN=xxx
2
+
3
+ # For webhooks only
4
+ DISCORD_APP_ID=xxx
5
+ DISCORD_PUBLIC_KEY=xxx
@@ -0,0 +1,79 @@
1
+ import { NodeHttpClient, NodeSocket } from "@effect/platform-node"
2
+ import { Discord, DiscordConfig, Ix } from "dfx"
3
+ import { DiscordLive, runIx } from "dfx/gateway"
4
+ import Dotenv from "dotenv"
5
+ import { Config, Effect, Layer, pipe } from "effect"
6
+
7
+ Dotenv.config()
8
+
9
+ // Create the dependencies layer
10
+ const DiscordConfigLive = DiscordConfig.layerConfig({
11
+ token: Config.redacted("DISCORD_BOT_TOKEN"),
12
+ })
13
+
14
+ // Create your interaction definitions.
15
+ // Here we are creating a global application command.
16
+ const hello = Ix.global(
17
+ {
18
+ name: "hello",
19
+ description: "A basic command",
20
+ },
21
+ Effect.succeed({
22
+ type: 4,
23
+ data: {
24
+ content: "Hello!",
25
+ },
26
+ }),
27
+ )
28
+
29
+ // Optionally use the type safe helpers
30
+ const greeting = Ix.global(
31
+ {
32
+ name: "greeting",
33
+ description: "A basic command",
34
+ options: [
35
+ {
36
+ type: Discord.ApplicationCommandOptionType.STRING,
37
+ name: "who",
38
+ description: "who to greet",
39
+ required: true,
40
+ },
41
+ {
42
+ type: Discord.ApplicationCommandOptionType.STRING,
43
+ name: "greeting",
44
+ description: "What kind of greeting?",
45
+ },
46
+ ],
47
+ },
48
+ ix =>
49
+ Effect.succeed({
50
+ type: 4,
51
+ data: {
52
+ content: `${ix.optionValueOrElse("greeting", () => "Hello")} ${ix.optionValue("who")}!`,
53
+ },
54
+ // fail: ix.optionValue("fail"), // <- this would be a type error
55
+ }),
56
+ )
57
+
58
+ // Build your program use `Ix.builder`
59
+ const program = Effect.gen(function* () {
60
+ const interactions = pipe(
61
+ Ix.builder.add(hello).add(greeting),
62
+ runIx(Effect.catch(e => Effect.logError("CAUGHT INTERACTION ERROR", e))),
63
+ )
64
+
65
+ yield* Effect.asVoid(interactions)
66
+ })
67
+
68
+ const EnvLive = DiscordLive.pipe(
69
+ Layer.provide(NodeHttpClient.layerUndici),
70
+ Layer.provide(NodeSocket.layerWebSocketConstructor),
71
+ Layer.provide(DiscordConfigLive),
72
+ )
73
+
74
+ // Run it
75
+ program.pipe(
76
+ Effect.provide(EnvLive),
77
+ Effect.tapCause(Effect.logError),
78
+ Effect.runFork,
79
+ )
@@ -0,0 +1,56 @@
1
+ import { NodeHttpClient, NodeRuntime, NodeSocket } from "@effect/platform-node"
2
+ import { DiscordConfig, Ix } from "dfx"
3
+ import { DiscordIxLive, InteractionsRegistry } from "dfx/gateway"
4
+ import * as Dotenv from "dotenv"
5
+ import { Config, Effect, Layer } from "effect"
6
+
7
+ Dotenv.config()
8
+
9
+ // Create a layer for the discord services
10
+ const DiscordLayer = DiscordIxLive.pipe(
11
+ Layer.provide([
12
+ DiscordConfig.layerConfig({
13
+ token: Config.redacted("DISCORD_BOT_TOKEN"),
14
+ }),
15
+ NodeHttpClient.layerUndici,
16
+ NodeSocket.layerWebSocketConstructor,
17
+ ]),
18
+ )
19
+
20
+ // Create hello service
21
+ const HelloLayer = Layer.effectDiscard(
22
+ Effect.gen(function* () {
23
+ const registry = yield* InteractionsRegistry
24
+
25
+ // Create hello command that responds with "Hello!"
26
+ const hello = Ix.global(
27
+ {
28
+ name: "hello",
29
+ description: "A basic command",
30
+ },
31
+ Effect.succeed({
32
+ type: 4,
33
+ data: {
34
+ content: "Hello!",
35
+ },
36
+ }),
37
+ )
38
+
39
+ // register the command(s) and handle errors
40
+ yield* registry.register(
41
+ Ix.builder.add(hello).catchAllCause(Effect.logError),
42
+ )
43
+ }),
44
+ ).pipe(
45
+ // provide discord layer
46
+ Layer.provide(DiscordLayer),
47
+ )
48
+
49
+ // Construct the main layer
50
+ const MainLive = Layer.mergeAll(
51
+ // add your other services here
52
+ HelloLayer,
53
+ )
54
+
55
+ // run it
56
+ NodeRuntime.runMain(Layer.launch(MainLive))
@@ -0,0 +1,66 @@
1
+ import { NodeHttpClient, NodeRuntime, NodeSocket } from "@effect/platform-node"
2
+ import { Discord, DiscordConfig, Ix, UI } from "dfx"
3
+ import { DiscordIxLive, InteractionsRegistry } from "dfx/gateway"
4
+ import Dotenv from "dotenv"
5
+ import { Config, Effect, Layer } from "effect"
6
+
7
+ Dotenv.config()
8
+
9
+ // Create your service and register your interactions
10
+ const makeGreetService = Effect.gen(function* () {
11
+ const registry = yield* InteractionsRegistry
12
+
13
+ const greet = Ix.global(
14
+ {
15
+ name: "greet",
16
+ description: "A basic command",
17
+ options: [
18
+ {
19
+ name: "name",
20
+ description: "who to greet",
21
+ type: Discord.ApplicationCommandOptionType.STRING,
22
+ required: true,
23
+ },
24
+ ],
25
+ },
26
+ ix =>
27
+ Effect.succeed(
28
+ Ix.response({
29
+ type: Discord.InteractionCallbackTypes.CHANNEL_MESSAGE_WITH_SOURCE,
30
+ data: UI.components([
31
+ UI.textDisplay(`Hello ${ix.optionValue("name")}!`),
32
+ UI.row([
33
+ UI.button({ custom_id: "one", label: "Click me!" }),
34
+ UI.button({ custom_id: "two", label: "Click me 2!" }),
35
+ ]),
36
+ ]),
37
+ }),
38
+ ),
39
+ )
40
+
41
+ // create a builder
42
+ const ix = Ix.builder.add(greet).catchAllCause(Effect.logError)
43
+
44
+ // register the interactions
45
+ yield* registry.register(ix)
46
+ })
47
+
48
+ // Greet service layer
49
+ const GreetLive = Layer.effectDiscard(makeGreetService)
50
+
51
+ // Main layer
52
+ const MainLive = GreetLive.pipe(
53
+ Layer.provide(DiscordIxLive),
54
+ Layer.provide(NodeHttpClient.layerUndici),
55
+ Layer.provide(NodeSocket.layerWebSocketConstructor),
56
+ Layer.provide(
57
+ DiscordConfig.layerConfig({
58
+ token: Config.redacted("DISCORD_BOT_TOKEN"),
59
+ }),
60
+ ),
61
+ )
62
+
63
+ Layer.launch(MainLive).pipe(
64
+ Effect.catchCause(Effect.logError),
65
+ NodeRuntime.runMain,
66
+ )
package/flake.lock ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "nodes": {
3
+ "nixpkgs": {
4
+ "locked": {
5
+ "lastModified": 1747060738,
6
+ "narHash": "sha256-ByfPRQuqj+nhtVV0koinEpmJw0KLzNbgcgi9EF+NVow=",
7
+ "owner": "nixos",
8
+ "repo": "nixpkgs",
9
+ "rev": "eaeed9530c76ce5f1d2d8232e08bec5e26f18ec1",
10
+ "type": "github"
11
+ },
12
+ "original": {
13
+ "owner": "nixos",
14
+ "ref": "nixpkgs-unstable",
15
+ "repo": "nixpkgs",
16
+ "type": "github"
17
+ }
18
+ },
19
+ "root": {
20
+ "inputs": {
21
+ "nixpkgs": "nixpkgs"
22
+ }
23
+ }
24
+ },
25
+ "root": "root",
26
+ "version": 7
27
+ }
package/flake.nix ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ inputs = {
3
+ nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
4
+ };
5
+ outputs = {nixpkgs, ...}: let
6
+ forAllSystems = function:
7
+ nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (
8
+ system: function nixpkgs.legacyPackages.${system}
9
+ );
10
+ in {
11
+ formatter = forAllSystems (pkgs: pkgs.alejandra);
12
+ devShells = forAllSystems (pkgs: {
13
+ default = pkgs.mkShell {
14
+ packages = with pkgs; [
15
+ corepack
16
+ nodejs
17
+ ];
18
+ };
19
+ });
20
+ };
21
+ }
package/lerna.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "packages": ["."],
3
+ "version": "independent",
4
+ "npmClient": "pnpm",
5
+ "command": {
6
+ "version": {
7
+ "allowBranch": "main",
8
+ "conventionalCommits": true,
9
+ "createRelease": "github"
10
+ }
11
+ }
12
+ }
package/package.json CHANGED
@@ -1,48 +1,92 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
+ "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977",
5
+ "type": "module",
6
+ "publishConfig": {
7
+ "access": "public",
8
+ "directory": "dist"
9
+ },
4
10
  "description": "Effect-TS discord library",
5
- "license": "MIT",
11
+ "author": "Tim Smart <hello@timsmart.co>",
6
12
  "repository": {
7
13
  "type": "git",
8
14
  "url": "https://github.com/tim-smart/dfx.git"
9
15
  },
10
- "publishConfig": {
11
- "access": "public"
12
- },
13
- "exports": {
14
- "./*": {
15
- "import": {
16
- "types": "./*.d.ts",
17
- "default": "./mjs/*.mjs"
18
- },
19
- "require": {
20
- "types": "./*.d.ts",
21
- "default": "./*.js"
22
- }
23
- },
24
- ".": {
25
- "import": {
26
- "types": "./index.d.ts",
27
- "default": "./mjs/index.mjs"
28
- },
29
- "require": {
30
- "types": "./index.d.ts",
31
- "default": "./index.js"
32
- }
33
- }
34
- },
35
- "sideEffects": [],
36
- "author": "Tim Smart <hello@timsmart.co>",
37
- "dependencies": {
38
- "discord-api-types": "^0.38.40"
16
+ "license": "MIT",
17
+ "scripts": {
18
+ "example": "ts-node --project tsconfig.examples.json",
19
+ "prepublishOnly": "pnpm build",
20
+ "types": "./scripts/generate-client.sh",
21
+ "clean": "rimraf build tsbuildinfo dist .cache",
22
+ "prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
23
+ "build": "pnpm prebuild && pnpm build-all && pnpm build-pack",
24
+ "build-cjs": "babel build/esm --config-file ./.babel.cjs.json --out-dir build/cjs --out-file-extension .js --source-maps",
25
+ "build-mjs": "babel build/esm --config-file ./.babel.mjs.json --out-dir build/mjs --out-file-extension .mjs --source-maps",
26
+ "build-post": "build-utils pack-v1",
27
+ "build-pack": "concurrently \"pnpm build-cjs\" \"pnpm build-mjs\" && pnpm build-post",
28
+ "build-all": "tsc -b tsconfig.json",
29
+ "build-watch": "tsc -b tsconfig.json --watch",
30
+ "check": "pnpm lint && pnpm tsgo -b tsconfig.json",
31
+ "lint": "oxlint src test examples",
32
+ "autofix": "pnpm lint --fix",
33
+ "circular": "madge --ts-config ./tsconfig.madge.json --circular --no-color --no-spinner --warning build/esm",
34
+ "test": "vitest",
35
+ "coverage": "vitest run --coverage",
36
+ "prepare": "husky && effect-language-service patch"
39
37
  },
40
38
  "peerDependencies": {
41
- "effect": "4.0.0-beta.7"
39
+ "effect": "4.0.0-beta.14"
42
40
  },
43
41
  "optionalDependencies": {
44
42
  "discord-verify": "^1.2.0"
45
43
  },
46
- "gitHead": "d68ef3b904b63c0ddbd1e328f8c40d7acbd96d37",
47
- "main": "./index.js"
48
- }
44
+ "devDependencies": {
45
+ "@babel/cli": "^7.28.6",
46
+ "@babel/core": "^7.29.0",
47
+ "@babel/plugin-syntax-import-attributes": "^7.28.6",
48
+ "@babel/plugin-transform-modules-commonjs": "^7.28.6",
49
+ "@changesets/changelog-github": "^0.5.2",
50
+ "@changesets/cli": "^2.29.8",
51
+ "@effect/babel-plugin": "^0.2.0",
52
+ "@effect/build-utils": "^0.8.9",
53
+ "@effect/language-service": "^0.75.1",
54
+ "@effect/platform-node": "4.0.0-beta.13",
55
+ "@tim-smart/openapi-gen": "^1.0.1",
56
+ "@types/chai": "^5.2.3",
57
+ "@types/node": "^25.3.0",
58
+ "@types/ws": "^8.18.1",
59
+ "@typescript/native-preview": "7.0.0-dev.20260220.1",
60
+ "@vitejs/plugin-react": "^5.1.4",
61
+ "@vitest/coverage-v8": "^4.0.18",
62
+ "babel-plugin-annotate-pure-calls": "^0.5.0",
63
+ "concurrently": "^9.2.1",
64
+ "dotenv": "^17.3.1",
65
+ "effect": "4.0.0-beta.14",
66
+ "husky": "^9.1.7",
67
+ "lerna": "^9.0.4",
68
+ "lint-staged": "^16.2.7",
69
+ "madge": "^8.0.0",
70
+ "oxlint": "^1.49.0",
71
+ "prettier": "^3.8.1",
72
+ "rimraf": "^6.1.3",
73
+ "ts-node": "^10.9.2",
74
+ "tsx": "^4.21.0",
75
+ "typescript": "^5.9.3",
76
+ "vite": "^7.3.1",
77
+ "vitest": "4.0.18"
78
+ },
79
+ "gitHead": "4a973a79b3d5e011640833fd7428734ee7c715d9",
80
+ "dependencies": {
81
+ "discord-api-types": "^0.38.40"
82
+ },
83
+ "lint-staged": {
84
+ "*.{ts,tsx}": [
85
+ "oxlint --fix",
86
+ "prettier --write"
87
+ ],
88
+ "*.{json,md,yml,yaml}": [
89
+ "prettier --write"
90
+ ]
91
+ }
92
+ }
@@ -0,0 +1,7 @@
1
+ ignoredBuiltDependencies:
2
+ - esbuild
3
+ onlyBuiltDependencies:
4
+ - '@parcel/watcher'
5
+ - msgpackr-extract
6
+ - nx
7
+ - unrs-resolver
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ mkdir -p tmp
4
+ curl https://raw.githubusercontent.com/discord/discord-api-spec/refs/heads/main/specs/openapi.json -o tmp/openapi.json
5
+ pnpm openapi-gen -n DiscordRest -s tmp/openapi.json > src/DiscordREST/Generated.ts
6
+
7
+ echo "// oxlint-disable no-shadow
8
+ $(cat src/DiscordREST/Generated.ts)" > src/DiscordREST/Generated.ts
9
+
10
+ pnpm prettier -w src/DiscordREST/Generated.ts
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ direnv allow
5
+ corepack install
6
+ pnpm install
7
+
8
+ git clone https://github.com/effect-ts/effect-smol.git --depth 1 .repos/effect
@@ -0,0 +1,5 @@
1
+ describe("test", () => {
2
+ it("should work", () => {
3
+ expect(1).toBe(1)
4
+ })
5
+ })
@@ -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 "./driver.ts";
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,aAAa,CAAA;AAGjE,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("./driver.js");
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.fromNullishOr(map.get(parentId)?.get(resourceId))),
23
- getForParent: parentId => Effect.sync(() => Option.fromNullishOr(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.fromNullishOr(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","fromNullishOr","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 "./driver.ts";
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,aAAa,CAAA;AAGjE,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAOvC,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"}