dfx 0.51.0 → 0.51.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cache/driver.d.ts +17 -16
- package/Cache/driver.d.ts.map +1 -1
- package/Cache/driver.js +10 -2
- package/Cache/driver.js.map +1 -1
- package/Cache/memory.d.ts +3 -3
- package/Cache/memory.d.ts.map +1 -1
- package/Cache/memory.js +55 -45
- package/Cache/memory.js.map +1 -1
- package/Cache/memoryTTL.d.ts +7 -6
- package/Cache/memoryTTL.d.ts.map +1 -1
- package/Cache/memoryTTL.js +126 -118
- package/Cache/memoryTTL.js.map +1 -1
- package/Cache/prelude.d.ts +53 -47
- package/Cache/prelude.d.ts.map +1 -1
- package/Cache/prelude.js +125 -96
- package/Cache/prelude.js.map +1 -1
- package/Cache.d.ts +33 -32
- package/Cache.d.ts.map +1 -1
- package/Cache.js +137 -65
- package/Cache.js.map +1 -1
- package/DiscordConfig.d.ts +26 -20
- package/DiscordConfig.d.ts.map +1 -1
- package/DiscordConfig.js +43 -25
- package/DiscordConfig.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts +17 -14
- package/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/DiscordGateway/DiscordWS.js +49 -30
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts +7 -3
- package/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
- package/DiscordGateway/Shard/heartbeats.js +28 -18
- package/DiscordGateway/Shard/heartbeats.js.map +1 -1
- package/DiscordGateway/Shard/identify.d.ts +10 -8
- package/DiscordGateway/Shard/identify.d.ts.map +1 -1
- package/DiscordGateway/Shard/identify.js +41 -24
- package/DiscordGateway/Shard/identify.js.map +1 -1
- package/DiscordGateway/Shard/invalidSession.d.ts +6 -3
- package/DiscordGateway/Shard/invalidSession.d.ts.map +1 -1
- package/DiscordGateway/Shard/invalidSession.js +14 -5
- package/DiscordGateway/Shard/invalidSession.js.map +1 -1
- package/DiscordGateway/Shard/sendEvents.d.ts +1 -1
- package/DiscordGateway/Shard/sendEvents.d.ts.map +1 -1
- package/DiscordGateway/Shard/sendEvents.js +30 -18
- package/DiscordGateway/Shard/sendEvents.js.map +1 -1
- package/DiscordGateway/Shard/utils.d.ts +7 -3
- package/DiscordGateway/Shard/utils.d.ts.map +1 -1
- package/DiscordGateway/Shard/utils.js +19 -9
- package/DiscordGateway/Shard/utils.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +15 -10
- package/DiscordGateway/Shard.d.ts.map +1 -1
- package/DiscordGateway/Shard.js +109 -87
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/ShardStore.d.ts +9 -6
- package/DiscordGateway/ShardStore.d.ts.map +1 -1
- package/DiscordGateway/ShardStore.js +30 -18
- package/DiscordGateway/ShardStore.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts +17 -11
- package/DiscordGateway/Sharder.d.ts.map +1 -1
- package/DiscordGateway/Sharder.js +82 -52
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway/WS.d.ts +13 -10
- package/DiscordGateway/WS.d.ts.map +1 -1
- package/DiscordGateway/WS.js +100 -74
- package/DiscordGateway/WS.js.map +1 -1
- package/DiscordGateway.d.ts +19 -13
- package/DiscordGateway.d.ts.map +1 -1
- package/DiscordGateway.js +45 -32
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST/types.d.ts +5 -5
- package/DiscordREST/types.d.ts.map +1 -1
- package/DiscordREST/types.js +5 -1
- package/DiscordREST/types.js.map +1 -1
- package/DiscordREST/utils.d.ts +3 -2
- package/DiscordREST/utils.d.ts.map +1 -1
- package/DiscordREST/utils.js +27 -17
- package/DiscordREST/utils.js.map +1 -1
- package/DiscordREST.d.ts +11 -8
- package/DiscordREST.d.ts.map +1 -1
- package/DiscordREST.js +141 -127
- package/DiscordREST.js.map +1 -1
- package/Helpers/flags.js +31 -19
- package/Helpers/flags.js.map +1 -1
- package/Helpers/intents.d.ts.map +1 -1
- package/Helpers/intents.js +22 -10
- package/Helpers/intents.js.map +1 -1
- package/Helpers/interactions.d.ts +22 -21
- package/Helpers/interactions.d.ts.map +1 -1
- package/Helpers/interactions.js +75 -39
- package/Helpers/interactions.js.map +1 -1
- package/Helpers/members.d.ts +3 -3
- package/Helpers/members.d.ts.map +1 -1
- package/Helpers/members.js +10 -3
- package/Helpers/members.js.map +1 -1
- package/Helpers/permissions.d.ts +5 -4
- package/Helpers/permissions.d.ts.map +1 -1
- package/Helpers/permissions.js +69 -52
- package/Helpers/permissions.js.map +1 -1
- package/Helpers/ui.d.ts +1 -1
- package/Helpers/ui.d.ts.map +1 -1
- package/Helpers/ui.js +44 -29
- package/Helpers/ui.js.map +1 -1
- package/Interactions/builder.d.ts +20 -19
- package/Interactions/builder.d.ts.map +1 -1
- package/Interactions/builder.js +66 -63
- package/Interactions/builder.js.map +1 -1
- package/Interactions/context.d.ts +26 -23
- package/Interactions/context.d.ts.map +1 -1
- package/Interactions/context.js +86 -57
- package/Interactions/context.js.map +1 -1
- package/Interactions/definitions.d.ts +33 -30
- package/Interactions/definitions.d.ts.map +1 -1
- package/Interactions/definitions.js +61 -47
- package/Interactions/definitions.js.map +1 -1
- package/Interactions/gateway.d.ts +15 -10
- package/Interactions/gateway.d.ts.map +1 -1
- package/Interactions/gateway.js +55 -42
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.d.ts +6 -4
- package/Interactions/handlers.d.ts.map +1 -1
- package/Interactions/handlers.js +68 -57
- package/Interactions/handlers.js.map +1 -1
- package/Interactions/index.d.ts +11 -10
- package/Interactions/index.d.ts.map +1 -1
- package/Interactions/index.js +95 -10
- package/Interactions/index.js.map +1 -1
- package/Interactions/utils.d.ts +42 -40
- package/Interactions/utils.d.ts.map +1 -1
- package/Interactions/utils.js +40 -32
- package/Interactions/utils.js.map +1 -1
- package/Interactions/webhook.d.ts +20 -16
- package/Interactions/webhook.d.ts.map +1 -1
- package/Interactions/webhook.js +73 -41
- package/Interactions/webhook.js.map +1 -1
- package/Log.d.ts +8 -5
- package/Log.d.ts.map +1 -1
- package/Log.js +23 -14
- package/Log.js.map +1 -1
- package/RateLimit/memory.d.ts +1 -1
- package/RateLimit/memory.d.ts.map +1 -1
- package/RateLimit/memory.js +46 -33
- package/RateLimit/memory.js.map +1 -1
- package/RateLimit/utils.d.ts +1 -1
- package/RateLimit/utils.d.ts.map +1 -1
- package/RateLimit/utils.js +23 -16
- package/RateLimit/utils.js.map +1 -1
- package/RateLimit.d.ts +18 -14
- package/RateLimit.d.ts.map +1 -1
- package/RateLimit.js +40 -26
- package/RateLimit.js.map +1 -1
- package/gateway.d.ts +20 -13
- package/gateway.d.ts.map +1 -1
- package/gateway.js +72 -25
- package/gateway.js.map +1 -1
- package/index.d.ts +14 -13
- package/index.d.ts.map +1 -1
- package/index.js +71 -13
- package/index.js.map +1 -1
- package/mjs/Cache/driver.mjs +3 -0
- package/mjs/Cache/driver.mjs.map +1 -0
- package/mjs/Cache/memory.mjs +48 -0
- package/mjs/Cache/memory.mjs.map +1 -0
- package/mjs/Cache/memoryTTL.mjs +119 -0
- package/mjs/Cache/memoryTTL.mjs.map +1 -0
- package/mjs/Cache/prelude.mjs +125 -0
- package/mjs/Cache/prelude.mjs.map +1 -0
- package/mjs/Cache.mjs +87 -0
- package/mjs/Cache.mjs.map +1 -0
- package/mjs/DiscordConfig.mjs +34 -0
- package/mjs/DiscordConfig.mjs.map +1 -0
- package/mjs/DiscordGateway/DiscordWS.mjs +39 -0
- package/mjs/DiscordGateway/DiscordWS.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard/heartbeats.mjs +21 -0
- package/mjs/DiscordGateway/Shard/heartbeats.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard/identify.mjs +37 -0
- package/mjs/DiscordGateway/Shard/identify.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard/invalidSession.mjs +6 -0
- package/mjs/DiscordGateway/Shard/invalidSession.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard/sendEvents.mjs +25 -0
- package/mjs/DiscordGateway/Shard/sendEvents.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard/utils.mjs +11 -0
- package/mjs/DiscordGateway/Shard/utils.mjs.map +1 -0
- package/mjs/DiscordGateway/Shard.mjs +99 -0
- package/mjs/DiscordGateway/Shard.mjs.map +1 -0
- package/mjs/DiscordGateway/ShardStore.mjs +24 -0
- package/mjs/DiscordGateway/ShardStore.mjs.map +1 -0
- package/mjs/DiscordGateway/Sharder.mjs +73 -0
- package/mjs/DiscordGateway/Sharder.mjs.map +1 -0
- package/mjs/DiscordGateway/WS.mjs +94 -0
- package/mjs/DiscordGateway/WS.mjs.map +1 -0
- package/mjs/DiscordGateway.mjs +36 -0
- package/mjs/DiscordGateway.mjs.map +1 -0
- package/mjs/DiscordREST/types.mjs +2 -0
- package/mjs/DiscordREST/types.mjs.map +1 -0
- package/mjs/DiscordREST/utils.mjs +19 -0
- package/mjs/DiscordREST/utils.mjs.map +1 -0
- package/mjs/DiscordREST.mjs +129 -0
- package/mjs/DiscordREST.mjs.map +1 -0
- package/mjs/Helpers/flags.mjs +36 -0
- package/mjs/Helpers/flags.mjs.map +1 -0
- package/mjs/Helpers/intents.mjs +27 -0
- package/mjs/Helpers/intents.mjs.map +1 -0
- package/mjs/Helpers/interactions.mjs +104 -0
- package/mjs/Helpers/interactions.mjs.map +1 -0
- package/mjs/Helpers/members.mjs +9 -0
- package/mjs/Helpers/members.mjs.map +1 -0
- package/mjs/Helpers/permissions.mjs +82 -0
- package/mjs/Helpers/permissions.mjs.map +1 -0
- package/mjs/Helpers/ui.mjs +66 -0
- package/mjs/Helpers/ui.mjs.map +1 -0
- package/mjs/Interactions/builder.mjs +62 -0
- package/mjs/Interactions/builder.mjs.map +1 -0
- package/mjs/Interactions/context.mjs +63 -0
- package/mjs/Interactions/context.mjs.map +1 -0
- package/mjs/Interactions/definitions.mjs +51 -0
- package/mjs/Interactions/definitions.mjs.map +1 -0
- package/mjs/Interactions/gateway.mjs +48 -0
- package/mjs/Interactions/gateway.mjs.map +1 -0
- package/mjs/Interactions/handlers.mjs +61 -0
- package/mjs/Interactions/handlers.mjs.map +1 -0
- package/mjs/Interactions/index.mjs +12 -0
- package/mjs/Interactions/index.mjs.map +1 -0
- package/mjs/Interactions/utils.mjs +35 -0
- package/mjs/Interactions/utils.mjs.map +1 -0
- package/mjs/Interactions/webhook.mjs +73 -0
- package/mjs/Interactions/webhook.mjs.map +1 -0
- package/mjs/Log.mjs +15 -0
- package/mjs/Log.mjs.map +1 -0
- package/mjs/RateLimit/memory.mjs +39 -0
- package/mjs/RateLimit/memory.mjs.map +1 -0
- package/mjs/RateLimit/utils.mjs +18 -0
- package/mjs/RateLimit/utils.mjs.map +1 -0
- package/mjs/RateLimit.mjs +29 -0
- package/mjs/RateLimit.mjs.map +1 -0
- package/mjs/gateway.mjs +27 -0
- package/mjs/gateway.mjs.map +1 -0
- package/mjs/index.mjs +15 -0
- package/mjs/index.mjs.map +1 -0
- package/mjs/types.mjs +1211 -0
- package/mjs/types.mjs.map +1 -0
- package/mjs/utils/Effect.mjs +28 -0
- package/mjs/utils/Effect.mjs.map +1 -0
- package/mjs/utils/tsplus.mjs +2 -0
- package/mjs/utils/tsplus.mjs.map +1 -0
- package/mjs/version.mjs +2 -0
- package/mjs/version.mjs.map +1 -0
- package/mjs/webhooks.mjs +30 -0
- package/mjs/webhooks.mjs.map +1 -0
- package/package.json +46 -50
- package/src/Cache/driver.ts +27 -15
- package/src/Cache/memory.ts +9 -5
- package/src/Cache/memoryTTL.ts +69 -53
- package/src/Cache/prelude.ts +113 -91
- package/src/Cache.ts +73 -58
- package/src/DiscordConfig.ts +33 -19
- package/src/DiscordGateway/DiscordWS.ts +28 -25
- package/src/DiscordGateway/Shard/heartbeats.ts +47 -27
- package/src/DiscordGateway/Shard/identify.ts +29 -25
- package/src/DiscordGateway/Shard/invalidSession.ts +9 -7
- package/src/DiscordGateway/Shard/sendEvents.ts +1 -1
- package/src/DiscordGateway/Shard/utils.ts +33 -9
- package/src/DiscordGateway/Shard.ts +119 -99
- package/src/DiscordGateway/ShardStore.ts +12 -5
- package/src/DiscordGateway/Sharder.ts +95 -74
- package/src/DiscordGateway/WS.ts +85 -60
- package/src/DiscordGateway.ts +58 -18
- package/src/DiscordREST/types.ts +5 -5
- package/src/DiscordREST/utils.ts +10 -7
- package/src/DiscordREST.ts +152 -132
- package/src/Helpers/intents.ts +1 -0
- package/src/Helpers/interactions.ts +51 -38
- package/src/Helpers/members.ts +2 -0
- package/src/Helpers/permissions.ts +6 -5
- package/src/Helpers/ui.ts +1 -1
- package/src/Interactions/builder.ts +56 -43
- package/src/Interactions/context.ts +68 -38
- package/src/Interactions/definitions.ts +32 -24
- package/src/Interactions/gateway.ts +72 -47
- package/src/Interactions/handlers.ts +56 -39
- package/src/Interactions/index.ts +6 -5
- package/src/Interactions/utils.ts +32 -21
- package/src/Interactions/webhook.ts +78 -42
- package/src/Log.ts +4 -0
- package/src/RateLimit/memory.ts +10 -4
- package/src/RateLimit/utils.ts +1 -1
- package/src/RateLimit.ts +38 -25
- package/src/gateway.ts +62 -25
- package/src/index.ts +29 -15
- package/src/utils/Effect.ts +69 -0
- package/src/version.ts +1 -0
- package/src/webhooks.ts +47 -20
- package/tsconfig.base.json +48 -0
- package/tsconfig.build.json +10 -0
- package/tsconfig.examples.json +11 -0
- package/tsconfig.json +12 -8
- package/tsconfig.madge.json +12 -0
- package/tsconfig.test.json +10 -0
- package/types.d.ts.map +1 -1
- package/types.js +1216 -1200
- package/types.js.map +1 -1
- package/utils/Effect.d.ts +8 -0
- package/utils/Effect.d.ts.map +1 -0
- package/utils/Effect.js +38 -0
- package/utils/Effect.js.map +1 -0
- package/utils/tsplus.js +5 -1
- package/utils/tsplus.js.map +1 -1
- package/version.d.ts +2 -0
- package/version.d.ts.map +1 -0
- package/version.js +9 -0
- package/version.js.map +1 -0
- package/webhooks.d.ts +14 -9
- package/webhooks.d.ts.map +1 -1
- package/webhooks.js +76 -27
- package/webhooks.js.map +1 -1
- package/_common.d.ts +0 -37
- package/_common.d.ts.map +0 -1
- package/_common.js +0 -8
- package/_common.js.map +0 -1
- package/global.d.ts +0 -18
- package/global.d.ts.map +0 -1
- package/global.js +0 -2
- package/global.js.map +0 -1
- package/src/_common.ts +0 -43
- package/src/global.ts +0 -45
- package/src/package.json +0 -52
- package/src/utils/effect.ts +0 -0
- package/src/utils/hub.ts +0 -47
- package/tsplus.config.json +0 -8
- package/utils/effect.d.ts +0 -2
- package/utils/effect.d.ts.map +0 -1
- package/utils/effect.js +0 -2
- package/utils/effect.js.map +0 -1
- package/utils/hub.d.ts +0 -12
- package/utils/hub.d.ts.map +0 -1
- package/utils/hub.js +0 -26
- package/utils/hub.js.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import * as Http from "@effect-http/client";
|
|
2
|
+
import { Tag } from "@effect/data/Context";
|
|
3
|
+
import * as Duration from "@effect/data/Duration";
|
|
4
|
+
import { millis } from "@effect/data/Duration";
|
|
5
|
+
import * as HashSet from "@effect/data/HashSet";
|
|
6
|
+
import * as Option from "@effect/data/Option";
|
|
7
|
+
import * as ConfigSecret from "@effect/io/Config/Secret";
|
|
8
|
+
import * as Effect from "@effect/io/Effect";
|
|
9
|
+
import * as Layer from "@effect/io/Layer";
|
|
10
|
+
import * as Ref from "@effect/io/Ref";
|
|
11
|
+
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
12
|
+
import { rateLimitFromHeaders, retryAfter, routeFromConfig } from "dfx/DiscordREST/utils";
|
|
13
|
+
import { Log } from "dfx/Log";
|
|
14
|
+
import { LiveRateLimiter, RateLimitStore, RateLimiter } from "dfx/RateLimit";
|
|
15
|
+
import * as Discord from "dfx/types";
|
|
16
|
+
import { LIB_VERSION } from "dfx/version";
|
|
17
|
+
export class DiscordRESTError {
|
|
18
|
+
error;
|
|
19
|
+
body;
|
|
20
|
+
_tag = "DiscordRESTError";
|
|
21
|
+
constructor(error, body) {
|
|
22
|
+
this.error = error;
|
|
23
|
+
this.body = body;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export { ResponseDecodeError } from "@effect-http/client";
|
|
27
|
+
const make = /*#__PURE__*/Effect.gen(function* (_) {
|
|
28
|
+
const {
|
|
29
|
+
rest,
|
|
30
|
+
token
|
|
31
|
+
} = yield* _(DiscordConfig);
|
|
32
|
+
const http = yield* _(Http.HttpRequestExecutor);
|
|
33
|
+
const log = yield* _(Log);
|
|
34
|
+
const store = yield* _(RateLimitStore);
|
|
35
|
+
const {
|
|
36
|
+
maybeWait
|
|
37
|
+
} = yield* _(RateLimiter);
|
|
38
|
+
const globalRateLimit = maybeWait("dfx.rest.global", Duration.decode(rest.globalRateLimit.window), rest.globalRateLimit.limit);
|
|
39
|
+
// Invalid route handling (40x)
|
|
40
|
+
const badRoutesRef = yield* _(Ref.make(HashSet.empty()));
|
|
41
|
+
const tenMinutes = Duration.toMillis(Duration.minutes(10));
|
|
42
|
+
const addBadRoute = route => Effect.all(log.info("DiscordREST", "addBadRoute", route), Ref.update(badRoutesRef, HashSet.add(route)), store.incrementCounter("dfx.rest.invalid", tenMinutes, 10000), {
|
|
43
|
+
discard: true,
|
|
44
|
+
concurrency: "unbounded"
|
|
45
|
+
});
|
|
46
|
+
const isBadRoute = route => Effect.map(Ref.get(badRoutesRef), HashSet.has(route));
|
|
47
|
+
const removeBadRoute = route => Ref.update(badRoutesRef, HashSet.remove(route));
|
|
48
|
+
const invalidRateLimit = route => isBadRoute(route).pipe(Effect.tap(invalid => invalid ? maybeWait("dfx.rest.invalid", Duration.minutes(10), 10000) : Effect.unit), Effect.asUnit);
|
|
49
|
+
// Request rate limiting
|
|
50
|
+
const requestRateLimit = (path, request) => Effect.Do.pipe(Effect.let("route", () => routeFromConfig(path, request.method)), Effect.bind("maybeBucket", ({
|
|
51
|
+
route
|
|
52
|
+
}) => store.getBucketForRoute(route)), Effect.flatMap(({
|
|
53
|
+
maybeBucket,
|
|
54
|
+
route
|
|
55
|
+
}) => Option.match(maybeBucket, {
|
|
56
|
+
onNone: () => invalidRateLimit(route),
|
|
57
|
+
onSome: bucket => Effect.zipRight(invalidRateLimit(route), maybeWait(`dfx.rest.${bucket.key}`, millis(bucket.resetAfter), bucket.limit))
|
|
58
|
+
})));
|
|
59
|
+
// Update rate limit buckets
|
|
60
|
+
const updateBuckets = (request, response) => Effect.Do.pipe(Effect.let("route", () => routeFromConfig(request.url, request.method)), Effect.bind("rateLimit", () => rateLimitFromHeaders(response.headers)), Effect.bind("hasBucket", ({
|
|
61
|
+
rateLimit
|
|
62
|
+
}) => store.hasBucket(rateLimit.bucket)), Effect.flatMap(({
|
|
63
|
+
hasBucket,
|
|
64
|
+
rateLimit,
|
|
65
|
+
route
|
|
66
|
+
}) => {
|
|
67
|
+
const effectsToRun = [removeBadRoute(route), store.putBucketRoute(route, rateLimit.bucket)];
|
|
68
|
+
if (!hasBucket || rateLimit.limit - 1 === rateLimit.remaining) {
|
|
69
|
+
effectsToRun.push(store.removeCounter(`dfx.rest.?.${route}`), store.putBucket({
|
|
70
|
+
key: rateLimit.bucket,
|
|
71
|
+
resetAfter: Duration.toMillis(rateLimit.retryAfter),
|
|
72
|
+
limit: !hasBucket && rateLimit.remaining > 0 ? rateLimit.remaining : rateLimit.limit
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
return Effect.all(effectsToRun, {
|
|
76
|
+
concurrency: "unbounded",
|
|
77
|
+
discard: true
|
|
78
|
+
});
|
|
79
|
+
}), Effect.ignore);
|
|
80
|
+
const httpExecutor = Http.executor.catchAll(error => error._tag === "StatusCodeError" ? error.response.json.pipe(Effect.mapError(_ => new DiscordRESTError(_)), Effect.flatMap(body => Effect.fail(new DiscordRESTError(error, body)))) : Effect.fail(new DiscordRESTError(error)))(Http.executor.contramap(req => Http.setHeaders({
|
|
81
|
+
Authorization: `Bot ${ConfigSecret.value(token)}`,
|
|
82
|
+
"User-Agent": `DiscordBot (https://github.com/tim-smart/dfx, ${LIB_VERSION})`
|
|
83
|
+
})(Http.updateUrl(req, _ => `${rest.baseUrl}${_}`)))(Http.executor.filterStatusOk(http.execute)));
|
|
84
|
+
const executor = request => requestRateLimit(request.url, request).pipe(Effect.zipLeft(globalRateLimit), Effect.zipRight(httpExecutor(request)), Effect.tap(response => updateBuckets(request, response)), Effect.catchTag("DiscordRESTError", e => {
|
|
85
|
+
if (e.error._tag !== "StatusCodeError") {
|
|
86
|
+
return Effect.fail(e);
|
|
87
|
+
}
|
|
88
|
+
const response = e.error.response;
|
|
89
|
+
switch (e.error.status) {
|
|
90
|
+
case 403:
|
|
91
|
+
return Effect.zipRight(Effect.all([log.info("DiscordREST", "403", request.url), addBadRoute(routeFromConfig(request.url, request.method)), updateBuckets(request, response)], {
|
|
92
|
+
concurrency: "unbounded",
|
|
93
|
+
discard: true
|
|
94
|
+
}), Effect.fail(e));
|
|
95
|
+
case 429:
|
|
96
|
+
return Effect.zipRight(Effect.all(log.info("DiscordREST", "429", request.url), addBadRoute(routeFromConfig(request.url, request.method)), updateBuckets(request, response), Effect.sleep(Option.getOrElse(retryAfter(response.headers), () => Duration.seconds(5))), {
|
|
97
|
+
concurrency: "unbounded",
|
|
98
|
+
discard: true
|
|
99
|
+
}), executor(request));
|
|
100
|
+
}
|
|
101
|
+
return Effect.fail(e);
|
|
102
|
+
}));
|
|
103
|
+
const routes = Discord.createRoutes(({
|
|
104
|
+
method,
|
|
105
|
+
options = {},
|
|
106
|
+
params,
|
|
107
|
+
url
|
|
108
|
+
}) => {
|
|
109
|
+
const hasBody = method !== "GET" && method !== "DELETE";
|
|
110
|
+
let request = Http.make(method)(url, options);
|
|
111
|
+
if (!hasBody) {
|
|
112
|
+
if (params) {
|
|
113
|
+
request = Http.appendParams(request, params);
|
|
114
|
+
}
|
|
115
|
+
} else if (params && request.body._tag === "Some" && request.body.value._tag === "FormDataBody") {
|
|
116
|
+
request.body.value.value.append("payload_json", JSON.stringify(params));
|
|
117
|
+
} else if (params) {
|
|
118
|
+
request = Http.jsonBody(request, params);
|
|
119
|
+
}
|
|
120
|
+
return executor(request);
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
...routes,
|
|
124
|
+
executor
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
export const DiscordREST = /*#__PURE__*/Tag();
|
|
128
|
+
export const LiveDiscordREST = /*#__PURE__*/Layer.provide(LiveRateLimiter, /*#__PURE__*/Layer.effect(DiscordREST, make));
|
|
129
|
+
//# sourceMappingURL=DiscordREST.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscordREST.mjs","names":["Http","Tag","Duration","millis","HashSet","Option","ConfigSecret","Effect","Layer","Ref","DiscordConfig","rateLimitFromHeaders","retryAfter","routeFromConfig","Log","LiveRateLimiter","RateLimitStore","RateLimiter","Discord","LIB_VERSION","DiscordRESTError","error","body","_tag","constructor","ResponseDecodeError","make","gen","_","rest","token","http","HttpRequestExecutor","log","store","maybeWait","globalRateLimit","decode","window","limit","badRoutesRef","empty","tenMinutes","toMillis","minutes","addBadRoute","route","all","info","update","add","incrementCounter","discard","concurrency","isBadRoute","map","get","has","removeBadRoute","remove","invalidRateLimit","pipe","tap","invalid","unit","asUnit","requestRateLimit","path","request","Do","let","method","bind","getBucketForRoute","flatMap","maybeBucket","match","onNone","onSome","bucket","zipRight","key","resetAfter","updateBuckets","response","url","headers","rateLimit","hasBucket","effectsToRun","putBucketRoute","remaining","push","removeCounter","putBucket","ignore","httpExecutor","executor","catchAll","json","mapError","fail","contramap","req","setHeaders","Authorization","value","updateUrl","baseUrl","filterStatusOk","execute","zipLeft","catchTag","e","status","sleep","getOrElse","seconds","routes","createRoutes","options","params","hasBody","appendParams","append","JSON","stringify","jsonBody","DiscordREST","LiveDiscordREST","provide","effect"],"sources":["../src/DiscordREST.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function all(flags) {
|
|
2
|
+
return Object.values(flags).reduce((acc, flag) => acc | flag);
|
|
3
|
+
}
|
|
4
|
+
export function toList(flags) {
|
|
5
|
+
const entries = Object.entries(flags);
|
|
6
|
+
return val => entries.reduce((acc, [key, flag]) => (val & flag) === flag ? [...acc, key] : acc, []);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Returns a function that converts a list of flags names to a bigint bitfield.
|
|
10
|
+
*/
|
|
11
|
+
export const fromListBigint = flags => list => list.reduce((acc, key) => acc | flags[key], BigInt(0));
|
|
12
|
+
/**
|
|
13
|
+
* Returns a function that converts a list of flags names to a bitfield.
|
|
14
|
+
*/
|
|
15
|
+
export const fromList = flags => list => list.reduce((acc, key) => acc | flags[key], 0);
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a bigint bitfield contains and a flag value.
|
|
18
|
+
*/
|
|
19
|
+
export const hasBigInt = flag => {
|
|
20
|
+
const flagBigInt = BigInt(flag);
|
|
21
|
+
return bits => {
|
|
22
|
+
const bitsBigInt = BigInt(bits);
|
|
23
|
+
return (bitsBigInt & flagBigInt) === flagBigInt;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a bitfield contains and a flag value.
|
|
28
|
+
*/
|
|
29
|
+
export const has = flag => {
|
|
30
|
+
const flagNumber = +flag;
|
|
31
|
+
return bits => {
|
|
32
|
+
const bitsNumber = +bits;
|
|
33
|
+
return (bitsNumber & flagNumber) === flagNumber;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=flags.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.mjs","names":["all","flags","Object","values","reduce","acc","flag","toList","entries","val","key","fromListBigint","list","BigInt","fromList","hasBigInt","flagBigInt","bits","bitsBigInt","has","flagNumber","bitsNumber"],"sources":["../../src/Helpers/flags.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAM,SAAUA,GAAGA,CAACC,KAAiB;EACnC,OAAOC,MAAM,CAACC,MAAM,CAACF,KAAK,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,GAAGC,IAAI,CAAC;AAC/D;AAWA,OAAM,SAAUC,MAAMA,CACpBN,KAAQ;EAER,MAAMO,OAAO,GAAGN,MAAM,CAACM,OAAO,CAACP,KAAK,CAAC;EACrC,OAAOQ,GAAG,IACRD,OAAO,CAACJ,MAAM,CACZ,CAACC,GAAG,EAAE,CAACK,GAAG,EAAEJ,IAAI,CAAC,KAAM,CAACG,GAAG,GAAGH,IAAI,MAAMA,IAAI,GAAG,CAAC,GAAGD,GAAG,EAAEK,GAAG,CAAC,GAAGL,GAAI,EACnE,EAAiB,CAClB;AACL;AAEA;;;AAGA,OAAO,MAAMM,cAAc,GACCV,KAAQ,IACjCW,IAAiB,IAChBA,IAAI,CAACR,MAAM,CAAC,CAACC,GAAG,EAAEK,GAAG,KAAKL,GAAG,GAAGJ,KAAK,CAACS,GAAG,CAAC,EAAEG,MAAM,CAAC,CAAC,CAAC,CAAC;AAE1D;;;AAGA,OAAO,MAAMC,QAAQ,GACOb,KAAQ,IACjCW,IAAiB,IAChBA,IAAI,CAACR,MAAM,CAAC,CAACC,GAAG,EAAEK,GAAG,KAAKL,GAAG,GAAGJ,KAAK,CAACS,GAAG,CAAC,EAAE,CAAC,CAAC;AAElD;;;AAGA,OAAO,MAAMK,SAAS,GAAIT,IAAqB,IAAI;EACjD,MAAMU,UAAU,GAAGH,MAAM,CAACP,IAAI,CAAC;EAC/B,OAAQW,IAAqB,IAAI;IAC/B,MAAMC,UAAU,GAAGL,MAAM,CAACI,IAAI,CAAC;IAC/B,OAAO,CAACC,UAAU,GAAGF,UAAU,MAAMA,UAAU;EACjD,CAAC;AACH,CAAC;AAED;;;AAGA,OAAO,MAAMG,GAAG,GAAIb,IAAqB,IAAI;EAC3C,MAAMc,UAAU,GAAG,CAACd,IAAI;EACxB,OAAQW,IAAqB,IAAI;IAC/B,MAAMI,UAAU,GAAG,CAACJ,IAAI;IACxB,OAAO,CAACI,UAAU,GAAGD,UAAU,MAAMA,UAAU;EACjD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as Flags from "dfx/Helpers/flags";
|
|
2
|
+
import * as Discord from "dfx/types";
|
|
3
|
+
/**
|
|
4
|
+
* All the intents
|
|
5
|
+
*/
|
|
6
|
+
export const ALL = /*#__PURE__*/Flags.all(Discord.GatewayIntents);
|
|
7
|
+
/**
|
|
8
|
+
* Privileged intents
|
|
9
|
+
*/
|
|
10
|
+
export const PRIVILEGED = Discord.GatewayIntents.GUILD_PRESENCES | Discord.GatewayIntents.GUILD_MEMBERS | Discord.GatewayIntents.MESSAGE_CONTENT;
|
|
11
|
+
/**
|
|
12
|
+
* Un-privileged intents
|
|
13
|
+
*/
|
|
14
|
+
export const UNPRIVILEGED = ALL ^ PRIVILEGED;
|
|
15
|
+
/**
|
|
16
|
+
* Function that converts a intents bitfield value to a list of intent names.
|
|
17
|
+
*/
|
|
18
|
+
export const toList = /*#__PURE__*/Flags.toList(Discord.GatewayIntents);
|
|
19
|
+
/**
|
|
20
|
+
* Function that converts a list of intent names to a bitfield value.
|
|
21
|
+
*/
|
|
22
|
+
export const fromList = /*#__PURE__*/Flags.fromList(Discord.GatewayIntents);
|
|
23
|
+
/**
|
|
24
|
+
* Check if an intent flag exists in the permissions.
|
|
25
|
+
*/
|
|
26
|
+
export const has = Flags.has;
|
|
27
|
+
//# sourceMappingURL=intents.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intents.mjs","names":["Flags","Discord","ALL","all","GatewayIntents","PRIVILEGED","GUILD_PRESENCES","GUILD_MEMBERS","MESSAGE_CONTENT","UNPRIVILEGED","toList","fromList","has"],"sources":["../../src/Helpers/intents.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,mBAAmB;AAC1C,OAAO,KAAKC,OAAO,MAAM,WAAW;AAEpC;;;AAGA,OAAO,MAAMC,GAAG,gBAAGF,KAAK,CAACG,GAAG,CAACF,OAAO,CAACG,cAAc,CAAC;AAEpD;;;AAGA,OAAO,MAAMC,UAAU,GACrBJ,OAAO,CAACG,cAAc,CAACE,eAAe,GACtCL,OAAO,CAACG,cAAc,CAACG,aAAa,GACpCN,OAAO,CAACG,cAAc,CAACI,eAAe;AAExC;;;AAGA,OAAO,MAAMC,YAAY,GAAGP,GAAG,GAAGG,UAAU;AAE5C;;;AAGA,OAAO,MAAMK,MAAM,gBAAGV,KAAK,CAACU,MAAM,CAACT,OAAO,CAACG,cAAc,CAAC;AAE1D;;;AAGA,OAAO,MAAMO,QAAQ,gBAAGX,KAAK,CAACW,QAAQ,CAACV,OAAO,CAACG,cAAc,CAAC;AAE9D;;;AAGA,OAAO,MAAMQ,GAAG,GAAGZ,KAAK,CAACY,GAAG"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as Option from "@effect/data/Option";
|
|
2
|
+
import * as Arr from "@effect/data/ReadonlyArray";
|
|
3
|
+
import { identity } from "@effect/data/Function";
|
|
4
|
+
import * as HashMap from "@effect/data/HashMap";
|
|
5
|
+
/**
|
|
6
|
+
* Option find a sub-command within the interaction options.
|
|
7
|
+
*/
|
|
8
|
+
export const allSubCommands = interaction => Arr.filter(o => o.type === 1 /* Discord.ApplicationCommandOptionType.SUB_COMMAND */)(optionsWithNested(interaction));
|
|
9
|
+
/**
|
|
10
|
+
* Option find a sub-command within the interaction options.
|
|
11
|
+
*/
|
|
12
|
+
export const findSubCommand = name => interaction => Arr.findFirst(o => o.type === 1 /* Discord.ApplicationCommandOptionType.SUB_COMMAND */ && o.name === name)(optionsWithNested(interaction));
|
|
13
|
+
/**
|
|
14
|
+
* If the sub-command exists return `true`, else `false`.
|
|
15
|
+
*/
|
|
16
|
+
export const isSubCommand = name => _ => Option.isSome(findSubCommand(name)(_));
|
|
17
|
+
/**
|
|
18
|
+
* Option get the options for a sub-command
|
|
19
|
+
*/
|
|
20
|
+
export const subCommandOptions = name => _ => Option.flatMapNullable(findSubCommand(name)(_), o => o.options);
|
|
21
|
+
/**
|
|
22
|
+
* A lens for accessing nested options in a interaction.
|
|
23
|
+
*/
|
|
24
|
+
export const optionsWithNested = data => {
|
|
25
|
+
const optsFromOption = opt => Option.fromNullable(opt.options).pipe(Option.map(opts => [...opts, ...opts.flatMap(optsFromOption)]), Option.match({
|
|
26
|
+
onNone: () => [],
|
|
27
|
+
onSome: identity
|
|
28
|
+
}));
|
|
29
|
+
return Option.fromNullable(data.options).pipe(Option.map(opts => [...opts, ...opts.flatMap(optsFromOption)]), Option.getOrElse(() => []));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Return the interaction options as a name / value map.
|
|
33
|
+
*/
|
|
34
|
+
export const transformOptions = options => options.reduce((map, option) => HashMap.set(map, option.name, option.value), HashMap.empty());
|
|
35
|
+
/**
|
|
36
|
+
* Return the interaction options as a name / value map.
|
|
37
|
+
*/
|
|
38
|
+
export const optionsMap = data => transformOptions(optionsWithNested(data));
|
|
39
|
+
/**
|
|
40
|
+
* Try find a matching option from the interaction.
|
|
41
|
+
*/
|
|
42
|
+
export const getOption = name => data => Arr.findFirst(optionsWithNested(data), o => o.name === name);
|
|
43
|
+
/**
|
|
44
|
+
* Try find a matching option from the interaction.
|
|
45
|
+
*/
|
|
46
|
+
export const focusedOption = data => Arr.findFirst(optionsWithNested(data), o => o.focused === true);
|
|
47
|
+
/**
|
|
48
|
+
* Try find a matching option value from the interaction.
|
|
49
|
+
*/
|
|
50
|
+
export const optionValue = name => data => Option.flatMapNullable(getOption(name)(data), o => o.value);
|
|
51
|
+
/**
|
|
52
|
+
* Try extract resolved data
|
|
53
|
+
*/
|
|
54
|
+
export const resolved = data => Option.flatMapNullable(Option.fromNullable(data.data), a => a.resolved);
|
|
55
|
+
/**
|
|
56
|
+
* Try find a matching option value from the interaction.
|
|
57
|
+
*/
|
|
58
|
+
export const resolveOptionValue = (name, f) => a => Option.Do().pipe(Option.bind("data", () => Option.fromNullable(a.data)), Option.bind("id", ({
|
|
59
|
+
data
|
|
60
|
+
}) => Option.flatMapNullable(getOption(name)(data), ({
|
|
61
|
+
value
|
|
62
|
+
}) => value)), Option.bind("r", () => resolved(a)), Option.flatMapNullable(({
|
|
63
|
+
id,
|
|
64
|
+
r
|
|
65
|
+
}) => f(id, r)));
|
|
66
|
+
/**
|
|
67
|
+
* Try find matching option values from the interaction.
|
|
68
|
+
*/
|
|
69
|
+
export const resolveValues = f => a => Option.Do().pipe(Option.bind("values", () => Option.flatMapNullable(Option.fromNullable(a.data), a => a.values)), Option.bind("r", () => resolved(a)), Option.map(({
|
|
70
|
+
values,
|
|
71
|
+
r
|
|
72
|
+
}) => Arr.compact(values.map(a => Option.fromNullable(f(a, r))))));
|
|
73
|
+
const extractComponents = c => {
|
|
74
|
+
if ("components" in c) {
|
|
75
|
+
return [...c.components, ...c.components.flatMap(extractComponents)];
|
|
76
|
+
}
|
|
77
|
+
return [];
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* A lens for accessing the components in a interaction.
|
|
81
|
+
*/
|
|
82
|
+
export const components = a => [...a.components, ...a.components.flatMap(extractComponents)];
|
|
83
|
+
/**
|
|
84
|
+
* A lens for accessing the components in a interaction.
|
|
85
|
+
*/
|
|
86
|
+
export const componentsWithValue = data => Arr.filter(components(data), c => "value" in c && c.value !== undefined);
|
|
87
|
+
/**
|
|
88
|
+
* Return the interaction components as an id / value map.
|
|
89
|
+
*/
|
|
90
|
+
export const transformComponents = options => options.reduce((map, c) => c.custom_id ? HashMap.set(map, c.custom_id, c.value) : map, HashMap.empty());
|
|
91
|
+
/**
|
|
92
|
+
* Return the interaction components as an id / value map.
|
|
93
|
+
*/
|
|
94
|
+
export const componentsMap = data => transformComponents(components(data));
|
|
95
|
+
/**
|
|
96
|
+
* Try find a matching component from the interaction.
|
|
97
|
+
*/
|
|
98
|
+
export const getComponent = id => data => Arr.findFirst(components(data), o => o.custom_id === id);
|
|
99
|
+
/**
|
|
100
|
+
* Try find a matching component value from the interaction.
|
|
101
|
+
*/
|
|
102
|
+
export const componentValue = id => data => Option.flatMapNullable(getComponent(id)(data), o => o.value);
|
|
103
|
+
export const response = r => r;
|
|
104
|
+
//# sourceMappingURL=interactions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.mjs","names":["Option","Arr","identity","HashMap","allSubCommands","interaction","filter","o","type","optionsWithNested","findSubCommand","name","findFirst","isSubCommand","_","isSome","subCommandOptions","flatMapNullable","options","data","optsFromOption","opt","fromNullable","pipe","map","opts","flatMap","match","onNone","onSome","getOrElse","transformOptions","reduce","option","set","value","empty","optionsMap","getOption","focusedOption","focused","optionValue","resolved","a","resolveOptionValue","f","Do","bind","id","r","resolveValues","values","compact","extractComponents","c","components","componentsWithValue","undefined","transformComponents","custom_id","componentsMap","getComponent","componentValue","response"],"sources":["../../src/Helpers/interactions.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* From a list of roles, filter out the ones the guild member has.
|
|
3
|
+
*/
|
|
4
|
+
export const roles = roles => member => roles.filter(role => member.roles.includes(role.id) || role.name === "@everyone");
|
|
5
|
+
/**
|
|
6
|
+
* Type-guard function for checking if the object is a guild member
|
|
7
|
+
*/
|
|
8
|
+
export const is = thing => Object.prototype.hasOwnProperty.call(thing, "roles") && Object.prototype.hasOwnProperty.call(thing, "joined_at");
|
|
9
|
+
//# sourceMappingURL=members.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"members.mjs","names":["roles","member","filter","role","includes","id","name","is","thing","Object","prototype","hasOwnProperty","call"],"sources":["../../src/Helpers/members.ts"],"sourcesContent":[null],"mappings":"AAEA;;;AAGA,OAAO,MAAMA,KAAK,GAAIA,KAAqB,IAAMC,MAA2B,IAC1ED,KAAK,CAACE,MAAM,CACVC,IAAI,IAAIF,MAAM,CAACD,KAAK,CAACI,QAAQ,CAACD,IAAI,CAACE,EAAE,CAAC,IAAIF,IAAI,CAACG,IAAI,KAAK,WAAW,CACpE;AAEH;;;AAGA,OAAO,MAAMC,EAAE,GAAIC,KAAc,IAC/BC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAK,EAAE,OAAO,CAAC,IACpDC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,KAAK,EAAE,WAAW,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as Effect from "@effect/io/Effect";
|
|
2
|
+
import * as Flags from "dfx/Helpers/flags";
|
|
3
|
+
import * as Members from "dfx/Helpers/members";
|
|
4
|
+
import * as Discord from "dfx/types";
|
|
5
|
+
/**
|
|
6
|
+
* A constant of all the permissions
|
|
7
|
+
*/
|
|
8
|
+
export const ALL = /*#__PURE__*/Flags.all(Discord.PermissionFlag);
|
|
9
|
+
/**
|
|
10
|
+
* Check if a flag exists in the permissions.
|
|
11
|
+
*/
|
|
12
|
+
export const has = Flags.hasBigInt;
|
|
13
|
+
/**
|
|
14
|
+
* Convert a permissions bitfield to a list of flag names.
|
|
15
|
+
*/
|
|
16
|
+
export const toList = /*#__PURE__*/Flags.toList(Discord.PermissionFlag);
|
|
17
|
+
/**
|
|
18
|
+
* Convert a list of flag names to a bitfield.
|
|
19
|
+
*/
|
|
20
|
+
export const fromList = /*#__PURE__*/Flags.fromListBigint(Discord.PermissionFlag);
|
|
21
|
+
/**
|
|
22
|
+
* Reduce a list of roles to a bitfield of all the permissions added together.
|
|
23
|
+
*/
|
|
24
|
+
export const forRoles = roles => roles.reduce((permissions, role) => permissions | BigInt(role.permissions), BigInt(0));
|
|
25
|
+
/**
|
|
26
|
+
* From a list of roles, calculate the permissions bitfield for the member.
|
|
27
|
+
*/
|
|
28
|
+
export const forMember = roles => member => forRoles(Members.roles(roles)(member));
|
|
29
|
+
const overwriteIsForMember = guildId => member => overwrite => {
|
|
30
|
+
if (overwrite.type === 0) {
|
|
31
|
+
return overwrite.id === guildId || member.roles.includes(overwrite.id);
|
|
32
|
+
}
|
|
33
|
+
return overwrite.id === member.user?.id;
|
|
34
|
+
};
|
|
35
|
+
const overwriteIsForRole = guildId => role => overwrite => {
|
|
36
|
+
if (overwrite.type === 0) {
|
|
37
|
+
return overwrite.id === guildId || overwrite.id === role.id;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* From a list of roles and a channel, calculate the permission bitfield for
|
|
43
|
+
* the guild member or role for that channel.
|
|
44
|
+
*/
|
|
45
|
+
export const forChannel = roles => ({
|
|
46
|
+
guild_id,
|
|
47
|
+
permission_overwrites: overwrites = []
|
|
48
|
+
}) => memberOrRole => {
|
|
49
|
+
const hasAdmin = has(Discord.PermissionFlag.ADMINISTRATOR);
|
|
50
|
+
let basePermissions;
|
|
51
|
+
let filteredOverwrites;
|
|
52
|
+
if (Members.is(memberOrRole)) {
|
|
53
|
+
if (memberOrRole.permissions) return BigInt(memberOrRole.permissions);
|
|
54
|
+
const memberRoles = Members.roles(roles)(memberOrRole);
|
|
55
|
+
basePermissions = forRoles(memberRoles);
|
|
56
|
+
filteredOverwrites = overwrites.filter(overwriteIsForMember(guild_id)(memberOrRole));
|
|
57
|
+
} else {
|
|
58
|
+
const everyone = roles.find(role => role.name === "@everyone");
|
|
59
|
+
basePermissions = BigInt(everyone?.permissions || "0") | BigInt(memberOrRole.permissions);
|
|
60
|
+
filteredOverwrites = overwrites.filter(overwriteIsForRole(guild_id)(memberOrRole));
|
|
61
|
+
}
|
|
62
|
+
if (hasAdmin(basePermissions)) {
|
|
63
|
+
return ALL;
|
|
64
|
+
}
|
|
65
|
+
return applyOverwrites(basePermissions)(filteredOverwrites);
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Apply permission overwrites to a bitfield.
|
|
69
|
+
*/
|
|
70
|
+
export const applyOverwrites = permissions => overwrites => overwrites.reduce((permissions, overwrite) => permissions & ~BigInt(overwrite.deny) | BigInt(overwrite.allow), permissions);
|
|
71
|
+
export const hasInChannel = (rolesCache, permission) => (channel, memberOrRole) => Effect.map(rolesCache.getForParent(channel.guild_id), roles => {
|
|
72
|
+
const channelPerms = forChannel([...roles.values()])(channel)(memberOrRole);
|
|
73
|
+
return has(permission)(channelPerms);
|
|
74
|
+
});
|
|
75
|
+
export const hasInGuild = (rolesCache, permission) => (guildId, member) => Effect.map(rolesCache.getForParent(guildId), roles => {
|
|
76
|
+
const hasPerm = has(permission);
|
|
77
|
+
return member.roles.some(id => {
|
|
78
|
+
const role = roles.get(id);
|
|
79
|
+
return role ? hasPerm(role.permissions) : false;
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=permissions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.mjs","names":["Effect","Flags","Members","Discord","ALL","all","PermissionFlag","has","hasBigInt","toList","fromList","fromListBigint","forRoles","roles","reduce","permissions","role","BigInt","forMember","member","overwriteIsForMember","guildId","overwrite","type","id","includes","user","overwriteIsForRole","forChannel","guild_id","permission_overwrites","overwrites","memberOrRole","hasAdmin","ADMINISTRATOR","basePermissions","filteredOverwrites","is","memberRoles","filter","everyone","find","name","applyOverwrites","deny","allow","hasInChannel","rolesCache","permission","channel","map","getForParent","channelPerms","values","hasInGuild","hasPerm","some","get"],"sources":["../../src/Helpers/permissions.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper to create an Action Row grid.
|
|
3
|
+
*/
|
|
4
|
+
export const grid = items => items.map(components => ({
|
|
5
|
+
type: 1 /* ComponentType.ACTION_ROW */,
|
|
6
|
+
components
|
|
7
|
+
}));
|
|
8
|
+
/**
|
|
9
|
+
* Helper to create a single column of components
|
|
10
|
+
*/
|
|
11
|
+
export const singleColumn = items => items.map(c => ({
|
|
12
|
+
type: 1 /* ComponentType.ACTION_ROW */,
|
|
13
|
+
components: [c]
|
|
14
|
+
}));
|
|
15
|
+
/**
|
|
16
|
+
* Helper to create a button component.
|
|
17
|
+
*/
|
|
18
|
+
export const button = button => ({
|
|
19
|
+
type: 2 /* ComponentType.BUTTON */,
|
|
20
|
+
style: 1 /* ButtonStyle.PRIMARY */,
|
|
21
|
+
...button
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Helper to create a select component.
|
|
25
|
+
*/
|
|
26
|
+
export const select = select => ({
|
|
27
|
+
type: 3 /* ComponentType.STRING_SELECT */,
|
|
28
|
+
...select
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Helper to create a select component.
|
|
32
|
+
*/
|
|
33
|
+
export const userSelect = select => ({
|
|
34
|
+
type: 5 /* ComponentType.USER_SELECT */,
|
|
35
|
+
...select
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Helper to create a select component.
|
|
39
|
+
*/
|
|
40
|
+
export const roleSelect = select => ({
|
|
41
|
+
type: 6 /* ComponentType.ROLE_SELECT */,
|
|
42
|
+
...select
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Helper to create a select component.
|
|
46
|
+
*/
|
|
47
|
+
export const mentionableSelect = select => ({
|
|
48
|
+
type: 7 /* ComponentType.MENTIONABLE_SELECT */,
|
|
49
|
+
...select
|
|
50
|
+
});
|
|
51
|
+
/**
|
|
52
|
+
* Helper to create a select component.
|
|
53
|
+
*/
|
|
54
|
+
export const channelSelect = select => ({
|
|
55
|
+
type: 8 /* ComponentType.CHANNEL_SELECT */,
|
|
56
|
+
...select
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Helper to create a text input
|
|
60
|
+
*/
|
|
61
|
+
export const textInput = input => ({
|
|
62
|
+
type: 4 /* ComponentType.TEXT_INPUT */,
|
|
63
|
+
style: 1 /* TextInputStyle.SHORT */,
|
|
64
|
+
...input
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=ui.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.mjs","names":["grid","items","map","components","type","singleColumn","c","button","style","select","userSelect","roleSelect","mentionableSelect","channelSelect","textInput","input"],"sources":["../../src/Helpers/ui.ts"],"sourcesContent":[null],"mappings":"AAcA;;;AAGA,OAAO,MAAMA,IAAI,GAAIC,KAAsB,IACzCA,KAAK,CAACC,GAAG,CACNC,UAAU,KAAiB;EAC1BC,IAAI;EACJD;CACD,CAAC,CACH;AAEH;;;AAGA,OAAO,MAAME,YAAY,GAAIJ,KAAoB,IAC/CA,KAAK,CAACC,GAAG,CAACI,CAAC,KAAK;EACdF,IAAI;EACJD,UAAU,EAAE,CAACG,CAAC;CACf,CAAC,CAAC;AAEL;;;AAGA,OAAO,MAAMC,MAAM,GAAIA,MAAuB,KAAc;EAC1DH,IAAI;EACJI,KAAK;EACL,GAAGD;CACJ,CAAC;AAUF;;;AAGA,OAAO,MAAME,MAAM,GAAIA,MAAoB,KAAkB;EAC3DL,IAAI;EACJ,GAAGK;CACJ,CAAC;AAEF;;;AAGA,OAAO,MAAMC,UAAU,GAAID,MAAmB,KAAkB;EAC9DL,IAAI;EACJ,GAAGK;CACJ,CAAC;AAEF;;;AAGA,OAAO,MAAME,UAAU,GAAIF,MAAmB,KAAkB;EAC9DL,IAAI;EACJ,GAAGK;CACJ,CAAC;AAEF;;;AAGA,OAAO,MAAMG,iBAAiB,GAAIH,MAAmB,KAAkB;EACrEL,IAAI;EACJ,GAAGK;CACJ,CAAC;AAEF;;;AAGA,OAAO,MAAMI,aAAa,GAAIJ,MAAqB,KAAkB;EACnEL,IAAI;EACJ,GAAGK;CACJ,CAAC;AAMF;;;AAGA,OAAO,MAAMK,SAAS,GAAIC,KAAoB,KAAiB;EAC7DX,IAAI;EACJI,KAAK;EACL,GAAGO;CACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as Http from "@effect-http/client";
|
|
2
|
+
import * as Chunk from "@effect/data/Chunk";
|
|
3
|
+
import { identity } from "@effect/data/Function";
|
|
4
|
+
import * as Effect from "@effect/io/Effect";
|
|
5
|
+
import { catchTag } from "@effect/io/Effect";
|
|
6
|
+
import { DiscordREST } from "dfx/DiscordREST";
|
|
7
|
+
/**
|
|
8
|
+
* @tsplus type dfx/InteractionBuilder
|
|
9
|
+
*/
|
|
10
|
+
export class InteractionBuilder {
|
|
11
|
+
definitions;
|
|
12
|
+
transform;
|
|
13
|
+
constructor(definitions, transform) {
|
|
14
|
+
this.definitions = definitions;
|
|
15
|
+
this.transform = transform;
|
|
16
|
+
}
|
|
17
|
+
add(definition) {
|
|
18
|
+
return new InteractionBuilder(Chunk.append(this.definitions, [definition, this.transform]), this.transform);
|
|
19
|
+
}
|
|
20
|
+
concat(builder) {
|
|
21
|
+
return new InteractionBuilder(Chunk.appendAll(this.definitions, builder.definitions), this.transform);
|
|
22
|
+
}
|
|
23
|
+
transformTransform(f) {
|
|
24
|
+
return new InteractionBuilder(Chunk.map(this.definitions, ([d, t]) => [d, _ => f(t(_))]), _ => f(this.transform(_)));
|
|
25
|
+
}
|
|
26
|
+
transformHandlers(f) {
|
|
27
|
+
return new InteractionBuilder(Chunk.map(this.definitions, ([d, t]) => [{
|
|
28
|
+
...d,
|
|
29
|
+
handle: Effect.isEffect(d.handle) ? f(d.handle) : _ => f(d.handle(_))
|
|
30
|
+
}, t]), this.transform);
|
|
31
|
+
}
|
|
32
|
+
catchAllCause(f) {
|
|
33
|
+
return this.transformTransform(Effect.catchAllCause(f));
|
|
34
|
+
}
|
|
35
|
+
catchAllCauseRespond(f) {
|
|
36
|
+
return this.transformHandlers(Effect.catchAllCause(f));
|
|
37
|
+
}
|
|
38
|
+
catchAll(f) {
|
|
39
|
+
return this.transformTransform(Effect.catchAll(f));
|
|
40
|
+
}
|
|
41
|
+
catchAllRespond(f) {
|
|
42
|
+
return this.transformHandlers(Effect.catchAll(f));
|
|
43
|
+
}
|
|
44
|
+
catchTag(tag, f) {
|
|
45
|
+
return this.transformTransform(_ => catchTag(_, tag, f));
|
|
46
|
+
}
|
|
47
|
+
catchTagRespond(tag, f) {
|
|
48
|
+
return this.transformHandlers(_ => catchTag(_, tag, f));
|
|
49
|
+
}
|
|
50
|
+
get syncGlobal() {
|
|
51
|
+
const commands = this.definitions.pipe(Chunk.map(([d, _]) => d), Chunk.filter(c => c._tag === "GlobalApplicationCommand"), Chunk.map(c => c.command));
|
|
52
|
+
return Effect.flatMap(DiscordREST, rest => rest.getCurrentBotApplicationInformation().pipe(Effect.flatMap(r => r.json), Effect.flatMap(app => rest.bulkOverwriteGlobalApplicationCommands(app.id, {
|
|
53
|
+
body: Http.body.json(Chunk.toReadonlyArray(commands))
|
|
54
|
+
}))));
|
|
55
|
+
}
|
|
56
|
+
syncGuild(appId, guildId) {
|
|
57
|
+
const commands = this.definitions.pipe(Chunk.map(([d, _]) => d), Chunk.filter(c => c._tag === "GuildApplicationCommand"), Chunk.map(c => c.command));
|
|
58
|
+
return Effect.flatMap(DiscordREST, rest => rest.bulkOverwriteGuildApplicationCommands(appId, guildId, Chunk.toReadonlyArray(commands)));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export const builder = /*#__PURE__*/new InteractionBuilder( /*#__PURE__*/Chunk.empty(), identity);
|
|
62
|
+
//# sourceMappingURL=builder.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.mjs","names":["Http","Chunk","identity","Effect","catchTag","DiscordREST","InteractionBuilder","definitions","transform","constructor","add","definition","append","concat","builder","appendAll","transformTransform","f","map","d","t","_","transformHandlers","handle","isEffect","catchAllCause","catchAllCauseRespond","catchAll","catchAllRespond","tag","catchTagRespond","syncGlobal","commands","pipe","filter","c","_tag","command","flatMap","rest","getCurrentBotApplicationInformation","r","json","app","bulkOverwriteGlobalApplicationCommands","id","body","toReadonlyArray","syncGuild","appId","guildId","bulkOverwriteGuildApplicationCommands","empty"],"sources":["../../src/Interactions/builder.ts"],"sourcesContent":[null],"mappings":"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"}
|