dfx 0.50.1 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cache/memory.js +4 -4
- package/Cache/memory.js.map +1 -1
- package/Cache/memoryTTL.js +5 -5
- package/Cache/memoryTTL.js.map +1 -1
- package/Cache/prelude.js +4 -3
- package/Cache/prelude.js.map +1 -1
- package/Cache.d.ts.map +1 -1
- package/Cache.js +15 -7
- package/Cache.js.map +1 -1
- package/DiscordConfig.d.ts +1 -1
- package/DiscordConfig.d.ts.map +1 -1
- package/DiscordConfig.js +4 -5
- package/DiscordConfig.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts.map +1 -1
- package/DiscordGateway/DiscordWS.js +3 -2
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts.map +1 -1
- package/DiscordGateway/Shard/heartbeats.js +4 -1
- package/DiscordGateway/Shard/heartbeats.js.map +1 -1
- package/DiscordGateway/Shard/identify.d.ts +1 -0
- package/DiscordGateway/Shard/identify.d.ts.map +1 -1
- package/DiscordGateway/Shard/identify.js +8 -5
- package/DiscordGateway/Shard/identify.js.map +1 -1
- package/DiscordGateway/Shard/invalidSession.js +1 -1
- package/DiscordGateway/Shard/invalidSession.js.map +1 -1
- package/DiscordGateway/Shard/utils.d.ts +1 -1
- package/DiscordGateway/Shard/utils.d.ts.map +1 -1
- package/DiscordGateway/Shard/utils.js +4 -2
- package/DiscordGateway/Shard/utils.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +1 -1
- package/DiscordGateway/Shard.d.ts.map +1 -1
- package/DiscordGateway/Shard.js +15 -9
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts.map +1 -1
- package/DiscordGateway/Sharder.js +16 -15
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway/WS.d.ts.map +1 -1
- package/DiscordGateway/WS.js +15 -10
- package/DiscordGateway/WS.js.map +1 -1
- package/DiscordGateway.d.ts.map +1 -1
- package/DiscordGateway.js +7 -6
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST/utils.d.ts +4 -3
- package/DiscordREST/utils.d.ts.map +1 -1
- package/DiscordREST/utils.js +6 -6
- package/DiscordREST/utils.js.map +1 -1
- package/DiscordREST.d.ts.map +1 -1
- package/DiscordREST.js +21 -17
- package/DiscordREST.js.map +1 -1
- package/Helpers/interactions.d.ts +10 -10
- package/Helpers/interactions.d.ts.map +1 -1
- package/Helpers/interactions.js +12 -13
- package/Helpers/interactions.js.map +1 -1
- package/Interactions/builder.js +1 -1
- package/Interactions/builder.js.map +1 -1
- package/Interactions/context.d.ts.map +1 -1
- package/Interactions/context.js +4 -1
- package/Interactions/context.js.map +1 -1
- package/Interactions/gateway.d.ts.map +1 -1
- package/Interactions/gateway.js +23 -17
- package/Interactions/gateway.js.map +1 -1
- package/Interactions/handlers.d.ts.map +1 -1
- package/Interactions/handlers.js +25 -10
- package/Interactions/handlers.js.map +1 -1
- package/Interactions/utils.js +1 -1
- package/Interactions/utils.js.map +1 -1
- package/Interactions/webhook.d.ts +7 -6
- package/Interactions/webhook.d.ts.map +1 -1
- package/Interactions/webhook.js +23 -20
- package/Interactions/webhook.js.map +1 -1
- package/Log.js +1 -1
- package/Log.js.map +1 -1
- package/RateLimit/memory.js +1 -1
- package/RateLimit/memory.js.map +1 -1
- package/RateLimit.js +9 -7
- package/RateLimit.js.map +1 -1
- package/global.d.ts +1 -1
- package/global.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/Cache/memory.ts +4 -4
- package/src/Cache/memoryTTL.ts +5 -5
- package/src/Cache/prelude.ts +6 -6
- package/src/Cache.ts +28 -18
- package/src/DiscordConfig.ts +3 -2
- package/src/DiscordGateway/DiscordWS.ts +3 -3
- package/src/DiscordGateway/Shard/heartbeats.ts +6 -1
- package/src/DiscordGateway/Shard/identify.ts +7 -5
- package/src/DiscordGateway/Shard/invalidSession.ts +1 -1
- package/src/DiscordGateway/Shard/utils.ts +7 -4
- package/src/DiscordGateway/Shard.ts +23 -18
- package/src/DiscordGateway/Sharder.ts +11 -11
- package/src/DiscordGateway/WS.ts +12 -8
- package/src/DiscordGateway.ts +4 -3
- package/src/DiscordREST/utils.ts +3 -1
- package/src/DiscordREST.ts +44 -35
- package/src/Helpers/interactions.ts +32 -34
- package/src/Interactions/builder.ts +3 -3
- package/src/Interactions/context.ts +15 -15
- package/src/Interactions/gateway.ts +15 -6
- package/src/Interactions/handlers.ts +43 -40
- package/src/Interactions/utils.ts +1 -1
- package/src/Interactions/webhook.ts +18 -15
- package/src/Log.ts +1 -1
- package/src/RateLimit.ts +6 -6
- package/src/global.ts +1 -1
- package/src/package.json +12 -12
- package/src/utils/hub.ts +6 -6
- package/utils/hub.js +6 -3
- package/utils/hub.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sharder.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAmB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAa,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAO7D,QAAA,MAAM,IAAI;;wBA8CD,IAAI,QAAQ,cAAc,CAAC,QAAQ,YAAY,CAAC,CAAC,aAC3C,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC,CAAC;EAgD/D,CAAA;AAEF,MAAM,WAAW,OAAQ,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AAC/D,eAAO,MAAM,OAAO,sDAAiB,CAAA;AACrC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Sharder.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAmB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAa,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAO7D,QAAA,MAAM,IAAI;;wBA8CD,IAAI,QAAQ,cAAc,CAAC,QAAQ,YAAY,CAAC,CAAC,aAC3C,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC,CAAC;EAgD/D,CAAA;AAEF,MAAM,WAAW,OAAQ,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AAC/D,eAAO,MAAM,OAAO,sDAAiB,CAAA;AACrC,eAAO,MAAM,WAAW,sNACsC,CAAA"}
|
|
@@ -2,12 +2,13 @@ import * as tsplus_module_1 from "@effect/data/Option";
|
|
|
2
2
|
import * as tsplus_module_2 from "@effect/data/Duration";
|
|
3
3
|
import * as tsplus_module_3 from "@effect/io/Schedule";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/io/Ref";
|
|
5
|
-
import * as tsplus_module_5 from "
|
|
6
|
-
import * as tsplus_module_6 from "
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Effect";
|
|
6
|
+
import * as tsplus_module_6 from "dfx/_common";
|
|
7
7
|
import * as tsplus_module_7 from "@effect/data/Chunk";
|
|
8
8
|
import * as tsplus_module_8 from "@effect/io/Deferred";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/data/HashSet";
|
|
10
|
-
import * as tsplus_module_10 from "@effect/
|
|
10
|
+
import * as tsplus_module_10 from "@effect/data/Function";
|
|
11
|
+
import * as tsplus_module_11 from "@effect/io/Layer";
|
|
11
12
|
import { millis } from "@effect/data/Duration";
|
|
12
13
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
13
14
|
import { DiscordREST } from "dfx/DiscordREST";
|
|
@@ -15,17 +16,17 @@ import { LiveRateLimiter, RateLimiter } from "../RateLimit.js";
|
|
|
15
16
|
import { LiveShard, Shard } from "./Shard.js";
|
|
16
17
|
import { ShardStore } from "./ShardStore.js";
|
|
17
18
|
const claimRepeatPolicy = tsplus_module_3.passthrough(tsplus_module_3.whileInput(tsplus_module_3.fixed(tsplus_module_2.minutes(3)), (_) => tsplus_module_1.isNone(_)));
|
|
18
|
-
const make =
|
|
19
|
-
const takeConfig = (totalCount) =>
|
|
20
|
-
const claimId = (sharderCount) =>
|
|
19
|
+
const make = tsplus_module_5.flatMap(tsplus_module_5.map(ShardStore, tsplus_module_10.identity), store => tsplus_module_5.flatMap(tsplus_module_5.map(DiscordREST, tsplus_module_10.identity), rest => tsplus_module_5.flatMap(tsplus_module_5.map(DiscordConfig, tsplus_module_10.identity), ({ gateway: config }) => tsplus_module_5.flatMap(tsplus_module_5.map(RateLimiter, tsplus_module_10.identity), limiter => tsplus_module_5.flatMap(tsplus_module_5.map(Shard, tsplus_module_10.identity), shard => tsplus_module_5.flatMap(tsplus_module_4.make(tsplus_module_9.empty()), currentShards => {
|
|
20
|
+
const takeConfig = (totalCount) => tsplus_module_5.map(tsplus_module_4.make(0), currentCount => {
|
|
21
|
+
const claimId = (sharderCount) => tsplus_module_5.map(tsplus_module_5.repeat(store
|
|
21
22
|
.claimId({
|
|
22
23
|
totalCount,
|
|
23
24
|
sharderCount,
|
|
24
25
|
}), claimRepeatPolicy), _ => _.value);
|
|
25
|
-
return
|
|
26
|
+
return tsplus_module_5.map(tsplus_module_5.flatMap(tsplus_module_4.getAndUpdate(currentCount, _ => _ + 1), claimId), id => ({ id, totalCount }));
|
|
26
27
|
});
|
|
27
|
-
return
|
|
28
|
-
.getGatewayBot(), r => r.json), () =>
|
|
28
|
+
return tsplus_module_5.map(tsplus_module_5.catchAll(tsplus_module_5.flatMap(rest
|
|
29
|
+
.getGatewayBot(), r => r.json), () => tsplus_module_5.succeed({
|
|
29
30
|
url: "wss://gateway.discord.gg/",
|
|
30
31
|
shards: 1,
|
|
31
32
|
session_start_limit: {
|
|
@@ -35,18 +36,18 @@ const make = tsplus_module_6.flatMap(ShardStore, store => tsplus_module_6.flatMa
|
|
|
35
36
|
max_concurrency: 1,
|
|
36
37
|
},
|
|
37
38
|
})), gateway => {
|
|
38
|
-
const run = (hub, sendQueue) =>
|
|
39
|
-
const spawner =
|
|
39
|
+
const run = (hub, sendQueue) => tsplus_module_5.flatMap(tsplus_module_8.make(), deferred => tsplus_module_5.flatMap(takeConfig(config.shardCount ?? gateway.shards), take => {
|
|
40
|
+
const spawner = tsplus_module_5.forever(tsplus_module_5.flatMap(tsplus_module_5.flatMap(tsplus_module_5.tap(tsplus_module_5.map(take, config => ({
|
|
40
41
|
...config,
|
|
41
42
|
url: gateway.url,
|
|
42
43
|
concurrency: gateway.session_start_limit.max_concurrency,
|
|
43
|
-
})), ({ id, concurrency }) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), c => shard.connect([c.id, c.totalCount], hub, sendQueue)), shard =>
|
|
44
|
+
})), ({ id, concurrency }) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), c => shard.connect([c.id, c.totalCount], hub, sendQueue)), shard => tsplus_module_5.fork(tsplus_module_5.catchAllCause(tsplus_module_5.acquireUseRelease(tsplus_module_4.update(currentShards, _ => tsplus_module_9.add(_, shard)), () => shard.run, () => tsplus_module_4.update(currentShards, _ => tsplus_module_9.remove(_, shard))), _ => tsplus_module_8.failCause(deferred, _)))));
|
|
44
45
|
const spawners = tsplus_module_7.map(tsplus_module_7.range(1, gateway.session_start_limit.max_concurrency), () => spawner);
|
|
45
|
-
return
|
|
46
|
+
return tsplus_module_5.all(tsplus_module_5.all(spawners, { concurrency: "unbounded", discard: true }), tsplus_module_6.deferredAwait(deferred), { concurrency: "unbounded", discard: true });
|
|
46
47
|
}));
|
|
47
48
|
return { shards: tsplus_module_4.get(currentShards), run };
|
|
48
49
|
});
|
|
49
50
|
}))))));
|
|
50
|
-
export const Sharder =
|
|
51
|
-
export const LiveSharder =
|
|
51
|
+
export const Sharder = tsplus_module_6.Tag();
|
|
52
|
+
export const LiveSharder = tsplus_module_11.provide(tsplus_module_11.effect(Sharder, make))((tsplus_module_11.merge(LiveShard)(LiveRateLimiter)));
|
|
52
53
|
//# sourceMappingURL=Sharder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WS.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,SAAS,MAAM,eAAe,CAAA;AAErC,eAAO,MAAM,SAAS,eAAW,CAAA;AACjC,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AACxC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAA;AAE/D,qBAAa,cAAc;IAGvB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;IACzC,QAAQ,CAAC,KAAK,CAAC;IAHjB,QAAQ,CAAC,IAAI,oBAAmB;gBAErB,MAAM,EAAE,cAAc,GAAG,OAAO,EAChC,KAAK,CAAC,SAAS;CAE3B;AAED,qBAAa,mBAAmB;IAElB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;IAD1D,QAAQ,CAAC,IAAI,yBAAwB;gBAChB,IAAI,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CAC3D;
|
|
1
|
+
{"version":3,"file":"WS.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,SAAS,MAAM,eAAe,CAAA;AAErC,eAAO,MAAM,SAAS,eAAW,CAAA;AACjC,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AACxC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAA;AAE/D,qBAAa,cAAc;IAGvB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO;IACzC,QAAQ,CAAC,KAAK,CAAC;IAHjB,QAAQ,CAAC,IAAI,oBAAmB;gBAErB,MAAM,EAAE,cAAc,GAAG,OAAO,EAChC,KAAK,CAAC,SAAS;CAE3B;AAED,qBAAa,mBAAmB;IAElB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;IAD1D,QAAQ,CAAC,IAAI,yBAAwB;gBAChB,IAAI,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CAC3D;AA+ED,QAAA,MAAM,IAAI;4BAID,IAAI,MAAM,CAAC,gBACF,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;;;;EAqB7C,CAAA;AAEF,MAAM,WAAW,EAAG,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AAC1D,eAAO,MAAM,EAAE,4CAAY,CAAA;AAC3B,eAAO,MAAM,MAAM,6DAAyB,CAAA"}
|
package/DiscordGateway/WS.js
CHANGED
|
@@ -3,7 +3,9 @@ import * as tsplus_module_2 from "@effect/io/Ref";
|
|
|
3
3
|
import * as tsplus_module_3 from "@effect/io/Runtime";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/data/Duration";
|
|
5
5
|
import * as tsplus_module_5 from "@effect/io/Queue";
|
|
6
|
-
import * as tsplus_module_6 from "
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/Function";
|
|
7
|
+
import * as tsplus_module_7 from "dfx/_common";
|
|
8
|
+
import * as tsplus_module_8 from "@effect/io/Layer";
|
|
7
9
|
import { Log } from "dfx/Log";
|
|
8
10
|
import WebSocket from "isomorphic-ws";
|
|
9
11
|
export const Reconnect = Symbol();
|
|
@@ -35,7 +37,7 @@ const offer = (ws, queue, log) => tsplus_module_1.flatMap(tsplus_module_1.runtim
|
|
|
35
37
|
const run = tsplus_module_3.runFork(runtime);
|
|
36
38
|
ws.addEventListener("message", message => {
|
|
37
39
|
run(tsplus_module_1.zipLeft(queue
|
|
38
|
-
.offer(message.data), log.debug("WS", "offer", message.data)));
|
|
40
|
+
.offer(message.data), log.debug("WS", "offer", message.data), {}));
|
|
39
41
|
});
|
|
40
42
|
ws.addEventListener("error", cause => {
|
|
41
43
|
resume(tsplus_module_1.fail(new WebSocketError("error", cause)));
|
|
@@ -46,14 +48,17 @@ const offer = (ws, queue, log) => tsplus_module_1.flatMap(tsplus_module_1.runtim
|
|
|
46
48
|
}));
|
|
47
49
|
const waitForOpen = (ws, timeout) => tsplus_module_1.timeoutFail(tsplus_module_1.suspend(() => {
|
|
48
50
|
if (ws.readyState === WebSocket.OPEN) {
|
|
49
|
-
return tsplus_module_1.unit
|
|
51
|
+
return tsplus_module_1.unit;
|
|
50
52
|
}
|
|
51
53
|
return tsplus_module_1.async(resume => {
|
|
52
|
-
ws.addEventListener("open", () => resume(tsplus_module_1.unit
|
|
54
|
+
ws.addEventListener("open", () => resume(tsplus_module_1.unit), {
|
|
53
55
|
once: true,
|
|
54
56
|
});
|
|
55
57
|
});
|
|
56
|
-
}),
|
|
58
|
+
}), {
|
|
59
|
+
onTimeout: () => new WebSocketError("open-timeout"),
|
|
60
|
+
duration: timeout,
|
|
61
|
+
});
|
|
57
62
|
const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tsplus_module_1.tap(take, data => log.debug("WS", "send", data)), data => {
|
|
58
63
|
if (data === Reconnect) {
|
|
59
64
|
return tsplus_module_1.failSync(() => {
|
|
@@ -65,13 +70,13 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tspl
|
|
|
65
70
|
ws.send(data);
|
|
66
71
|
});
|
|
67
72
|
}));
|
|
68
|
-
const make = tsplus_module_1.map(Log, log => {
|
|
69
|
-
const connect = (url, takeOutbound, onConnecting = tsplus_module_1.unit
|
|
70
|
-
const run = tsplus_module_1.retryWhile(tsplus_module_1.scoped(tsplus_module_1.flatMap(tsplus_module_1.zipRight(onConnecting, socket(url)), ws => tsplus_module_1.
|
|
73
|
+
const make = tsplus_module_1.map(tsplus_module_1.map(Log, tsplus_module_6.identity), log => {
|
|
74
|
+
const connect = (url, takeOutbound, onConnecting = tsplus_module_1.unit, openTimeout = tsplus_module_4.seconds(3)) => tsplus_module_1.map(tsplus_module_5.unbounded(), queue => {
|
|
75
|
+
const run = tsplus_module_1.retryWhile(tsplus_module_1.scoped(tsplus_module_1.flatMap(tsplus_module_1.zipRight(onConnecting, socket(url)), ws => tsplus_module_1.zipLeft(offer(ws, queue, log), tsplus_module_1.zipRight(waitForOpen(ws, openTimeout), send(ws, takeOutbound, log)), { parallel: true }))), isReconnect);
|
|
71
76
|
return { run, take: queue.take() };
|
|
72
77
|
});
|
|
73
78
|
return { connect };
|
|
74
79
|
});
|
|
75
|
-
export const WS =
|
|
76
|
-
export const LiveWS =
|
|
80
|
+
export const WS = tsplus_module_7.Tag();
|
|
81
|
+
export const LiveWS = tsplus_module_8.effect(WS, make);
|
|
77
82
|
//# sourceMappingURL=WS.js.map
|
package/DiscordGateway/WS.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WS.js","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WS.js","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
|
package/DiscordGateway.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordGateway.d.ts","sourceRoot":"","sources":["src/DiscordGateway.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAsBlE,eAAO,MAAM,IAAI;;;;;6BAOQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC;;EAiBhE,CAAA;AAEF,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AACtE,eAAO,MAAM,cAAc,oEAAwB,CAAA;AACnD,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DiscordGateway.d.ts","sourceRoot":"","sources":["src/DiscordGateway.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAsBlE,eAAO,MAAM,IAAI;;;;;6BAOQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC;;EAiBhE,CAAA;AAEF,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AACtE,eAAO,MAAM,cAAc,oEAAwB,CAAA;AACnD,eAAO,MAAM,kBAAkB,2UACoB,CAAA"}
|
package/DiscordGateway.js
CHANGED
|
@@ -3,17 +3,18 @@ import * as tsplus_module_2 from "@effect/io/Effect";
|
|
|
3
3
|
import * as tsplus_module_3 from "dfx/utils/hub";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/io/Queue";
|
|
5
5
|
import * as tsplus_module_5 from "@effect/io/Hub";
|
|
6
|
-
import * as tsplus_module_6 from "
|
|
7
|
-
import * as tsplus_module_7 from "
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/Function";
|
|
7
|
+
import * as tsplus_module_7 from "dfx/_common";
|
|
8
|
+
import * as tsplus_module_8 from "@effect/io/Layer";
|
|
8
9
|
import { LiveSharder, Sharder } from "./DiscordGateway/Sharder.js";
|
|
9
10
|
const fromDispatchFactory = (source) => (event) => tsplus_module_1.map(tsplus_module_1.filter(source, p => p.t === event), p => p.d);
|
|
10
11
|
const handleDispatchFactory = (hub) => (event, handle) => tsplus_module_3.subscribeForEachPar(hub, _ => {
|
|
11
12
|
if (_.t === event) {
|
|
12
13
|
return handle(_.d);
|
|
13
14
|
}
|
|
14
|
-
return tsplus_module_2.unit
|
|
15
|
+
return tsplus_module_2.unit;
|
|
15
16
|
});
|
|
16
|
-
export const make = tsplus_module_2.flatMap(Sharder, sharder => tsplus_module_2.flatMap(tsplus_module_5.unbounded(), hub => tsplus_module_2.map(tsplus_module_4.unbounded(), sendQueue => {
|
|
17
|
+
export const make = tsplus_module_2.flatMap(tsplus_module_2.map(Sharder, tsplus_module_6.identity), sharder => tsplus_module_2.flatMap(tsplus_module_5.unbounded(), hub => tsplus_module_2.map(tsplus_module_4.unbounded(), sendQueue => {
|
|
17
18
|
const send = (payload) => sendQueue.offer(payload);
|
|
18
19
|
const dispatch = tsplus_module_1.fromHub(hub);
|
|
19
20
|
const fromDispatch = fromDispatchFactory(dispatch);
|
|
@@ -28,6 +29,6 @@ export const make = tsplus_module_2.flatMap(Sharder, sharder => tsplus_module_2.
|
|
|
28
29
|
shards: sharder.shards,
|
|
29
30
|
};
|
|
30
31
|
})));
|
|
31
|
-
export const DiscordGateway =
|
|
32
|
-
export const LiveDiscordGateway =
|
|
32
|
+
export const DiscordGateway = tsplus_module_7.Tag();
|
|
33
|
+
export const LiveDiscordGateway = tsplus_module_8.provide(tsplus_module_8.effect(DiscordGateway, make))(LiveSharder);
|
|
33
34
|
//# sourceMappingURL=DiscordGateway.js.map
|
package/DiscordGateway.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordGateway.js","sourceRoot":"","sources":["src/DiscordGateway.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DiscordGateway.js","sourceRoot":"","sources":["src/DiscordGateway.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAElE,MAAM,mBAAmB,GACvB,CAAO,MAAkE,EAAE,EAAE,CAC7E,CACE,KAAQ,EACgC,EAAE,CAC1C,oBAAA,uBAAA,MAAM,EAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAS,CAAC,CAAA;AAE3D,MAAM,qBAAqB,GACzB,CAAC,GAAsD,EAAE,EAAE,CAC3D,CACE,KAAQ,EACR,MAA4D,EACvC,EAAE,CACvB,oCAAA,GAAG,EAAqB,CAAC,CAAC,EAAE;IAC1B,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;QACjB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAQ,CAAC,CAAA;KAC1B;IACD,4BAAkB;AACpB,CAAC,CAAC,CAAA;AAEN,MAAM,CAAC,MAAM,IAAI,2BACG,oBAAA,OAAO,kBAAY,QAAQ,CAAC,EAAxC,OAAO,4BACC,2BAA6D,EAArE,GAAG,wBAGP,2BAA4D,EADxD,SAAS;IAGf,MAAM,IAAI,GAAG,CAAC,OAAkD,EAAE,EAAE,CAClE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE1B,MAAM,QAAQ,GAAG,wBAAe,GAAG,CAAC,CAAA;IACpC,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAClD,MAAM,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAEjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAEvC,OAAO;QACL,GAAG;QACH,QAAQ;QACR,YAAY;QACZ,cAAc;QACd,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;KACd,CAAA;IACV,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,2BACd,uBAAa,cAAc,EAAE,IAAI,CAAC,EAAjD,WAAW,CAAsC,CAAA"}
|
package/DiscordREST/utils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import * as Option from "@effect/data/Option";
|
|
1
2
|
export declare const routeFromConfig: (path: string, method: string) => string;
|
|
2
|
-
export declare const numberHeader: (headers: Headers) => (key: string) =>
|
|
3
|
-
export declare const retryAfter: (headers: Headers) =>
|
|
4
|
-
export declare const rateLimitFromHeaders: (headers: Headers) =>
|
|
3
|
+
export declare const numberHeader: (headers: Headers) => (key: string) => Option.Option<number>;
|
|
4
|
+
export declare const retryAfter: (headers: Headers) => Option.Option<import("../_common.js").Duration>;
|
|
5
|
+
export declare const rateLimitFromHeaders: (headers: Headers) => Option.Option<{
|
|
5
6
|
bucket: string;
|
|
6
7
|
retryAfter: import("../_common.js").Duration;
|
|
7
8
|
limit: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/DiscordREST/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/DiscordREST/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAI7C,eAAO,MAAM,eAAe,SAAU,MAAM,UAAU,MAAM,WAW3D,CAAA;AAED,eAAO,MAAM,YAAY,YAAa,OAAO,WAAW,MAAM,0BAGnC,CAAA;AAE3B,eAAO,MAAM,UAAU,YAAa,OAAO,oDAGjB,CAAA;AAE1B,eAAO,MAAM,oBAAoB,YAAa,OAAO;;;;;EAMjD,CAAA;AACJ,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
package/DiscordREST/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "@effect/data/
|
|
2
|
-
import * as
|
|
1
|
+
import * as tsplus_module_1 from "@effect/data/Duration";
|
|
2
|
+
import * as Option from "@effect/data/Option";
|
|
3
3
|
const majorResources = ["channels", "guilds", "webhooks"];
|
|
4
4
|
export const routeFromConfig = (path, method) => {
|
|
5
5
|
// Only keep major ID's
|
|
@@ -10,10 +10,10 @@ export const routeFromConfig = (path, method) => {
|
|
|
10
10
|
.replace(/\/reactions\/(.*)/, "/reactions");
|
|
11
11
|
return `${method}-${routeURL}`;
|
|
12
12
|
};
|
|
13
|
-
export const numberHeader = (headers) => (key) =>
|
|
14
|
-
export const retryAfter = (headers) =>
|
|
15
|
-
export const rateLimitFromHeaders = (headers) =>
|
|
16
|
-
bucket:
|
|
13
|
+
export const numberHeader = (headers) => (key) => Option.filter(Option.map(Option.fromNullable(headers.get(key)), parseFloat), n => !isNaN(n));
|
|
14
|
+
export const retryAfter = (headers) => Option.map(Option.orElse(numberHeader(headers)("x-ratelimit-reset-after"), () => numberHeader(headers)("retry-after")), tsplus_module_1.seconds);
|
|
15
|
+
export const rateLimitFromHeaders = (headers) => Option.all({
|
|
16
|
+
bucket: Option.fromNullable(headers.get("x-ratelimit-bucket")),
|
|
17
17
|
retryAfter: retryAfter(headers),
|
|
18
18
|
limit: numberHeader(headers)("x-ratelimit-limit"),
|
|
19
19
|
remaining: numberHeader(headers)("x-ratelimit-remaining"),
|
package/DiscordREST/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/DiscordREST/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/DiscordREST/utils.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;IAC9D,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,AAlBU,MAAM,QAkBhB,AAlBU,MAAM,KAkBhB,AAlBU,MAAM,cAkBG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAC7B,UAAU,CAAC,EACR,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CAC7C,AAvBU,MAAM,KAuBhB,AAvBU,MAAM,QAuBhB,YAAY,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,EACtC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,0BAC7B,CAAA;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC;IACT,MAAM,EAAE,AA7BA,MAAM,cA6Ba,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/DiscordREST.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordREST.d.ts","sourceRoot":"","sources":["src/DiscordREST.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,wBAAwB,CAAA;AAMvE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAGL,cAAc,EAEf,MAAM,gBAAgB,CAAA;AAGvB,qBAAa,gBAAgB;IAEf,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe;IAAE,QAAQ,CAAC,IAAI,CAAC;IADhE,QAAQ,CAAC,IAAI,sBAAqB;gBACb,KAAK,EAAE,IAAI,CAAC,eAAe,EAAW,IAAI,CAAC,SAAS;CAC1E;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"DiscordREST.d.ts","sourceRoot":"","sources":["src/DiscordREST.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,wBAAwB,CAAA;AAMvE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAGL,cAAc,EAEf,MAAM,gBAAgB,CAAA;AAGvB,qBAAa,gBAAgB;IAEf,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe;IAAE,QAAQ,CAAC,IAAI,CAAC;IADhE,QAAQ,CAAC,IAAI,sBAAqB;gBACb,KAAK,EAAE,IAAI,CAAC,eAAe,EAAW,IAAI,CAAC,SAAS;CAC1E;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAsMzD,MAAM,WAAW,WACf,SAAQ,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,EAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,KAClB,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1D;AAED,eAAO,MAAM,WAAW,8DAAqB,CAAA;AAC7C,eAAO,MAAM,eAAe,kIACwB,CAAA"}
|
package/DiscordREST.js
CHANGED
|
@@ -7,7 +7,8 @@ import * as tsplus_module_6 from "@effect/io/Config/Secret";
|
|
|
7
7
|
import * as tsplus_module_7 from "@effect-http/client/Request/Executor";
|
|
8
8
|
import * as tsplus_module_8 from "@effect/data/HashSet";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/io/Ref";
|
|
10
|
-
import * as tsplus_module_10 from "@effect/
|
|
10
|
+
import * as tsplus_module_10 from "@effect/data/Function";
|
|
11
|
+
import * as tsplus_module_11 from "@effect/io/Layer";
|
|
11
12
|
import * as Http from "@effect-http/client";
|
|
12
13
|
import { millis } from "@effect/data/Duration";
|
|
13
14
|
import { DiscordConfig } from "./DiscordConfig.js";
|
|
@@ -25,27 +26,30 @@ export class DiscordRESTError {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
export { ResponseDecodeError } from "@effect-http/client";
|
|
28
|
-
const make = tsplus_module_3.flatMap(DiscordConfig, ({ token, rest }) => tsplus_module_3.flatMap(Http.HttpRequestExecutor, http => tsplus_module_3.flatMap(Log, log => tsplus_module_3.flatMap(RateLimitStore, store => tsplus_module_3.flatMap(RateLimiter, ({ maybeWait }) => {
|
|
29
|
+
const make = tsplus_module_3.flatMap(tsplus_module_3.map(DiscordConfig, tsplus_module_10.identity), ({ token, rest }) => tsplus_module_3.flatMap(tsplus_module_3.map(Http.HttpRequestExecutor, tsplus_module_10.identity), http => tsplus_module_3.flatMap(tsplus_module_3.map(Log, tsplus_module_10.identity), log => tsplus_module_3.flatMap(tsplus_module_3.map(RateLimitStore, tsplus_module_10.identity), store => tsplus_module_3.flatMap(tsplus_module_3.map(RateLimiter, tsplus_module_10.identity), ({ maybeWait }) => {
|
|
29
30
|
const globalRateLimit = maybeWait("dfx.rest.global", rest.globalRateLimit.window, rest.globalRateLimit.limit);
|
|
30
31
|
return tsplus_module_3.map(tsplus_module_9.make(tsplus_module_8.empty()), badRoutesRef => {
|
|
31
|
-
const addBadRoute = (route) => tsplus_module_3.
|
|
32
|
+
const addBadRoute = (route) => tsplus_module_3.all([
|
|
32
33
|
log.info("DiscordREST", "addBadRoute", route),
|
|
33
34
|
tsplus_module_9.update(badRoutesRef, s => tsplus_module_8.add(s, route)),
|
|
34
|
-
store.incrementCounter("dfx.rest.invalid", tsplus_module_4.minutes(10)
|
|
35
|
-
]);
|
|
35
|
+
store.incrementCounter("dfx.rest.invalid", tsplus_module_4.toMillis(tsplus_module_4.minutes(10)), 10000),
|
|
36
|
+
], { discard: true, concurrency: "unbounded" });
|
|
36
37
|
const isBadRoute = (route) => tsplus_module_3.map(tsplus_module_9.get(badRoutesRef), s => tsplus_module_8.has(s, route));
|
|
37
38
|
const removeBadRoute = (route) => tsplus_module_9.update(badRoutesRef, s => tsplus_module_8.remove(s, route));
|
|
38
39
|
const invalidRateLimit = (route) => tsplus_module_3.asUnit(tsplus_module_3.tap(isBadRoute(route), invalid => invalid
|
|
39
40
|
? maybeWait("dfx.rest.invalid", tsplus_module_4.minutes(10), 10000)
|
|
40
|
-
: tsplus_module_3.unit
|
|
41
|
+
: tsplus_module_3.unit));
|
|
41
42
|
// Request rate limiting
|
|
42
43
|
const requestRateLimit = (path, request) => (() => {
|
|
43
44
|
const route = routeFromConfig(path, request.method);
|
|
44
45
|
return tsplus_module_3.flatMap(store.getBucketForRoute(route), maybeBucket => {
|
|
45
|
-
const effect = tsplus_module_5.match(maybeBucket,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
const effect = tsplus_module_5.match(maybeBucket, {
|
|
47
|
+
onNone: () => invalidRateLimit(route),
|
|
48
|
+
onSome: bucket => tsplus_module_3.flatMap(invalidRateLimit(route), () => {
|
|
49
|
+
const resetAfter = millis(bucket.resetAfter);
|
|
50
|
+
return tsplus_module_3.map(maybeWait(`dfx.rest.${bucket.key}`, resetAfter, bucket.limit), () => void 0);
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
49
53
|
return tsplus_module_3.map(effect, () => void 0);
|
|
50
54
|
});
|
|
51
55
|
})();
|
|
@@ -61,11 +65,11 @@ const make = tsplus_module_3.flatMap(DiscordConfig, ({ token, rest }) => tsplus_
|
|
|
61
65
|
if (!hasBucket || limit - 1 === remaining) {
|
|
62
66
|
effectsToRun.push(store.removeCounter(`dfx.rest.?.${route}`), store.putBucket({
|
|
63
67
|
key: bucket,
|
|
64
|
-
resetAfter: retryAfter
|
|
68
|
+
resetAfter: tsplus_module_4.toMillis(retryAfter),
|
|
65
69
|
limit: !hasBucket && remaining > 0 ? remaining : limit,
|
|
66
70
|
}));
|
|
67
71
|
}
|
|
68
|
-
return tsplus_module_3.map(tsplus_module_3.
|
|
72
|
+
return tsplus_module_3.map(tsplus_module_3.all(effectsToRun, { concurrency: "unbounded", discard: true }), () => void 0);
|
|
69
73
|
});
|
|
70
74
|
});
|
|
71
75
|
})());
|
|
@@ -82,18 +86,18 @@ const make = tsplus_module_3.flatMap(DiscordConfig, ({ token, rest }) => tsplus_
|
|
|
82
86
|
const response = e.error.response;
|
|
83
87
|
switch (e.error.status) {
|
|
84
88
|
case 403:
|
|
85
|
-
return tsplus_module_3.flatMap(tsplus_module_3.
|
|
89
|
+
return tsplus_module_3.flatMap(tsplus_module_3.all([
|
|
86
90
|
log.info("DiscordREST", "403", request.url),
|
|
87
91
|
addBadRoute(routeFromConfig(request.url, request.method)),
|
|
88
92
|
updateBuckets(request, response),
|
|
89
|
-
]), () => tsplus_module_3.fail(e));
|
|
93
|
+
], { concurrency: "unbounded", discard: true }), () => tsplus_module_3.fail(e));
|
|
90
94
|
case 429:
|
|
91
|
-
return tsplus_module_3.flatMap(tsplus_module_3.
|
|
95
|
+
return tsplus_module_3.flatMap(tsplus_module_3.all([
|
|
92
96
|
log.info("DiscordREST", "429", request.url),
|
|
93
97
|
addBadRoute(routeFromConfig(request.url, request.method)),
|
|
94
98
|
updateBuckets(request, response),
|
|
95
99
|
tsplus_module_3.sleep(tsplus_module_5.getOrElse(retryAfter(response.headers), () => tsplus_module_4.seconds(5))),
|
|
96
|
-
]), () => executor(request));
|
|
100
|
+
], { concurrency: "unbounded", discard: true }), () => executor(request));
|
|
97
101
|
}
|
|
98
102
|
return tsplus_module_3.fail(e);
|
|
99
103
|
});
|
|
@@ -122,5 +126,5 @@ const make = tsplus_module_3.flatMap(DiscordConfig, ({ token, rest }) => tsplus_
|
|
|
122
126
|
});
|
|
123
127
|
})))));
|
|
124
128
|
export const DiscordREST = tsplus_module_2.Tag();
|
|
125
|
-
export const LiveDiscordREST =
|
|
129
|
+
export const LiveDiscordREST = tsplus_module_11.provide(tsplus_module_11.effect(DiscordREST, make))(LiveRateLimiter);
|
|
126
130
|
//# sourceMappingURL=DiscordREST.js.map
|
package/DiscordREST.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordREST.js","sourceRoot":"","sources":["src/DiscordREST.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DiscordREST.js","sourceRoot":"","sources":["src/DiscordREST.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,11 @@ export declare const findSubCommand: (name: string) => (interaction: Discord.App
|
|
|
11
11
|
/**
|
|
12
12
|
* If the sub-command exists return `true`, else `false`.
|
|
13
13
|
*/
|
|
14
|
-
export declare const isSubCommand: (name: string) => (
|
|
14
|
+
export declare const isSubCommand: (name: string) => (_: Discord.ApplicationCommandDatum) => boolean;
|
|
15
15
|
/**
|
|
16
16
|
* Maybe get the options for a sub-command
|
|
17
17
|
*/
|
|
18
|
-
export declare const subCommandOptions: (name: string) => (
|
|
18
|
+
export declare const subCommandOptions: (name: string) => (_: Discord.ApplicationCommandDatum) => Maybe<import("../types.js").ApplicationCommandInteractionDataOption[]>;
|
|
19
19
|
/**
|
|
20
20
|
* A lens for accessing nested options in a interaction.
|
|
21
21
|
*/
|
|
@@ -27,19 +27,19 @@ export declare const transformOptions: (options: Discord.ApplicationCommandInter
|
|
|
27
27
|
/**
|
|
28
28
|
* Return the interaction options as a name / value map.
|
|
29
29
|
*/
|
|
30
|
-
export declare const optionsMap: (data: Pick<
|
|
30
|
+
export declare const optionsMap: (data: Pick<Discord.ApplicationCommandDatum, "options">) => import("../_common.js").HashMap<string, string | undefined>;
|
|
31
31
|
/**
|
|
32
32
|
* Try find a matching option from the interaction.
|
|
33
33
|
*/
|
|
34
|
-
export declare const getOption: (name: string) => (data: Pick<
|
|
34
|
+
export declare const getOption: (name: string) => (data: Pick<Discord.ApplicationCommandDatum, "options">) => Maybe<import("../types.js").ApplicationCommandInteractionDataOption>;
|
|
35
35
|
/**
|
|
36
36
|
* Try find a matching option from the interaction.
|
|
37
37
|
*/
|
|
38
|
-
export declare const focusedOption: (data: Pick<
|
|
38
|
+
export declare const focusedOption: (data: Pick<Discord.ApplicationCommandDatum, "options">) => Maybe<import("../types.js").ApplicationCommandInteractionDataOption>;
|
|
39
39
|
/**
|
|
40
40
|
* Try find a matching option value from the interaction.
|
|
41
41
|
*/
|
|
42
|
-
export declare const optionValue: (name: string) => (data: Pick<
|
|
42
|
+
export declare const optionValue: (name: string) => (data: Pick<Discord.ApplicationCommandDatum, "options">) => Maybe<string>;
|
|
43
43
|
/**
|
|
44
44
|
* Try extract resolved data
|
|
45
45
|
*/
|
|
@@ -59,7 +59,7 @@ export declare const components: (a: Discord.ModalSubmitDatum) => Discord.Compon
|
|
|
59
59
|
/**
|
|
60
60
|
* A lens for accessing the components in a interaction.
|
|
61
61
|
*/
|
|
62
|
-
export declare const componentsWithValue: (
|
|
62
|
+
export declare const componentsWithValue: (data: Discord.ModalSubmitDatum) => import("../types.js").Component[];
|
|
63
63
|
/**
|
|
64
64
|
* Return the interaction components as an id / value map.
|
|
65
65
|
*/
|
|
@@ -67,15 +67,15 @@ export declare const transformComponents: (options: Discord.Component[]) => impo
|
|
|
67
67
|
/**
|
|
68
68
|
* Return the interaction components as an id / value map.
|
|
69
69
|
*/
|
|
70
|
-
export declare const componentsMap: (
|
|
70
|
+
export declare const componentsMap: (data: Discord.ModalSubmitDatum) => import("../_common.js").HashMap<string, string | undefined>;
|
|
71
71
|
/**
|
|
72
72
|
* Try find a matching component from the interaction.
|
|
73
73
|
*/
|
|
74
|
-
export declare const getComponent: (id: string) => (
|
|
74
|
+
export declare const getComponent: (id: string) => (data: Discord.ModalSubmitDatum) => Maybe<import("../types.js").Component>;
|
|
75
75
|
/**
|
|
76
76
|
* Try find a matching component value from the interaction.
|
|
77
77
|
*/
|
|
78
|
-
export declare const componentValue: (id: string) => (
|
|
78
|
+
export declare const componentValue: (id: string) => (data: Discord.ModalSubmitDatum) => Maybe<string>;
|
|
79
79
|
export type InteractionResponse = {
|
|
80
80
|
type: Discord.InteractionCallbackType.CHANNEL_MESSAGE_WITH_SOURCE;
|
|
81
81
|
data: Discord.InteractionCallbackMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/Helpers/interactions.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/Helpers/interactions.ts"],"names":[],"mappings":"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"}
|