dfx 0.45.4 → 0.45.5
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Discord, Hub } from "dfx/_common";
|
|
1
|
+
import { Maybe, Schedule, Effect, Discord, Hub } from "dfx/_common";
|
|
2
2
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
3
3
|
import { DiscordREST } from "dfx/DiscordREST";
|
|
4
4
|
import { RateLimiter } from "../RateLimit.js";
|
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "
|
|
2
|
-
import * as tsplus_module_2 from "@effect/
|
|
3
|
-
import * as tsplus_module_3 from "@effect/
|
|
4
|
-
import * as tsplus_module_4 from "
|
|
5
|
-
import * as tsplus_module_5 from "@effect/io/
|
|
6
|
-
import * as tsplus_module_6 from "@effect/data/
|
|
7
|
-
import * as tsplus_module_7 from "@effect/
|
|
8
|
-
import * as tsplus_module_8 from "@effect/io/
|
|
1
|
+
import * as tsplus_module_1 from "@effect/data/Option";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/data/Duration";
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Schedule";
|
|
4
|
+
import * as tsplus_module_4 from "dfx/_common";
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Effect";
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/Chunk";
|
|
7
|
+
import * as tsplus_module_7 from "@effect/io/Deferred";
|
|
8
|
+
import * as tsplus_module_8 from "@effect/io/Ref";
|
|
9
|
+
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
9
10
|
import { millis } from "@effect/data/Duration";
|
|
10
11
|
import { DiscordConfig } from "dfx/DiscordConfig";
|
|
11
12
|
import { DiscordREST } from "dfx/DiscordREST";
|
|
12
13
|
import { LiveRateLimiter, RateLimiter } from "../RateLimit.js";
|
|
13
14
|
import { LiveShard, Shard } from "./Shard.js";
|
|
14
15
|
import { ShardStore } from "./ShardStore.js";
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
const claimRepeatPolicy = tsplus_module_3.passthrough(tsplus_module_3.whileInput(tsplus_module_3.fixed(tsplus_module_2.minutes(3)), (_) => tsplus_module_1.isNone(_)));
|
|
17
|
+
const make = tsplus_module_5.flatMap(ShardStore, store => tsplus_module_5.flatMap(DiscordREST, rest => tsplus_module_5.flatMap(DiscordConfig, ({ gateway: config }) => tsplus_module_5.flatMap(RateLimiter, limiter => tsplus_module_5.flatMap(Shard, shard => {
|
|
18
|
+
const takeConfig = (totalCount) => tsplus_module_5.map(tsplus_module_8.make(0), currentCount => {
|
|
19
|
+
const claimId = (sharderCount) => tsplus_module_5.map(tsplus_module_5.repeat(store
|
|
18
20
|
.claimId({
|
|
19
21
|
totalCount,
|
|
20
22
|
sharderCount,
|
|
21
|
-
}),
|
|
22
|
-
return
|
|
23
|
+
}), claimRepeatPolicy), _ => _.value);
|
|
24
|
+
return tsplus_module_5.map(tsplus_module_5.flatMap(tsplus_module_8.getAndUpdate(currentCount, _ => _ + 1), claimId), id => ({ id, totalCount }));
|
|
23
25
|
});
|
|
24
|
-
return
|
|
25
|
-
.getGatewayBot(), r => r.json), () =>
|
|
26
|
+
return tsplus_module_5.map(tsplus_module_5.catchAll(tsplus_module_5.flatMap(rest
|
|
27
|
+
.getGatewayBot(), r => r.json), () => tsplus_module_5.succeed({
|
|
26
28
|
url: "wss://gateway.discord.gg/",
|
|
27
29
|
shards: 1,
|
|
28
30
|
session_start_limit: {
|
|
@@ -32,18 +34,18 @@ const make = tsplus_module_2.flatMap(ShardStore, store => tsplus_module_2.flatMa
|
|
|
32
34
|
max_concurrency: 1,
|
|
33
35
|
},
|
|
34
36
|
})), gateway => {
|
|
35
|
-
const run = (hub) =>
|
|
36
|
-
const spawner =
|
|
37
|
+
const run = (hub) => tsplus_module_5.flatMap(tsplus_module_7.make(), deferred => tsplus_module_5.flatMap(takeConfig(config.shardCount ?? gateway.shards), take => {
|
|
38
|
+
const spawner = tsplus_module_5.forever(tsplus_module_5.flatMap(tsplus_module_5.flatMap(tsplus_module_5.tap(tsplus_module_5.map(take, config => ({
|
|
37
39
|
...config,
|
|
38
40
|
url: gateway.url,
|
|
39
41
|
concurrency: gateway.session_start_limit.max_concurrency,
|
|
40
|
-
})), ({ id, concurrency }) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), c => shard.connect([c.id, c.totalCount], hub)), shard =>
|
|
41
|
-
const spawners =
|
|
42
|
-
return
|
|
42
|
+
})), ({ id, concurrency }) => limiter.maybeWait(`dfx.sharder.${id % concurrency}`, millis(config.identifyRateLimit[0]), config.identifyRateLimit[1])), c => shard.connect([c.id, c.totalCount], hub)), shard => tsplus_module_5.fork(tsplus_module_5.catchAllCause(shard.run, _ => tsplus_module_7.failCause(deferred, _)))));
|
|
43
|
+
const spawners = tsplus_module_6.map(tsplus_module_6.range(1, gateway.session_start_limit.max_concurrency), () => spawner);
|
|
44
|
+
return tsplus_module_5.zipParLeft(tsplus_module_5.allParDiscard(spawners), tsplus_module_4.deferredAwait(deferred));
|
|
43
45
|
}));
|
|
44
46
|
return { run };
|
|
45
47
|
});
|
|
46
48
|
})))));
|
|
47
|
-
export const Sharder =
|
|
48
|
-
export const LiveSharder =
|
|
49
|
+
export const Sharder = tsplus_module_4.Tag();
|
|
50
|
+
export const LiveSharder = tsplus_module_9.provide(tsplus_module_5.toLayer(make, Sharder))((tsplus_module_9.merge(LiveShard)(LiveRateLimiter)));
|
|
49
51
|
//# 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.45.
|
|
3
|
+
"version": "0.45.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"ws": "^8.13.0"
|
|
49
49
|
},
|
|
50
50
|
"sideEffects": false,
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "bf1e0d84f67cfc5cd65c9c61c554b17e5552ba32"
|
|
52
52
|
}
|
|
@@ -5,6 +5,11 @@ import { LiveRateLimiter, RateLimiter } from "../RateLimit.js"
|
|
|
5
5
|
import { LiveShard, Shard } from "./Shard.js"
|
|
6
6
|
import { ShardStore } from "./ShardStore.js"
|
|
7
7
|
import { WebSocketCloseError, WebSocketError } from "./WS.js"
|
|
8
|
+
import { Some } from "@effect/data/Option"
|
|
9
|
+
|
|
10
|
+
const claimRepeatPolicy = Schedule.fixed(Duration.minutes(3)).whileInput(
|
|
11
|
+
(_: Maybe<number>) => _.isNone(),
|
|
12
|
+
).passthrough as Schedule<never, Maybe<number>, Some<number>>
|
|
8
13
|
|
|
9
14
|
const make = Do($ => {
|
|
10
15
|
const store = $(ShardStore)
|
|
@@ -23,12 +28,8 @@ const make = Do($ => {
|
|
|
23
28
|
totalCount,
|
|
24
29
|
sharderCount,
|
|
25
30
|
})
|
|
26
|
-
.
|
|
27
|
-
|
|
28
|
-
() => claimId(sharderCount).delay(Duration.minutes(3)),
|
|
29
|
-
id => Effect.succeed(id),
|
|
30
|
-
),
|
|
31
|
-
)
|
|
31
|
+
.repeat(claimRepeatPolicy)
|
|
32
|
+
.map(_ => _.value)
|
|
32
33
|
|
|
33
34
|
return currentCount
|
|
34
35
|
.getAndUpdate(_ => _ + 1)
|
package/src/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.45.
|
|
3
|
+
"version": "0.45.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"ws": "^8.13.0"
|
|
49
49
|
},
|
|
50
50
|
"sideEffects": false,
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "bf1e0d84f67cfc5cd65c9c61c554b17e5552ba32"
|
|
52
52
|
}
|