dfx 0.21.20 → 0.21.22
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/index.js +7 -7
- package/Cache/index.js.map +1 -1
- package/Cache/memory.js +5 -5
- package/Cache/memory.js.map +1 -1
- package/Cache/memoryTTL.js +21 -21
- package/Cache/memoryTTL.js.map +1 -1
- package/Cache/prelude.js +25 -25
- package/Cache/prelude.js.map +1 -1
- package/DiscordConfig/index.d.ts +1 -1
- package/DiscordConfig/index.js +5 -4
- package/DiscordConfig/index.js.map +1 -1
- package/DiscordGateway/DiscordWS/index.js +13 -13
- package/DiscordGateway/DiscordWS/index.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.js +9 -10
- package/DiscordGateway/Shard/heartbeats.js.map +1 -1
- package/DiscordGateway/Shard/identify.js +2 -2
- package/DiscordGateway/Shard/identify.js.map +1 -1
- package/DiscordGateway/Shard/index.js +9 -9
- package/DiscordGateway/Shard/index.js.map +1 -1
- package/DiscordGateway/Shard/invalidSession.js +1 -1
- package/DiscordGateway/Shard/invalidSession.js.map +1 -1
- package/DiscordGateway/Shard/utils.js +2 -2
- package/DiscordGateway/Shard/utils.js.map +1 -1
- package/DiscordGateway/ShardStore/index.js +1 -1
- package/DiscordGateway/ShardStore/index.js.map +1 -1
- package/DiscordGateway/Sharder/index.js +15 -15
- package/DiscordGateway/Sharder/index.js.map +1 -1
- package/DiscordGateway/WS/index.js +13 -13
- package/DiscordGateway/WS/index.js.map +1 -1
- package/DiscordGateway/index.js +9 -10
- package/DiscordGateway/index.js.map +1 -1
- package/DiscordREST/index.js +33 -33
- package/DiscordREST/index.js.map +1 -1
- package/DiscordREST/utils.js +3 -3
- package/DiscordREST/utils.js.map +1 -1
- package/Helpers/flags.js +1 -1
- package/Helpers/flags.js.map +1 -1
- package/Helpers/interactions.js +17 -17
- package/Helpers/interactions.js.map +1 -1
- package/Helpers/members.js +1 -1
- package/Helpers/members.js.map +1 -1
- package/Helpers/permissions.js +6 -6
- package/Helpers/permissions.js.map +1 -1
- package/Helpers/ui.js +1 -1
- package/Helpers/ui.js.map +1 -1
- package/Http/index.js +6 -6
- package/Http/index.js.map +1 -1
- package/Interactions/context.js +8 -8
- package/Interactions/context.js.map +1 -1
- package/Interactions/gateway.js +6 -6
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.js +14 -14
- package/Interactions/handlers.js.map +1 -1
- package/Interactions/index.js +6 -6
- package/Interactions/index.js.map +1 -1
- package/Interactions/webhook.js +10 -10
- package/Interactions/webhook.js.map +1 -1
- package/RateLimit/index.js +5 -5
- package/RateLimit/index.js.map +1 -1
- package/RateLimit/memory.js +4 -4
- package/RateLimit/memory.js.map +1 -1
- package/RateLimit/utils.js +1 -1
- package/RateLimit/utils.js.map +1 -1
- package/_common.d.ts +8 -8
- package/_common.js +1 -1
- package/_common.js.map +1 -1
- package/global.d.ts +1 -1
- package/package.json +11 -10
- package/types.d.ts +3 -1
- package/types.js +9 -9
- package/types.js.map +1 -1
|
@@ -15,7 +15,7 @@ const memoryStore = () => {
|
|
|
15
15
|
currentId++;
|
|
16
16
|
return tsplus_module_2.some(id);
|
|
17
17
|
}),
|
|
18
|
-
allClaimed:
|
|
18
|
+
allClaimed: totalCount => tsplus_module_3.sync(() => currentId >= totalCount),
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
21
|
export const LiveMemoryShardStore = tsplus_module_4.sync(ShardStore, memoryStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/ShardStore/index.ts"],"names":[],"mappings":";;;;AAUA,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAA,GAAG,EAAc,CAAA;AAE3C,wDAAwD;AACxD,MAAM,WAAW,GAAG,GAAe,EAAE;IACnC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC1B,qBAAY,GAAG,EAAE;YACf,IAAI,SAAS,IAAI,UAAU,EAAE;gBAC3B,OAAO,sBAAY,CAAA;aACpB;YAED,MAAM,EAAE,GAAG,SAAS,CAAA;YACpB,SAAS,EAAE,CAAA;YACX,OAAO,qBAAW,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC;QAEJ,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/ShardStore/index.ts"],"names":[],"mappings":";;;;AAUA,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAA,GAAG,EAAc,CAAA;AAE3C,wDAAwD;AACxD,MAAM,WAAW,GAAG,GAAe,EAAE;IACnC,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC1B,qBAAY,GAAG,EAAE;YACf,IAAI,SAAS,IAAI,UAAU,EAAE;gBAC3B,OAAO,sBAAY,CAAA;aACpB;YAED,MAAM,EAAE,GAAG,SAAS,CAAA;YACpB,SAAS,EAAE,CAAA;YACX,OAAO,qBAAW,EAAE,CAAC,CAAA;QACvB,CAAC,CAAC;QAEJ,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC,qBAAY,GAAG,EAAE,CAAC,SAAS,IAAI,UAAU,CAAC;KACrE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAW,UAAU,EAAE,WAAW,CAAC,CAAA"}
|
|
@@ -2,27 +2,30 @@ import * as tsplus_module_1 from "@effect/stream/Stream";
|
|
|
2
2
|
import * as tsplus_module_2 from "dfx/gateway";
|
|
3
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/stream/GroupBy";
|
|
5
|
-
import * as tsplus_module_5 from "@
|
|
5
|
+
import * as tsplus_module_5 from "@effect/data/Duration";
|
|
6
6
|
import * as tsplus_module_6 from "@fp-ts/core/Option";
|
|
7
7
|
import * as tsplus_module_7 from "dfx";
|
|
8
8
|
import * as tsplus_module_8 from "dfx/_common";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
10
|
-
import { millis } from "@
|
|
10
|
+
import { millis } from "@effect/data/Duration";
|
|
11
11
|
import { ShardStore } from "../ShardStore/index.js";
|
|
12
|
-
const make = tsplus_module_3.flatMap(
|
|
12
|
+
const make = tsplus_module_3.flatMap(store => tsplus_module_3.flatMap(rest => tsplus_module_3.flatMap(({ gateway: config }) => tsplus_module_3.flatMap(limiter => {
|
|
13
13
|
const configs = (totalCount) => {
|
|
14
|
-
const claimId = (sharderCount) => tsplus_module_3.flatMap(store
|
|
14
|
+
const claimId = (sharderCount) => tsplus_module_3.flatMap(a => tsplus_module_6.match(() => tsplus_module_3.delay(tsplus_module_5.minutes(3))(claimId(sharderCount)), id => tsplus_module_3.succeed(id))(a))(store
|
|
15
15
|
.claimId({
|
|
16
16
|
totalCount,
|
|
17
17
|
sharderCount,
|
|
18
|
-
})
|
|
19
|
-
return tsplus_module_1.map(
|
|
18
|
+
}));
|
|
19
|
+
return tsplus_module_1.map(id => ({
|
|
20
20
|
id,
|
|
21
21
|
totalCount,
|
|
22
|
-
}))(tsplus_module_1.unfoldEffect(0,
|
|
22
|
+
}))(tsplus_module_1.unfoldEffect(0, sharderCount => tsplus_module_3.map(id => tsplus_module_6.some([id, sharderCount + 1]))(claimId(sharderCount))));
|
|
23
23
|
};
|
|
24
|
-
return tsplus_module_3.flatMap(tsplus_module_3.
|
|
25
|
-
|
|
24
|
+
return tsplus_module_3.flatMap(gateway => tsplus_module_3.map(shards => ({ shards }))(tsplus_module_1.broadcastDynamic(1)(tsplus_module_1.flatMap(shard => tsplus_module_1.merge(tsplus_module_1.drain(tsplus_module_1.fromEffect(shard.run)))(tsplus_module_1.succeed(shard)))(tsplus_module_4.evaluate((key, shardConfig) => tsplus_module_1.mapEffect(c => tsplus_module_2.Shard.make([c.id, c.totalCount]))(tsplus_module_1.tap(() => limiter.maybeWait(`dfx.sharder.${key}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1]))(shardConfig)))(tsplus_module_1.groupBy(c => tsplus_module_3.succeed([c.id % c.concurrency, c]))(tsplus_module_1.map(config => ({
|
|
25
|
+
...config,
|
|
26
|
+
url: gateway.url,
|
|
27
|
+
concurrency: gateway.session_start_limit.max_concurrency,
|
|
28
|
+
}))(configs(config.shardCount ?? gateway.shards))))))))(tsplus_module_3.catchAll(() => tsplus_module_3.succeed({
|
|
26
29
|
url: "wss://gateway.discord.gg/",
|
|
27
30
|
shards: 1,
|
|
28
31
|
session_start_limit: {
|
|
@@ -31,12 +34,9 @@ const make = tsplus_module_3.flatMap(tsplus_module_3.service(ShardStore), store
|
|
|
31
34
|
reset_after: 0,
|
|
32
35
|
max_concurrency: 1,
|
|
33
36
|
},
|
|
34
|
-
}))
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
concurrency: gateway.session_start_limit.max_concurrency,
|
|
38
|
-
}))(configs(config.shardCount ?? gateway.shards)))))), shards => ({ shards })));
|
|
39
|
-
}))));
|
|
37
|
+
}))(tsplus_module_3.flatMap(r => r.json)(rest
|
|
38
|
+
.getGatewayBot())));
|
|
39
|
+
})(tsplus_module_3.service(tsplus_module_7.RateLimiter)))(tsplus_module_3.service(tsplus_module_7.DiscordConfig.DiscordConfig)))(tsplus_module_3.service(tsplus_module_7.DiscordREST)))(tsplus_module_3.service(ShardStore));
|
|
40
40
|
export const Sharder = tsplus_module_8.Tag();
|
|
41
41
|
export const LiveSharder = tsplus_module_9.scoped(Sharder, make);
|
|
42
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Sharder/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Sharder/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,30 +22,30 @@ export class WebSocketCloseError {
|
|
|
22
22
|
this.reason = reason;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMap(
|
|
25
|
+
const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMap(url => {
|
|
26
26
|
const ws = new WebSocket(url);
|
|
27
|
-
return tsplus_module_1.map(tsplus_module_1.async(
|
|
27
|
+
return tsplus_module_1.map(() => ws)(tsplus_module_1.async(resume => {
|
|
28
28
|
ws.addEventListener("open", () => resume(tsplus_module_1.unit()), {
|
|
29
29
|
once: true,
|
|
30
30
|
});
|
|
31
|
-
})
|
|
32
|
-
}),
|
|
31
|
+
}));
|
|
32
|
+
})(tsplus_module_2.get(urlRef)), ws => tsplus_module_1.sync(() => {
|
|
33
33
|
;
|
|
34
34
|
ws.removeAllListeners?.();
|
|
35
35
|
ws.close();
|
|
36
36
|
}));
|
|
37
|
-
const recv = (ws) => tsplus_module_3.asyncEffect(
|
|
38
|
-
ws.addEventListener("message",
|
|
37
|
+
const recv = (ws) => tsplus_module_3.asyncEffect(emit => tsplus_module_1.sync(() => {
|
|
38
|
+
ws.addEventListener("message", message => {
|
|
39
39
|
emit.single(message.data);
|
|
40
40
|
});
|
|
41
|
-
ws.addEventListener("error",
|
|
41
|
+
ws.addEventListener("error", cause => {
|
|
42
42
|
emit.fail(new WebSocketError(cause));
|
|
43
43
|
});
|
|
44
|
-
ws.addEventListener("close",
|
|
44
|
+
ws.addEventListener("close", e => {
|
|
45
45
|
emit.fail(new WebSocketCloseError(e.code, e.reason));
|
|
46
46
|
});
|
|
47
47
|
}));
|
|
48
|
-
const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(
|
|
48
|
+
const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap((data) => {
|
|
49
49
|
if (data === Reconnect) {
|
|
50
50
|
return tsplus_module_1.failSync(() => {
|
|
51
51
|
ws.close(1012, "reconnecting");
|
|
@@ -55,9 +55,9 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tspl
|
|
|
55
55
|
return tsplus_module_1.sync(() => {
|
|
56
56
|
ws.send(data);
|
|
57
57
|
});
|
|
58
|
-
}));
|
|
59
|
-
export const make = (url, takeOutbound) => tsplus_module_6.pipe(tsplus_module_1.flatMap(
|
|
58
|
+
})(tsplus_module_1.tap(data => log.debug("WS", "send", data))(take)));
|
|
59
|
+
export const make = (url, takeOutbound) => tsplus_module_6.pipe(tsplus_module_1.flatMap(log => tsplus_module_1.map(ws => {
|
|
60
60
|
const sendEffect = send(ws, takeOutbound, log);
|
|
61
|
-
return tsplus_module_3.retry(tsplus_module_4.recurWhile(
|
|
62
|
-
})), tsplus_module_3.unwrapScoped);
|
|
61
|
+
return tsplus_module_3.retry(tsplus_module_4.recurWhile(e => e._tag === "WebSocketCloseError" && e.code === 1012))(tsplus_module_3.merge(tsplus_module_3.fromEffect(sendEffect))(recv(ws)));
|
|
62
|
+
})(socket(url)))(tsplus_module_1.service(tsplus_module_5.Log.Log)), tsplus_module_3.unwrapScoped);
|
|
63
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/WS/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,SAAS,MAAM,eAAe,CAAA;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAA;AAIjC,MAAM,OAAO,cAAc;IAEJ;IADZ,IAAI,GAAG,gBAAgB,CAAA;IAChC,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;CACzC;AAED,MAAM,OAAO,mBAAmB;IAET;IAAuB;IADnC,IAAI,GAAG,qBAAqB,CAAA;IACrC,YAAqB,IAAY,EAAW,MAAc;QAArC,SAAI,GAAJ,IAAI,CAAQ;QAAW,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;CAC/D;AAED,MAAM,MAAM,GAAG,CAAC,MAAmB,EAAE,EAAE,CACrC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DiscordGateway/WS/index.ts"],"names":[],"mappings":"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"}
|
package/DiscordGateway/index.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/stream/Stream";
|
|
2
|
-
import * as tsplus_module_2 from "@
|
|
3
|
-
import * as tsplus_module_3 from "
|
|
4
|
-
import * as tsplus_module_4 from "
|
|
5
|
-
import * as tsplus_module_5 from "@effect/io/Layer";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "dfx/_common";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Layer";
|
|
6
5
|
import { Sharder } from "./Sharder/index.js";
|
|
7
|
-
const fromDispatchFactory = (source) => (event) => tsplus_module_1.map(
|
|
8
|
-
const handleDispatchFactory = (source) => (event, handle) => tsplus_module_1.runDrain(
|
|
9
|
-
export const make =
|
|
6
|
+
const fromDispatchFactory = (source) => (event) => tsplus_module_1.map(p => p.d)(tsplus_module_1.filter(p => p.t === event)(source));
|
|
7
|
+
const handleDispatchFactory = (source) => (event, handle) => tsplus_module_1.runDrain(tsplus_module_1.flatMapPar(a => tsplus_module_1.fromEffect(handle(a.d)), Number.POSITIVE_INFINITY)(tsplus_module_1.filter(p => p.t === event)(source)));
|
|
8
|
+
export const make = tsplus_module_2.flatMap(sharder => tsplus_module_2.flatMap(raw => tsplus_module_2.map(dispatch => {
|
|
10
9
|
const fromDispatch = fromDispatchFactory(dispatch);
|
|
11
10
|
const handleDispatch = handleDispatchFactory(dispatch);
|
|
12
11
|
return {
|
|
@@ -15,7 +14,7 @@ export const make = tsplus_module_3.flatMap(tsplus_module_3.service(Sharder), sh
|
|
|
15
14
|
fromDispatch,
|
|
16
15
|
handleDispatch,
|
|
17
16
|
};
|
|
18
|
-
})));
|
|
19
|
-
export const DiscordGateway =
|
|
20
|
-
export const LiveDiscordGateway =
|
|
17
|
+
})(tsplus_module_1.broadcastDynamic(8)(tsplus_module_1.flatMapPar(s => s.dispatch, Number.POSITIVE_INFINITY)(sharder.shards))))(tsplus_module_1.broadcastDynamic(8)(tsplus_module_1.flatMapPar(s => s.raw, Number.POSITIVE_INFINITY)(sharder.shards))))(tsplus_module_2.service(Sharder));
|
|
18
|
+
export const DiscordGateway = tsplus_module_3.Tag();
|
|
19
|
+
export const LiveDiscordGateway = tsplus_module_4.scoped(DiscordGateway, make);
|
|
21
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DiscordGateway/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DiscordGateway/index.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,MAAM,mBAAmB,GACvB,CAAO,MAAkE,EAAE,EAAE,CAC7E,CACE,KAAQ,EACgC,EAAE,CAC1C,oBAAsC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAS,EAAtD,uBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAAhC,MAAM,CAA2B,CAAsB,CAAA;AAE3D,MAAM,qBAAqB,GACzB,CAAO,MAAkE,EAAE,EAAE,CAC7E,CACE,KAAQ,EACR,MAA8D,EAChC,EAAE,0BAChC,2BAGI,CAAC,CAAC,EAAE,CAAC,2BAAkB,MAAM,CAAC,CAAC,CAAC,CAAQ,CAAC,CAAC,EAC1C,MAAM,CAAC,iBAAiB,EAJ5B,uBACU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,EAD5B,MAAM,CACuB,CAI1B,CAAS,CAAA;AAEhB,MAAM,CAAC,MAAM,IAAI,2BACT,OAAO,4BACP,GAAG,wBAKH,QAAQ;IAKd,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,cAAc,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAEtD,OAAO;QACL,GAAG;QACH,QAAQ;QACR,YAAY;QACZ,cAAc;KACf,CAAA;GAZC,iCAEoB,CAAC,EAFrB,2BACc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EADvD,OAAO,CAAC,MAAM,CAC0C,CAClC,GAPtB,iCAEoB,CAAC,EAFrB,2BACc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,EADlD,OAAO,CAAC,MAAM,CACqC,CAC7B,GAJN,wBAAe,OAAO,CAAC,CAoBzC,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,uBAAa,cAAc,EAAE,IAAI,CAAC,CAAA"}
|
package/DiscordREST/index.js
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "dfx/_common";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
-
import * as tsplus_module_3 from "@
|
|
3
|
+
import * as tsplus_module_3 from "@effect/data/Duration";
|
|
4
4
|
import * as tsplus_module_4 from "@fp-ts/core/Option";
|
|
5
5
|
import * as tsplus_module_5 from "@effect/io/Config/Secret";
|
|
6
|
-
import * as tsplus_module_6 from "@
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/HashSet";
|
|
7
7
|
import * as tsplus_module_7 from "@effect/io/Ref";
|
|
8
8
|
import * as tsplus_module_8 from "dfx";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
10
|
-
import { millis } from "@
|
|
10
|
+
import { millis } from "@effect/data/Duration";
|
|
11
11
|
import Pkg from "../package.json" assert { type: "json" };
|
|
12
12
|
import { rateLimitFromHeaders, retryAfter, routeFromConfig } from "./utils.js";
|
|
13
|
-
const make = tsplus_module_2.flatMap(
|
|
13
|
+
const make = tsplus_module_2.flatMap(http => tsplus_module_2.flatMap(({ token, rest }) => tsplus_module_2.flatMap(log => tsplus_module_2.flatMap(store => tsplus_module_2.flatMap(({ maybeWait }) => {
|
|
14
14
|
const globalRateLimit = maybeWait("dfx.rest.global", rest.globalRateLimit.window, rest.globalRateLimit.limit);
|
|
15
|
-
return tsplus_module_2.map(
|
|
15
|
+
return tsplus_module_2.map(badRoutesRef => {
|
|
16
16
|
const addBadRoute = (route) => tsplus_module_2.collectAllParDiscard([
|
|
17
17
|
log.info("DiscordREST", "addBadRoute", route),
|
|
18
|
-
tsplus_module_7.update(
|
|
18
|
+
tsplus_module_7.update(s => tsplus_module_6.add(route)(s))(badRoutesRef),
|
|
19
19
|
store.incrementCounter("dfx.rest.invalid", tsplus_module_3.minutes(10).millis, 10000),
|
|
20
20
|
]);
|
|
21
|
-
const isBadRoute = (route) => tsplus_module_2.map(
|
|
22
|
-
const removeBadRoute = (route) => tsplus_module_7.update(
|
|
23
|
-
const invalidRateLimit = (route) => tsplus_module_2.asUnit(tsplus_module_2.tap(
|
|
21
|
+
const isBadRoute = (route) => tsplus_module_2.map(s => tsplus_module_6.has(route)(s))(tsplus_module_7.get(badRoutesRef));
|
|
22
|
+
const removeBadRoute = (route) => tsplus_module_7.update(s => tsplus_module_6.remove(route)(s))(badRoutesRef);
|
|
23
|
+
const invalidRateLimit = (route) => tsplus_module_2.asUnit(tsplus_module_2.tap(invalid => invalid
|
|
24
24
|
? maybeWait("dfx.rest.invalid", tsplus_module_3.minutes(10), 10000)
|
|
25
|
-
: tsplus_module_2.unit()));
|
|
25
|
+
: tsplus_module_2.unit())(isBadRoute(route)));
|
|
26
26
|
// Request rate limiting
|
|
27
27
|
const requestRateLimit = (path, init) => (() => {
|
|
28
28
|
const route = routeFromConfig(path, init);
|
|
29
|
-
return tsplus_module_2.flatMap(
|
|
29
|
+
return tsplus_module_2.flatMap(maybeBucket => {
|
|
30
30
|
const bucket = tsplus_module_4.getOrElse(() => ({
|
|
31
31
|
key: `?.${route}`,
|
|
32
32
|
resetAfter: 5000,
|
|
33
33
|
limit: 1,
|
|
34
34
|
}))(maybeBucket);
|
|
35
35
|
const resetAfter = millis(bucket.resetAfter);
|
|
36
|
-
return tsplus_module_2.flatMap(
|
|
37
|
-
});
|
|
36
|
+
return tsplus_module_2.flatMap(() => tsplus_module_2.map(() => void 0)(maybeWait(`dfx.rest.${bucket.key}`, resetAfter, bucket.limit)))(invalidRateLimit(route));
|
|
37
|
+
})(store.getBucketForRoute(route));
|
|
38
38
|
})();
|
|
39
39
|
// Update rate limit buckets
|
|
40
40
|
const updateBuckets = (path, init, response) => tsplus_module_2.ignore((() => {
|
|
41
41
|
const route = routeFromConfig(path, init);
|
|
42
|
-
return tsplus_module_2.flatMap(
|
|
42
|
+
return tsplus_module_2.flatMap(({ bucket, retryAfter, limit, remaining }) => {
|
|
43
43
|
const effectsToRun = [
|
|
44
44
|
removeBadRoute(route),
|
|
45
45
|
store.putBucketRoute(route, bucket),
|
|
46
46
|
];
|
|
47
|
-
return tsplus_module_2.flatMap(
|
|
47
|
+
return tsplus_module_2.flatMap(hasBucket => {
|
|
48
48
|
if (!hasBucket || limit - 1 === remaining) {
|
|
49
49
|
effectsToRun.push(store.removeCounter(`dfx.rest.?.${route}`), store.putBucket({
|
|
50
50
|
key: bucket,
|
|
@@ -52,35 +52,35 @@ const make = tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.Htt
|
|
|
52
52
|
limit: !hasBucket && remaining > 0 ? remaining : limit,
|
|
53
53
|
}));
|
|
54
54
|
}
|
|
55
|
-
return tsplus_module_2.map(
|
|
56
|
-
});
|
|
57
|
-
});
|
|
55
|
+
return tsplus_module_2.map(() => void 0)(tsplus_module_2.collectAllParDiscard(effectsToRun));
|
|
56
|
+
})(store.hasBucket(bucket));
|
|
57
|
+
})(tsplus_module_2.fromOption(rateLimitFromHeaders(response.headers)));
|
|
58
58
|
})());
|
|
59
|
-
const request = (path, init = {}) => tsplus_module_2.catchTag(
|
|
60
|
-
...init,
|
|
61
|
-
headers: {
|
|
62
|
-
...(init?.headers ?? {}),
|
|
63
|
-
Authorization: `Bot ${tsplus_module_5.value(token)}`,
|
|
64
|
-
"User-Agent": `DiscordBot (https://github.com/tim-smart/dfx, ${Pkg.version})`,
|
|
65
|
-
},
|
|
66
|
-
}), response => tsplus_module_2.map(updateBuckets(path, init, response.response), () => response)))), "StatusCodeError", (e) => {
|
|
59
|
+
const request = (path, init = {}) => tsplus_module_2.catchTag("StatusCodeError", e => {
|
|
67
60
|
switch (e.code) {
|
|
68
61
|
case 403:
|
|
69
|
-
return tsplus_module_2.flatMap(tsplus_module_2.collectAllParDiscard([
|
|
62
|
+
return tsplus_module_2.flatMap(() => tsplus_module_2.fail(e))(tsplus_module_2.collectAllParDiscard([
|
|
70
63
|
log.info("DiscordREST", "403", path),
|
|
71
64
|
addBadRoute(routeFromConfig(path, init)),
|
|
72
65
|
updateBuckets(path, init, e.response),
|
|
73
|
-
])
|
|
66
|
+
]));
|
|
74
67
|
case 429:
|
|
75
|
-
return tsplus_module_2.flatMap(tsplus_module_2.collectAllParDiscard([
|
|
68
|
+
return tsplus_module_2.flatMap(() => request(path, init))(tsplus_module_2.collectAllParDiscard([
|
|
76
69
|
log.info("DiscordREST", "429", path),
|
|
77
70
|
addBadRoute(routeFromConfig(path, init)),
|
|
78
71
|
updateBuckets(path, init, e.response),
|
|
79
72
|
tsplus_module_2.sleep(tsplus_module_4.getOrElse(() => tsplus_module_3.seconds(5))(retryAfter(e.response.headers))),
|
|
80
|
-
])
|
|
73
|
+
]));
|
|
81
74
|
}
|
|
82
75
|
return tsplus_module_2.fail(e);
|
|
83
|
-
})
|
|
76
|
+
})(tsplus_module_2.flatMap(() => tsplus_module_2.flatMap(() => tsplus_module_2.flatMap(response => tsplus_module_2.map(() => response)(updateBuckets(path, init, response.response)))(http.requestWithJson(`${rest.baseUrl}${path}`, {
|
|
77
|
+
...init,
|
|
78
|
+
headers: {
|
|
79
|
+
...(init?.headers ?? {}),
|
|
80
|
+
Authorization: `Bot ${tsplus_module_5.value(token)}`,
|
|
81
|
+
"User-Agent": `DiscordBot (https://github.com/tim-smart/dfx, ${Pkg.version})`,
|
|
82
|
+
},
|
|
83
|
+
})))(globalRateLimit))(requestRateLimit(path, init)));
|
|
84
84
|
const routes = tsplus_module_1.Discord.createRoutes(({ method, url, params, options = {}, }) => {
|
|
85
85
|
const hasBody = method !== "GET" && method !== "DELETE";
|
|
86
86
|
let hasFormData = typeof options?.body?.append === "function";
|
|
@@ -115,8 +115,8 @@ const make = tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.Htt
|
|
|
115
115
|
});
|
|
116
116
|
});
|
|
117
117
|
return { request, ...routes };
|
|
118
|
-
});
|
|
119
|
-
})))));
|
|
118
|
+
})(tsplus_module_7.make(tsplus_module_6.empty()));
|
|
119
|
+
})(tsplus_module_2.service(tsplus_module_8.RateLimiter)))(tsplus_module_2.service(tsplus_module_8.RateLimitStore)))(tsplus_module_2.service(tsplus_module_8.Log.Log)))(tsplus_module_2.service(tsplus_module_8.DiscordConfig.DiscordConfig)))(tsplus_module_2.service(tsplus_module_8.Http));
|
|
120
120
|
export const DiscordREST = tsplus_module_1.Tag();
|
|
121
121
|
export const LiveDiscordREST = tsplus_module_9.effect(DiscordREST, make);
|
|
122
122
|
//# sourceMappingURL=index.js.map
|
package/DiscordREST/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DiscordREST/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DiscordREST/index.ts"],"names":[],"mappings":"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"}
|
package/DiscordREST/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@fp-ts/core/Option";
|
|
2
|
-
import * as tsplus_module_2 from "@
|
|
2
|
+
import * as tsplus_module_2 from "@effect/data/Duration";
|
|
3
3
|
const majorResources = ["channels", "guilds", "webhooks"];
|
|
4
4
|
export const routeFromConfig = (path, init) => {
|
|
5
5
|
const method = (init?.method ?? "get").toLowerCase();
|
|
@@ -11,8 +11,8 @@ export const routeFromConfig = (path, init) => {
|
|
|
11
11
|
.replace(/\/reactions\/(.*)/, "/reactions");
|
|
12
12
|
return `${method}-${routeURL}`;
|
|
13
13
|
};
|
|
14
|
-
export const numberHeader = (headers) => (key) => tsplus_module_1.filter(
|
|
15
|
-
export const retryAfter = (headers) => tsplus_module_1.map(tsplus_module_2.seconds)(tsplus_module_1.
|
|
14
|
+
export const numberHeader = (headers) => (key) => tsplus_module_1.filter(tsplus_module_1.map(parseFloat)(tsplus_module_1.fromNullable(headers.get(key))), n => !isNaN(n));
|
|
15
|
+
export const retryAfter = (headers) => tsplus_module_1.map(tsplus_module_2.seconds)(tsplus_module_1.orElse(() => numberHeader(headers)("retry-after"))(numberHeader(headers)("x-ratelimit-reset-after")));
|
|
16
16
|
export const rateLimitFromHeaders = (headers) => tsplus_module_1.struct({
|
|
17
17
|
bucket: tsplus_module_1.fromNullable(headers.get("x-ratelimit-bucket")),
|
|
18
18
|
retryAfter: retryAfter(headers),
|
package/DiscordREST/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/DiscordREST/utils.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAiB,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAEpD,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC9D,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAC3D;QACD,kBAAkB;SACjB,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;IAE7C,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAChE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/DiscordREST/utils.ts"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAiB,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAEpD,uBAAuB;IACvB,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACb,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAC9D,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAC3D;QACD,kBAAkB;SACjB,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;IAE7C,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAChE,uBAAA,oBACO,UAAU,EADjB,6BAAmB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAClB,EACR,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC7C,6CAAA,uBACU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EADpD,YAAY,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,CACK,CAC7B,CAAA;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACvD,uBAAa;IACX,MAAM,EAAE,6BAAmB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC;IACjD,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC;CAC1D,CAAC,CAAA"}
|
package/Helpers/flags.js
CHANGED
|
@@ -3,7 +3,7 @@ export function all(flags) {
|
|
|
3
3
|
}
|
|
4
4
|
export function toList(flags) {
|
|
5
5
|
const entries = Object.entries(flags);
|
|
6
|
-
return
|
|
6
|
+
return val => entries.reduce((acc, [key, flag]) => ((val & flag) === flag ? [...acc, key] : acc), []);
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Returns a function that converts a list of flags names to a bigint bitfield.
|
package/Helpers/flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/Helpers/flags.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAC/D,CAAC;AAWD,MAAM,UAAU,MAAM,CACpB,KAAQ;IAER,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/Helpers/flags.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;AAC/D,CAAC;AAWD,MAAM,UAAU,MAAM,CACpB,KAAQ;IAER,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,OAAO,GAAG,CAAC,EAAE,CACX,OAAO,CAAC,MAAM,CACZ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EACnE,EAAiB,CAClB,CAAA;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GACzB,CAA0B,KAAQ,EAAE,EAAE,CACtC,CAAC,IAAiB,EAAE,EAAE,CACpB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,CAA0B,KAAQ,EAAE,EAAE,CACtC,CAAC,IAAiB,EAAE,EAAE,CACpB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/B,OAAO,CAAC,IAAqB,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,UAAU,CAAA;IACjD,CAAC,CAAA;AACH,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAqB,EAAE,EAAE;IAC3C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAA;IACxB,OAAO,CAAC,IAAqB,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,CAAC,IAAI,CAAA;QACxB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,UAAU,CAAA;IACjD,CAAC,CAAA;AACH,CAAC,CAAA"}
|
package/Helpers/interactions.js
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "dfx/_common";
|
|
2
2
|
import * as tsplus_module_2 from "@fp-ts/core/Function";
|
|
3
3
|
import * as tsplus_module_3 from "@fp-ts/core/Option";
|
|
4
|
-
import * as tsplus_module_4 from "@
|
|
4
|
+
import * as tsplus_module_4 from "@effect/data/HashMap";
|
|
5
5
|
import { Product } from "@fp-ts/core/Option";
|
|
6
6
|
import * as Arr from "@fp-ts/core/ReadonlyArray";
|
|
7
7
|
/**
|
|
8
8
|
* Maybe find a sub-command within the interaction options.
|
|
9
9
|
*/
|
|
10
|
-
export const allSubCommands = (interaction) => tsplus_module_2.pipe(optionsWithNested(interaction), Arr.filter(
|
|
10
|
+
export const allSubCommands = (interaction) => tsplus_module_2.pipe(optionsWithNested(interaction), Arr.filter(o => o.type === 1 /* Discord.ApplicationCommandOptionType.SUB_COMMAND */));
|
|
11
11
|
/**
|
|
12
12
|
* Maybe find a sub-command within the interaction options.
|
|
13
13
|
*/
|
|
14
|
-
export const findSubCommand = (name) => (interaction) => tsplus_module_2.pipe(optionsWithNested(interaction), Arr.findFirst(
|
|
14
|
+
export const findSubCommand = (name) => (interaction) => tsplus_module_2.pipe(optionsWithNested(interaction), Arr.findFirst(o => o.type === 1 /* Discord.ApplicationCommandOptionType.SUB_COMMAND */ &&
|
|
15
15
|
o.name === name));
|
|
16
16
|
/**
|
|
17
17
|
* If the sub-command exists return `true`, else `false`.
|
|
18
18
|
*/
|
|
19
|
-
export const isSubCommand = (name) => tsplus_module_2.flow(findSubCommand(name),
|
|
19
|
+
export const isSubCommand = (name) => tsplus_module_2.flow(findSubCommand(name), o => tsplus_module_3.isSome(o));
|
|
20
20
|
/**
|
|
21
21
|
* Maybe get the options for a sub-command
|
|
22
22
|
*/
|
|
23
|
-
export const subCommandOptions = (name) => tsplus_module_2.flow(findSubCommand(name),
|
|
23
|
+
export const subCommandOptions = (name) => tsplus_module_2.flow(findSubCommand(name), o => tsplus_module_3.flatMapNullable(o => o.options)(o));
|
|
24
24
|
/**
|
|
25
25
|
* A lens for accessing nested options in a interaction.
|
|
26
26
|
*/
|
|
27
27
|
export const optionsWithNested = (data) => {
|
|
28
|
-
const optsFromOption = (opt) => tsplus_module_3.match(() => [], tsplus_module_2.identity)(tsplus_module_3.map(
|
|
29
|
-
return tsplus_module_3.getOrElse(() => [])(tsplus_module_3.map(
|
|
28
|
+
const optsFromOption = (opt) => tsplus_module_3.match(() => [], tsplus_module_2.identity)(tsplus_module_3.map(opts => [...opts, ...opts.flatMap(optsFromOption)])(tsplus_module_3.fromNullable(opt.options)));
|
|
29
|
+
return tsplus_module_3.getOrElse(() => [])(tsplus_module_3.map(opts => [...opts, ...opts.flatMap(optsFromOption)])(tsplus_module_3.fromNullable(data.options)));
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
32
32
|
* Return the interaction options as a name / value map.
|
|
33
33
|
*/
|
|
34
|
-
export const transformOptions = (options) => options.reduce((map, option) => tsplus_module_4.set(
|
|
34
|
+
export const transformOptions = (options) => options.reduce((map, option) => tsplus_module_4.set(option.name, option.value)(map), tsplus_module_4.empty());
|
|
35
35
|
/**
|
|
36
36
|
* Return the interaction options as a name / value map.
|
|
37
37
|
*/
|
|
@@ -39,19 +39,19 @@ export const optionsMap = tsplus_module_2.flow(optionsWithNested, transformOptio
|
|
|
39
39
|
/**
|
|
40
40
|
* Try find a matching option from the interaction.
|
|
41
41
|
*/
|
|
42
|
-
export const getOption = (name) => tsplus_module_2.flow(optionsWithNested, Arr.findFirst(
|
|
42
|
+
export const getOption = (name) => tsplus_module_2.flow(optionsWithNested, Arr.findFirst(o => o.name === name));
|
|
43
43
|
/**
|
|
44
44
|
* Try find a matching option from the interaction.
|
|
45
45
|
*/
|
|
46
|
-
export const focusedOption = tsplus_module_2.flow(optionsWithNested, Arr.findFirst(
|
|
46
|
+
export const focusedOption = tsplus_module_2.flow(optionsWithNested, Arr.findFirst(o => o.focused === true));
|
|
47
47
|
/**
|
|
48
48
|
* Try find a matching option value from the interaction.
|
|
49
49
|
*/
|
|
50
|
-
export const optionValue = (name) => tsplus_module_2.flow(getOption(name),
|
|
50
|
+
export const optionValue = (name) => tsplus_module_2.flow(getOption(name), o => tsplus_module_3.flatMapNullable(o => o.value)(o));
|
|
51
51
|
/**
|
|
52
52
|
* Try extract resolved data
|
|
53
53
|
*/
|
|
54
|
-
export const resolved = (data) => tsplus_module_3.flatMapNullable(
|
|
54
|
+
export const resolved = (data) => tsplus_module_3.flatMapNullable(a => a.resolved)(tsplus_module_3.fromNullable(data.data));
|
|
55
55
|
/**
|
|
56
56
|
* Try find a matching option value from the interaction.
|
|
57
57
|
*/
|
|
@@ -59,7 +59,7 @@ export const resolveOptionValue = (name, f) => (a) => tsplus_module_3.flatMap(da
|
|
|
59
59
|
/**
|
|
60
60
|
* Try find matching option values from the interaction.
|
|
61
61
|
*/
|
|
62
|
-
export const resolveValues = (f) => (a) => tsplus_module_3.flatMap(values => tsplus_module_3.flatMap(r => Product.productAll(values.map(
|
|
62
|
+
export const resolveValues = (f) => (a) => tsplus_module_3.flatMap(values => tsplus_module_3.flatMap(r => Product.productAll(values.map(a => tsplus_module_3.fromNullable(f(a, r)))))(resolved(a)))(tsplus_module_3.flatMapNullable(a => a.values)(tsplus_module_3.fromNullable(a.data)));
|
|
63
63
|
const extractComponents = (c) => {
|
|
64
64
|
if ("components" in c) {
|
|
65
65
|
return [...c.components, ...c.components.flatMap(extractComponents)];
|
|
@@ -76,11 +76,11 @@ export const components = (a) => [
|
|
|
76
76
|
/**
|
|
77
77
|
* A lens for accessing the components in a interaction.
|
|
78
78
|
*/
|
|
79
|
-
export const componentsWithValue = tsplus_module_2.flow(components, Arr.filter(
|
|
79
|
+
export const componentsWithValue = tsplus_module_2.flow(components, Arr.filter(c => "value" in c && c.value !== undefined));
|
|
80
80
|
/**
|
|
81
81
|
* Return the interaction components as an id / value map.
|
|
82
82
|
*/
|
|
83
|
-
export const transformComponents = (options) => options.reduce((map, c) => (c.custom_id ? tsplus_module_4.set(
|
|
83
|
+
export const transformComponents = (options) => options.reduce((map, c) => (c.custom_id ? tsplus_module_4.set(c.custom_id, c.value)(map) : map), tsplus_module_4.empty());
|
|
84
84
|
/**
|
|
85
85
|
* Return the interaction components as an id / value map.
|
|
86
86
|
*/
|
|
@@ -88,10 +88,10 @@ export const componentsMap = tsplus_module_2.flow(components, transformComponent
|
|
|
88
88
|
/**
|
|
89
89
|
* Try find a matching component from the interaction.
|
|
90
90
|
*/
|
|
91
|
-
export const getComponent = (id) => tsplus_module_2.flow(components, Arr.findFirst(
|
|
91
|
+
export const getComponent = (id) => tsplus_module_2.flow(components, Arr.findFirst(o => o.custom_id === id));
|
|
92
92
|
/**
|
|
93
93
|
* Try find a matching component value from the interaction.
|
|
94
94
|
*/
|
|
95
|
-
export const componentValue = (id) => tsplus_module_2.flow(getComponent(id),
|
|
95
|
+
export const componentValue = (id) => tsplus_module_2.flow(getComponent(id), o => tsplus_module_3.flatMapNullable(o => o.value)(o));
|
|
96
96
|
export const response = (r) => r;
|
|
97
97
|
//# sourceMappingURL=interactions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../src/Helpers/interactions.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAmB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,WAA4C,EAAE,EAAE,CAC7E,gBAAA,IAAI,CACF,iBAAiB,CAAC,WAAW,CAAC,EAC9B,GAAG,CAAC,MAAM,CACR,CAAC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../src/Helpers/interactions.ts"],"names":[],"mappings":"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"}
|
package/Helpers/members.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* From a list of roles, filter out the ones the guild member has.
|
|
3
3
|
*/
|
|
4
|
-
export const roles = (roles) => (member) => roles.filter(
|
|
4
|
+
export const roles = (roles) => (member) => roles.filter(role => member.roles.includes(role.id) || role.name === "@everyone");
|
|
5
5
|
/**
|
|
6
6
|
* Type-guard function for checking if the object is a guild member
|
|
7
7
|
*/
|
package/Helpers/members.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/Helpers/members.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,CAAC,MAA2B,EAAE,EAAE,CAC9E,KAAK,CAAC,MAAM,CACV,
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/Helpers/members.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,CAAC,MAA2B,EAAE,EAAE,CAC9E,KAAK,CAAC,MAAM,CACV,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CACpE,CAAA;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAc,EAAgC,EAAE,CACjE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;IACpD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA"}
|
package/Helpers/permissions.js
CHANGED
|
@@ -54,7 +54,7 @@ export const forChannel = (roles) => ({ guild_id, permission_overwrites: overwri
|
|
|
54
54
|
filteredOverwrites = overwrites.filter(overwriteIsForMember(guild_id)(memberOrRole));
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
|
-
const everyone = roles.find(
|
|
57
|
+
const everyone = roles.find(role => role.name === "@everyone");
|
|
58
58
|
basePermissions =
|
|
59
59
|
BigInt(everyone?.permissions || "0") | BigInt(memberOrRole.permissions);
|
|
60
60
|
filteredOverwrites = overwrites.filter(overwriteIsForRole(guild_id)(memberOrRole));
|
|
@@ -68,15 +68,15 @@ export const forChannel = (roles) => ({ guild_id, permission_overwrites: overwri
|
|
|
68
68
|
* Apply permission overwrites to a bitfield.
|
|
69
69
|
*/
|
|
70
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) => tsplus_module_4.map(
|
|
71
|
+
export const hasInChannel = (rolesCache, permission) => (channel, memberOrRole) => tsplus_module_4.map(roles => {
|
|
72
72
|
const channelPerms = forChannel([...roles.values()])(channel)(memberOrRole);
|
|
73
73
|
return has(permission)(channelPerms);
|
|
74
|
-
});
|
|
75
|
-
export const hasInGuild = (rolesCache, permission) => (guildId, member) => tsplus_module_4.map(
|
|
74
|
+
})(rolesCache.getForParent(channel.guild_id));
|
|
75
|
+
export const hasInGuild = (rolesCache, permission) => (guildId, member) => tsplus_module_4.map(roles => {
|
|
76
76
|
const hasPerm = has(permission);
|
|
77
|
-
return member.roles.some(
|
|
77
|
+
return member.roles.some(id => {
|
|
78
78
|
const role = roles.get(id);
|
|
79
79
|
return role ? hasPerm(role.permissions) : false;
|
|
80
80
|
});
|
|
81
|
-
});
|
|
81
|
+
})(rolesCache.getForParent(guildId));
|
|
82
82
|
//# sourceMappingURL=permissions.js.map
|