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
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.splitDefinitions = exports.flattenDefinitions = void 0;
7
- var Chunk = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Chunk"));
8
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
9
- var Array = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Array"));
10
- var _commandHelper = /*#__PURE__*/require("./commandHelper.js");
11
- 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); }
12
- const flattenDefinitions = (definitions, handleResponse) => Array.map(Chunk.toReadonlyArray(definitions), ([definition, transform]) => ({
13
- ...definition,
14
- handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(new _commandHelper.CommandHelper(i)), _ => handleResponse(i, _))))
15
- }));
16
- exports.flattenDefinitions = flattenDefinitions;
17
- const splitDefinitions = definitions => {
18
- const grouped = Array.reduce(definitions, {
19
- Autocomplete: [],
20
- GlobalApplicationCommand: [],
21
- GuildApplicationCommand: [],
22
- MessageComponent: [],
23
- ModalSubmit: [],
24
- Commands: {}
25
- }, (acc, d) => {
26
- acc[d._tag].push(d);
27
- if (d._tag === "GlobalApplicationCommand" || d._tag === "GuildApplicationCommand") {
28
- acc.Commands[d.command.name] = d;
29
- }
30
- return acc;
31
- });
32
- return grouped;
33
- };
34
- exports.splitDefinitions = splitDefinitions;
35
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["Chunk","_interopRequireWildcard","require","Effect","Array","_commandHelper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","flattenDefinitions","definitions","handleResponse","map","toReadonlyArray","definition","transform","handle","isEffect","scoped","flatMap","_","CommandHelper","exports","splitDefinitions","grouped","reduce","Autocomplete","GlobalApplicationCommand","GuildApplicationCommand","MessageComponent","ModalSubmit","Commands","acc","d","_tag","push","command","name"],"sources":["../src/Interactions/utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,71 +0,0 @@
1
- import type * as Cause from "effect/Cause";
2
- import type * as Config from "effect/Config";
3
- import * as Redacted from "effect/Redacted";
4
- import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
- import * as ServiceMap from "effect/ServiceMap";
7
- import type { DefinitionNotFound } from "./handlers.ts";
8
- import type { InteractionBuilder } from "./index.ts";
9
- import type * as Discord from "../types.ts";
10
- import * as Verify from "discord-verify";
11
- export declare class BadWebhookSignature {
12
- readonly _tag = "BadWebhookSignature";
13
- }
14
- export type Headers = Record<string, string | Array<string> | undefined>;
15
- export interface MakeConfigOpts {
16
- readonly applicationId: string;
17
- readonly publicKey: Redacted.Redacted;
18
- readonly crypto: SubtleCrypto;
19
- readonly algorithm: keyof typeof Verify.PlatformAlgorithm;
20
- }
21
- declare const WebhookConfig_base: ServiceMap.ServiceClass<WebhookConfig, "dfx/Interactions/WebhookConfig", {
22
- applicationId: string;
23
- publicKey: string;
24
- crypto: SubtleCrypto;
25
- algorithm: string | {
26
- name: string;
27
- namedCurve: string;
28
- public: boolean;
29
- } | {
30
- name: string;
31
- namedCurve: string;
32
- public: boolean;
33
- } | {
34
- name: string;
35
- namedCurve: string;
36
- public: boolean;
37
- } | {
38
- name: string;
39
- namedCurve: string;
40
- };
41
- }>;
42
- export declare class WebhookConfig extends WebhookConfig_base {
43
- }
44
- export declare const layer: (opts: MakeConfigOpts) => Layer.Layer<WebhookConfig, never, never>;
45
- export declare const layerConfig: (config: Config.Config<MakeConfigOpts>) => Layer.Layer<WebhookConfig, Config.ConfigError>;
46
- declare const WebhookParseError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Cause.YieldableError & {
47
- readonly _tag: "WebhookParseError";
48
- } & Readonly<A>;
49
- export declare class WebhookParseError extends WebhookParseError_base<{
50
- cause: unknown;
51
- }> {
52
- }
53
- export interface HandleWebhookOpts<E> {
54
- headers: Headers;
55
- body: string;
56
- success: (a: Discord.CreateInteractionResponseRequest) => Effect.Effect<void>;
57
- error: (e: Cause.Cause<E>) => Effect.Effect<void>;
58
- }
59
- /**
60
- * @tsplus getter dfx/InteractionBuilder webhookHandler
61
- */
62
- export declare const makeHandler: <R, E, TE>(ix: InteractionBuilder<R, E, TE>) => (({ body, error, headers, success, }: HandleWebhookOpts<E | WebhookParseError | BadWebhookSignature | DefinitionNotFound>) => Effect.Effect<void, never, WebhookConfig>);
63
- /**
64
- * @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
65
- */
66
- export declare const makeSimpleHandler: <R, E, TE>(ix: InteractionBuilder<R, E, TE>) => (({ body, headers, }: {
67
- headers: Headers;
68
- body: string;
69
- }) => Effect.Effect<Discord.CreateInteractionResponseRequest, BadWebhookSignature | WebhookParseError | DefinitionNotFound, WebhookConfig>);
70
- export {};
71
- //# sourceMappingURL=webhook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/Interactions/webhook.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,KAAK,KAAK,OAAO,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AAGxC,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,yBAAwB;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;AAgCxE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,MAAM,CAAC,iBAAiB,CAAA;CAC1D;;;;;;;;;;;;;;;;;;;;;;AAaD,qBAAa,aAAc,SAAQ,kBAGE;CAAG;AAExC,eAAO,MAAM,KAAK,GAAI,MAAM,cAAc,6CACM,CAAA;AAEhD,eAAO,MAAM,WAAW,EAAE,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,KAClC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAEyB,CAAA;;;;AAE3E,qBAAa,iBAAkB,SAAQ,uBAAsC;IAC3E,KAAK,EAAE,OAAO,CAAA;CACf,CAAC;CAAG;AAqDL,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,gCAAgC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7E,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClD;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAClC,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAC/B,CAAC,CAAC,EACH,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,iBAAiB,CAClB,CAAC,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,CACjE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAkB9C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EACxC,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAC/B,CAAC,CAAC,EACH,IAAI,EACJ,OAAO,GACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,KAAK,MAAM,CAAC,MAAM,CACjB,OAAO,CAAC,gCAAgC,EACxC,mBAAmB,GAAG,iBAAiB,GAAG,kBAAkB,EAC5D,aAAa,CACd,CAQA,CAAA"}
@@ -1,89 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.makeSimpleHandler = exports.makeHandler = exports.layerConfig = exports.layer = exports.WebhookParseError = exports.WebhookConfig = exports.BadWebhookSignature = void 0;
7
- var Chunk = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Chunk"));
8
- var _Function = /*#__PURE__*/require("effect/Function");
9
- var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
10
- var Redacted = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Redacted"));
11
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
12
- var Layer = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Layer"));
13
- var ServiceMap = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ServiceMap"));
14
- var _handlers = /*#__PURE__*/require("./handlers.js");
15
- var _index = /*#__PURE__*/require("./index.js");
16
- var Verify = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("discord-verify"));
17
- var Data = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Data"));
18
- 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); }
19
- class BadWebhookSignature {
20
- _tag = "BadWebhookSignature";
21
- }
22
- exports.BadWebhookSignature = BadWebhookSignature;
23
- const checkSignature = (publicKey, headers, body, crypto, algorithm) => Effect.fromOption(Option.all({
24
- signature: Option.fromNullishOr(headers["x-signature-ed25519"]),
25
- timestamp: Option.fromNullishOr(headers["x-signature-timestamp"])
26
- })).pipe(Effect.flatMap(_ => Effect.promise(() => Verify.verify(body, _.signature, _.timestamp, publicKey, crypto, algorithm))), Effect.filterOrFail(_Function.identity, () => new BadWebhookSignature()), Effect.catchCause(() => Effect.fail(new BadWebhookSignature())), Effect.asVoid);
27
- const makeConfig = ({
28
- algorithm,
29
- applicationId,
30
- crypto,
31
- publicKey
32
- }) => ({
33
- applicationId,
34
- publicKey: Redacted.value(publicKey),
35
- crypto,
36
- algorithm: Verify.PlatformAlgorithm[algorithm]
37
- });
38
- class WebhookConfig extends /*#__PURE__*/ServiceMap.Service()("dfx/Interactions/WebhookConfig") {}
39
- exports.WebhookConfig = WebhookConfig;
40
- const layer = opts => Layer.succeed(WebhookConfig, makeConfig(opts));
41
- exports.layer = layer;
42
- const layerConfig = config => Layer.effect(WebhookConfig, Effect.map(config.asEffect(), makeConfig));
43
- exports.layerConfig = layerConfig;
44
- class WebhookParseError extends /*#__PURE__*/Data.TaggedError("WebhookParseError") {}
45
- exports.WebhookParseError = WebhookParseError;
46
- const fromHeadersAndBody = (headers, body) => WebhookConfig.use(({
47
- algorithm,
48
- crypto,
49
- publicKey
50
- }) => checkSignature(publicKey, headers, body, crypto, algorithm).pipe(Effect.andThen(Effect.try({
51
- try: () => JSON.parse(body),
52
- catch: cause => new WebhookParseError({
53
- cause
54
- })
55
- }))));
56
- const run = (definitions, handleResponse) => {
57
- const handler = (0, _handlers.handlers)(definitions, handleResponse);
58
- return (headers, body) => Effect.flatMap(fromHeadersAndBody(headers, body), interaction => Effect.withSpan(Effect.provideService(handler[interaction.type](interaction), _index.Interaction, interaction), "dfx.Interaction", {
59
- attributes: {
60
- interactionId: interaction.id
61
- },
62
- captureStackTrace: false
63
- }));
64
- };
65
- /**
66
- * @tsplus getter dfx/InteractionBuilder webhookHandler
67
- */
68
- const makeHandler = ix => {
69
- const handle = run(Chunk.map(ix.definitions, ([d]) => [d, _Function.identity]), (_i, r) => Effect.succeed(r));
70
- return ({
71
- body,
72
- error,
73
- headers,
74
- success
75
- }) => handle(headers, body).pipe(Effect.flatMap(success), Effect.catchCause(error));
76
- };
77
- /**
78
- * @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
79
- */
80
- exports.makeHandler = makeHandler;
81
- const makeSimpleHandler = ix => {
82
- const handle = run(Chunk.map(ix.definitions, ([d]) => [d, _Function.identity]), (_i, r) => Effect.succeed(r));
83
- return ({
84
- body,
85
- headers
86
- }) => handle(headers, body);
87
- };
88
- exports.makeSimpleHandler = makeSimpleHandler;
89
- //# sourceMappingURL=webhook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhook.js","names":["Chunk","_interopRequireWildcard","require","_Function","Option","Redacted","Effect","Layer","ServiceMap","_handlers","_index","Verify","Data","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BadWebhookSignature","_tag","exports","checkSignature","publicKey","headers","body","crypto","algorithm","fromOption","all","signature","fromNullishOr","timestamp","pipe","flatMap","_","promise","verify","filterOrFail","identity","catchCause","fail","asVoid","makeConfig","applicationId","value","PlatformAlgorithm","WebhookConfig","Service","layer","opts","succeed","layerConfig","config","effect","map","asEffect","WebhookParseError","TaggedError","fromHeadersAndBody","use","andThen","try","JSON","parse","catch","cause","run","definitions","handleResponse","handler","handlers","interaction","withSpan","provideService","type","Interaction","attributes","interactionId","id","captureStackTrace","makeHandler","ix","handle","d","_i","error","success","makeSimpleHandler"],"sources":["../src/Interactions/webhook.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import type { RateLimitStoreService } from "../RateLimit.ts";
2
- export declare const make: () => RateLimitStoreService;
3
- //# sourceMappingURL=memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/RateLimit/memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAO3E,eAAO,MAAM,IAAI,QAAO,qBAqDvB,CAAA"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.make = void 0;
7
- var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
8
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
9
- 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); }
10
- const make = () => {
11
- const buckets = new Map();
12
- const routes = new Map();
13
- const counters = new Map();
14
- const getCounter = key => Option.filter(Option.fromNullishOr(counters.get(key)), c => c.expires > Date.now());
15
- const getBucketForRoute = route => Effect.sync(() => Option.fromNullishOr(buckets.get(routes.get(route))));
16
- return {
17
- hasBucket: key => Effect.sync(() => buckets.has(key)),
18
- putBucket: bucket => Effect.sync(() => {
19
- buckets.set(bucket.key, bucket);
20
- }),
21
- getBucketForRoute,
22
- putBucketRoute: (route, bucket) => Effect.sync(() => {
23
- routes.set(route, bucket);
24
- }),
25
- removeCounter: key => Effect.sync(() => {
26
- counters.delete(key);
27
- }),
28
- incrementCounter: (key, window, limit) => Effect.sync(() => {
29
- const now = Date.now();
30
- const perRequest = Math.ceil(window / limit);
31
- const counter = Option.getOrElse(getCounter(key), () => ({
32
- expires: now,
33
- count: 0
34
- }));
35
- const count = counter.count + 1;
36
- const expires = counter.expires + perRequest;
37
- counters.set(key, {
38
- ...counter,
39
- count,
40
- expires
41
- });
42
- return [count, expires - now];
43
- })
44
- };
45
- };
46
- exports.make = make;
47
- //# sourceMappingURL=memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","names":["Option","_interopRequireWildcard","require","Effect","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","buckets","Map","routes","counters","getCounter","key","filter","fromNullishOr","c","expires","Date","now","getBucketForRoute","route","sync","hasBucket","putBucket","bucket","putBucketRoute","removeCounter","delete","incrementCounter","window","limit","perRequest","Math","ceil","counter","getOrElse","count","exports"],"sources":["../src/RateLimit/memory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import type { Duration } from "effect/Duration";
2
- export declare const delayFrom: (window: number, limit: number, count: number, ttl: number) => Duration;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/RateLimit/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG/C,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,OAAO,MAAM,EACb,KAAK,MAAM,KACV,QAmBF,CAAA"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.delayFrom = void 0;
7
- var _Duration = /*#__PURE__*/require("effect/Duration");
8
- const delayFrom = (window, limit, count, ttl) => {
9
- const perRequest = Math.ceil(window / limit);
10
- const totalTime = count * perRequest;
11
- const elapsedTime = totalTime - ttl;
12
- const elapsedWindows = Math.floor(elapsedTime / window);
13
- const completedRequests = elapsedWindows * limit;
14
- const remainingRequests = count - completedRequests;
15
- const remainingWindows = Math.floor((remainingRequests - 1) / limit);
16
- const delayRemainder = elapsedTime % window;
17
- const requestRemainder = count % limit;
18
- const staggerDelay = requestRemainder * 50;
19
- if (remainingWindows === 0) {
20
- return _Duration.zero;
21
- }
22
- return (0, _Duration.millis)(remainingWindows * window - delayRemainder + staggerDelay);
23
- };
24
- exports.delayFrom = delayFrom;
25
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":["_Duration","require","delayFrom","window","limit","count","ttl","perRequest","Math","ceil","totalTime","elapsedTime","elapsedWindows","floor","completedRequests","remainingRequests","remainingWindows","delayRemainder","requestRemainder","staggerDelay","zero","millis","exports"],"sources":["../src/RateLimit/utils.ts"],"sourcesContent":[null],"mappings":";;;;;;AACA,IAAAA,SAAA,gBAAAC,OAAA;AAEO,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,OAAOI,cAAI;EACb;EAEA,OAAO,IAAAC,gBAAM,EAACL,gBAAgB,GAAGb,MAAM,GAAGc,cAAc,GAAGE,YAAY,CAAC;AAC1E,CAAC;AAAAG,OAAA,CAAApB,SAAA,GAAAA,SAAA","ignoreList":[]}
package/RateLimit.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import * as Duration from "effect/Duration";
2
- import type * as Option from "effect/Option";
3
- import * as Effect from "effect/Effect";
4
- import * as Layer from "effect/Layer";
5
- import * as ServiceMap from "effect/ServiceMap";
6
- export type BucketDetails = {
7
- key: "global" | string;
8
- resetAfter: number;
9
- limit: number;
10
- };
11
- export interface RateLimitStoreService {
12
- readonly hasBucket: (bucketKey: string) => Effect.Effect<boolean>;
13
- readonly putBucket: (bucket: BucketDetails) => Effect.Effect<void>;
14
- readonly getBucketForRoute: (route: string) => Effect.Effect<Option.Option<BucketDetails>>;
15
- readonly putBucketRoute: (route: string, bucketKey: string) => Effect.Effect<void>;
16
- readonly incrementCounter: (key: string, window: number, limit: number) => Effect.Effect<readonly [count: number, ttl: number]>;
17
- readonly removeCounter: (key: string) => Effect.Effect<void>;
18
- }
19
- declare const RateLimitStore_base: ServiceMap.ServiceClass<RateLimitStore, "dfx/RateLimit/RateLimitStore", RateLimitStoreService>;
20
- export declare class RateLimitStore extends RateLimitStore_base {
21
- }
22
- export declare const MemoryRateLimitStoreLive: Layer.Layer<RateLimitStore, never, never>;
23
- declare const RateLimiter_base: ServiceMap.ServiceClass<RateLimiter, "dfx/RateLimit/RateLimiter", {
24
- maybeWait: (key: string, window: Duration.Duration, limit: number, multiplier?: number) => Effect.Effect<void, never, never>;
25
- }>;
26
- export declare class RateLimiter extends RateLimiter_base {
27
- }
28
- export declare const RateLimiterLive: Layer.Layer<RateLimiter, never, RateLimitStore>;
29
- export {};
30
- //# sourceMappingURL=RateLimit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RateLimit.d.ts","sourceRoot":"","sources":["./src/RateLimit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEjE,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAElE,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,KAAK,EAAE,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAEhD,QAAQ,CAAC,cAAc,EAAE,CACvB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAExB,QAAQ,CAAC,gBAAgB,EAAE,CACzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzD,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC7D;;AAED,qBAAa,cAAe,SAAQ,mBAGD;CAAG;AAEtC,eAAO,MAAM,wBAAwB,2CAA0C,CAAA;;eAsChE,CACT,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,QAAQ,CAAC,QAAQ,EACzB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;;AAR1C,qBAAa,WAAY,SAAQ,gBAUD;CAAG;AAEnC,eAAO,MAAM,eAAe,iDAAyC,CAAA"}
package/RateLimit.js DELETED
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.RateLimiterLive = exports.RateLimiter = exports.RateLimitStore = exports.MemoryRateLimitStoreLive = void 0;
7
- var Duration = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Duration"));
8
- var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
9
- var Layer = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Layer"));
10
- var Memory = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./RateLimit/memory.js"));
11
- var _utils = /*#__PURE__*/require("./RateLimit/utils.js");
12
- var ServiceMap = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ServiceMap"));
13
- 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); }
14
- class RateLimitStore extends /*#__PURE__*/ServiceMap.Service()("dfx/RateLimit/RateLimitStore") {}
15
- exports.RateLimitStore = RateLimitStore;
16
- const MemoryRateLimitStoreLive = exports.MemoryRateLimitStoreLive = /*#__PURE__*/Layer.sync(RateLimitStore, Memory.make);
17
- const makeLimiter = /*#__PURE__*/Effect.gen(function* () {
18
- const store = yield* RateLimitStore;
19
- const maybeWait = (key, window, limit, multiplier = 1.05) => {
20
- const windowMs = Duration.toMillis(window) * multiplier;
21
- return store.incrementCounter(key, windowMs, limit).pipe(Effect.map(([count, ttl]) => (0, _utils.delayFrom)(windowMs, limit, count, ttl)), Effect.tap(d => Effect.annotateLogs(Effect.logTrace("maybeWait"), {
22
- service: "RateLimit",
23
- key,
24
- window: Duration.toMillis(window),
25
- windowMs,
26
- limit,
27
- delay: Duration.toMillis(d)
28
- })), Effect.tap(_ => Duration.toMillis(_) === 0 ? Effect.void : Effect.sleep(_)), Effect.asVoid);
29
- };
30
- return {
31
- maybeWait
32
- };
33
- });
34
- class RateLimiter extends /*#__PURE__*/ServiceMap.Service()("dfx/RateLimit/RateLimiter") {}
35
- exports.RateLimiter = RateLimiter;
36
- const RateLimiterLive = exports.RateLimiterLive = /*#__PURE__*/Layer.effect(RateLimiter, makeLimiter);
37
- //# sourceMappingURL=RateLimit.js.map
package/RateLimit.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"RateLimit.js","names":["Duration","_interopRequireWildcard","require","Effect","Layer","Memory","_utils","ServiceMap","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RateLimitStore","Service","exports","MemoryRateLimitStoreLive","sync","make","makeLimiter","gen","store","maybeWait","key","window","limit","multiplier","windowMs","toMillis","incrementCounter","pipe","map","count","ttl","delayFrom","tap","d","annotateLogs","logTrace","service","delay","_","void","sleep","asVoid","RateLimiter","RateLimiterLive","effect"],"sources":["./src/RateLimit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/gateway.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import * as CachePrelude from "./Cache/prelude.ts";
2
- import type { DiscordGateway } from "./DiscordGateway.ts";
3
- import * as DiscordWS from "./DiscordGateway/DiscordWS.ts";
4
- import * as Shard from "./DiscordGateway/Shard.ts";
5
- import * as SendEvent from "./DiscordGateway/Shard/sendEvents.ts";
6
- import * as ShardStore from "./DiscordGateway/ShardStore.ts";
7
- import type { DiscordREST } from "./DiscordREST.ts";
8
- import type { InteractionsRegistry } from "./Interactions/gateway.ts";
9
- import type { RateLimiter } from "./RateLimit.ts";
10
- import * as Layer from "effect/Layer";
11
- import type * as HttpClient from "effect/unstable/http/HttpClient";
12
- import type { DiscordConfig } from "./DiscordConfig.ts";
13
- import type { WebSocketConstructor } from "effect/unstable/socket/Socket";
14
- export { DiscordGateway, DiscordGatewayLive } from "./DiscordGateway.ts";
15
- export { InteractionsRegistry, InteractionsRegistryLive, interactionsSync, run as runIx, setInteractionsSync, } from "./Interactions/gateway.ts";
16
- export { CachePrelude, DiscordWS, SendEvent, Shard, ShardStore };
17
- export declare const DiscordLive: Layer.Layer<RateLimiter | DiscordGateway | DiscordREST, never, DiscordConfig | WebSocketConstructor | HttpClient.HttpClient>;
18
- export declare const DiscordIxLive: Layer.Layer<RateLimiter | DiscordGateway | DiscordREST | InteractionsRegistry, never, DiscordConfig | WebSocketConstructor | HttpClient.HttpClient>;
19
- //# sourceMappingURL=gateway.d.ts.map
package/gateway.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["./src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAElD,OAAO,KAAK,SAAS,MAAM,sCAAsC,CAAA;AACjE,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEzE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,GAAG,IAAI,KAAK,EACZ,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AAEhE,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CACnC,WAAW,GAAG,cAAc,GAAG,WAAW,EAC1C,KAAK,EACL,aAAa,GAAG,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAO7D,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CACrC,WAAW,GAAG,cAAc,GAAG,WAAW,GAAG,oBAAoB,EACjE,KAAK,EACL,aAAa,GAAG,oBAAoB,GAAG,UAAU,CAAC,UAAU,CACI,CAAA"}
package/gateway.js DELETED
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CachePrelude = void 0;
7
- Object.defineProperty(exports, "DiscordGateway", {
8
- enumerable: true,
9
- get: function () {
10
- return _DiscordGateway.DiscordGateway;
11
- }
12
- });
13
- Object.defineProperty(exports, "DiscordGatewayLive", {
14
- enumerable: true,
15
- get: function () {
16
- return _DiscordGateway.DiscordGatewayLive;
17
- }
18
- });
19
- exports.DiscordWS = exports.DiscordLive = exports.DiscordIxLive = void 0;
20
- Object.defineProperty(exports, "InteractionsRegistry", {
21
- enumerable: true,
22
- get: function () {
23
- return _gateway.InteractionsRegistry;
24
- }
25
- });
26
- Object.defineProperty(exports, "InteractionsRegistryLive", {
27
- enumerable: true,
28
- get: function () {
29
- return _gateway.InteractionsRegistryLive;
30
- }
31
- });
32
- exports.ShardStore = exports.Shard = exports.SendEvent = void 0;
33
- Object.defineProperty(exports, "interactionsSync", {
34
- enumerable: true,
35
- get: function () {
36
- return _gateway.interactionsSync;
37
- }
38
- });
39
- Object.defineProperty(exports, "runIx", {
40
- enumerable: true,
41
- get: function () {
42
- return _gateway.run;
43
- }
44
- });
45
- Object.defineProperty(exports, "setInteractionsSync", {
46
- enumerable: true,
47
- get: function () {
48
- return _gateway.setInteractionsSync;
49
- }
50
- });
51
- var CachePrelude = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Cache/prelude.js"));
52
- exports.CachePrelude = CachePrelude;
53
- var _DiscordGateway = /*#__PURE__*/require("./DiscordGateway.js");
54
- var _DiscordWS = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./DiscordGateway/DiscordWS.js"));
55
- var DiscordWS = _DiscordWS;
56
- exports.DiscordWS = _DiscordWS;
57
- var Shard = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./DiscordGateway/Shard.js"));
58
- exports.Shard = Shard;
59
- var _StateStore = /*#__PURE__*/require("./DiscordGateway/Shard/StateStore.js");
60
- var SendEvent = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./DiscordGateway/Shard/sendEvents.js"));
61
- exports.SendEvent = SendEvent;
62
- var _ShardStore = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./DiscordGateway/ShardStore.js"));
63
- var ShardStore = _ShardStore;
64
- exports.ShardStore = _ShardStore;
65
- var _DiscordREST = /*#__PURE__*/require("./DiscordREST.js");
66
- var _gateway = /*#__PURE__*/require("./Interactions/gateway.js");
67
- var _RateLimit = /*#__PURE__*/require("./RateLimit.js");
68
- var Layer = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Layer"));
69
- 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); }
70
- const DiscordLive = exports.DiscordLive = /*#__PURE__*/Layer.mergeAll(_RateLimit.RateLimiterLive, _DiscordGateway.DiscordGatewayLive).pipe(/*#__PURE__*/Layer.provideMerge(_DiscordREST.DiscordRESTLive), /*#__PURE__*/Layer.provide(_DiscordWS.JsonDiscordWSCodecLive), /*#__PURE__*/Layer.provide(_RateLimit.MemoryRateLimitStoreLive), /*#__PURE__*/Layer.provide(_ShardStore.MemoryShardStoreLive), /*#__PURE__*/Layer.provide(_StateStore.ShardStateStore.MemoryLive));
71
- const DiscordIxLive = exports.DiscordIxLive = /*#__PURE__*/_gateway.InteractionsRegistryLive.pipe(/*#__PURE__*/Layer.provideMerge(DiscordLive));
72
- //# sourceMappingURL=gateway.js.map
package/gateway.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"gateway.js","names":["CachePrelude","_interopRequireWildcard","require","exports","_DiscordGateway","_DiscordWS","DiscordWS","Shard","_StateStore","SendEvent","_ShardStore","ShardStore","_DiscordREST","_gateway","_RateLimit","Layer","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DiscordLive","mergeAll","RateLimiterLive","DiscordGatewayLive","pipe","provideMerge","DiscordRESTLive","provide","JsonDiscordWSCodecLive","MemoryRateLimitStoreLive","MemoryShardStoreLive","ShardStateStore","MemoryLive","DiscordIxLive","InteractionsRegistryLive"],"sources":["./src/gateway.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAAkDC,OAAA,CAAAH,YAAA,GAAAA,YAAA;AAElD,IAAAI,eAAA,gBAAAF,OAAA;AACA,IAAAG,UAAA,gBAAAJ,uBAAA,cAAAC,OAAA;AAA0D,IAAAI,SAAA,GAAAD,UAAA;AAAAF,OAAA,CAAAG,SAAA,GAAAD,UAAA;AAE1D,IAAAE,KAAA,gBAAAN,uBAAA,cAAAC,OAAA;AAAkDC,OAAA,CAAAI,KAAA,GAAAA,KAAA;AAClD,IAAAC,WAAA,gBAAAN,OAAA;AACA,IAAAO,SAAA,gBAAAR,uBAAA,cAAAC,OAAA;AAAiEC,OAAA,CAAAM,SAAA,GAAAA,SAAA;AACjE,IAAAC,WAAA,gBAAAT,uBAAA,cAAAC,OAAA;AAA4D,IAAAS,UAAA,GAAAD,WAAA;AAAAP,OAAA,CAAAQ,UAAA,GAAAD,WAAA;AAG5D,IAAAE,YAAA,gBAAAV,OAAA;AAEA,IAAAW,QAAA,gBAAAX,OAAA;AAEA,IAAAY,UAAA,gBAAAZ,OAAA;AACA,IAAAa,KAAA,gBAAAd,uBAAA,cAAAC,OAAA;AAAqC,SAAAD,wBAAAe,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAjB,uBAAA,YAAAA,CAAAe,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;AAiB9B,MAAMkB,WAAW,GAAAhC,OAAA,CAAAgC,WAAA,gBAIpBpB,KAAK,CAACqB,QAAQ,CAACC,0BAAe,EAAEC,kCAAkB,CAAC,CAACC,IAAI,cAC1DxB,KAAK,CAACyB,YAAY,CAACC,4BAAe,CAAC,eACnC1B,KAAK,CAAC2B,OAAO,CAACC,iCAAsB,CAAC,eACrC5B,KAAK,CAAC2B,OAAO,CAACE,mCAAwB,CAAC,eACvC7B,KAAK,CAAC2B,OAAO,CAACG,gCAAoB,CAAC,eACnC9B,KAAK,CAAC2B,OAAO,CAACI,2BAAe,CAACC,UAAU,CAAC,CAC1C;AAEM,MAAMC,aAAa,GAAA7C,OAAA,CAAA6C,aAAA,gBAItBC,iCAAwB,CAACV,IAAI,cAACxB,KAAK,CAACyB,YAAY,CAACL,WAAW,CAAC,CAAC","ignoreList":[]}
package/index.d.ts DELETED
@@ -1,18 +0,0 @@
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 * as Flags from "./Helpers/flags.ts";
6
- import * as Intents from "./Helpers/intents.ts";
7
- import * as IxHelpers from "./Helpers/interactions.ts";
8
- import * as Members from "./Helpers/members.ts";
9
- import * as Perms from "./Helpers/permissions.ts";
10
- import * as UI from "./Helpers/ui.ts";
11
- import * as Ix from "./Interactions/index.ts";
12
- import * as Discord from "./types.ts";
13
- import * as Layer from "effect/Layer";
14
- export { DiscordREST, DiscordRESTLive } from "./DiscordREST.ts";
15
- export { type BucketDetails, MemoryRateLimitStoreLive, RateLimitStore, RateLimiter, RateLimiterLive, } from "./RateLimit.ts";
16
- export { Cache, Discord, DiscordConfig, Flags, Intents, Ix, IxHelpers, Members, Perms, UI, };
17
- export declare const DiscordRESTMemoryLive: Layer.Layer<DiscordREST, never, DiscordConfig.DiscordConfig | HttpClient>;
18
- //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["./src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAE7C,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE/D,OAAO,EACL,KAAK,aAAa,EAClB,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,eAAe,GAChB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,KAAK,EACL,OAAO,EACP,aAAa,EACb,KAAK,EACL,OAAO,EACP,EAAE,EACF,SAAS,EACT,OAAO,EACP,KAAK,EACL,EAAE,GACH,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAC7C,WAAW,EACX,KAAK,EACL,aAAa,CAAC,aAAa,GAAG,UAAU,CACuB,CAAA"}