dfx 0.49.0 → 0.50.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.
@@ -1,10 +1,11 @@
1
1
  import { Hub, Discord, Dequeue, Effect } from "dfx/_common";
2
2
  import { DiscordConfig } from "dfx/DiscordConfig";
3
3
  import { RateLimiter } from "dfx/RateLimit";
4
- import { DiscordWS } from "./DiscordWS.js";
4
+ import { DiscordWS, Message } from "./DiscordWS.js";
5
5
  import { Log } from "dfx/Log";
6
6
  export declare const make: import("@effect/io/Effect").Effect<DiscordConfig | Log | RateLimiter | DiscordWS, never, {
7
7
  readonly connect: (shard: [id: number, count: number], hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>, sendQueue: Dequeue<Discord.GatewayPayload<Discord.SendEvent>>) => import("@effect/io/Effect").Effect<never, never, {
8
+ readonly send: (p: Message) => import("@effect/io/Effect").Effect<never, never, boolean>;
8
9
  readonly run: import("@effect/io/Effect").Effect<never, import("./WS.js").WebSocketError | import("./WS.js").WebSocketCloseError, never>;
9
10
  }>;
10
11
  }>;
@@ -12,4 +13,6 @@ export interface Shard extends Effect.Success<typeof make> {
12
13
  }
13
14
  export declare const Shard: import("@effect/data/Context").Tag<Shard, Shard>;
14
15
  export declare const LiveShard: import("@effect-http/client/_common").Layer<DiscordConfig | Log | import("dfx/RateLimit").RateLimitStore | import("./DiscordWS.js").DiscordWSCodec, never, Shard>;
16
+ export interface RunningShard extends Effect.Success<ReturnType<Shard["connect"]>> {
17
+ }
15
18
  //# sourceMappingURL=Shard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAmB,WAAW,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,SAAS,EAA0B,MAAM,gBAAgB,CAAA;AAMlE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAQ7B,eAAO,MAAM,IAAI;8BAON,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAC7B,IAAI,QAAQ,cAAc,CAAC,QAAQ,YAAY,CAAC,CAAC,aAC3C,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC,CAAC;;;EAiJ/D,CAAA;AAEF,MAAM,WAAW,KAAM,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AAC7D,eAAO,MAAM,KAAK,kDAAe,CAAA;AACjC,eAAO,MAAM,SAAS,mKACoC,CAAA"}
1
+ {"version":3,"file":"Shard.d.ts","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAmB,WAAW,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAiB,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAMlE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAQ7B,eAAO,MAAM,IAAI;8BAON,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAC7B,IAAI,QAAQ,cAAc,CAAC,QAAQ,YAAY,CAAC,CAAC,aAC3C,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC,CAAC;2BAc1C,OAAO;;;EAmI5B,CAAA;AAEF,MAAM,WAAW,KAAM,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AAC7D,eAAO,MAAM,KAAK,kDAAe,CAAA;AACjC,eAAO,MAAM,SAAS,mKACoC,CAAA;AAE1D,MAAM,WAAW,YACf,SAAQ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;CAAG"}
@@ -71,7 +71,7 @@ export const make = tsplus_module_1.flatMap(DiscordConfig, ({ token, gateway })
71
71
  });
72
72
  const drainSendQueue = tsplus_module_1.forever(tsplus_module_1.tap(sendQueue.take(), send));
73
73
  const run = tsplus_module_1.zipParLeft(tsplus_module_1.zipParLeft(tsplus_module_1.zipParLeft(tsplus_module_1.forever(tsplus_module_1.flatMap(socket.take, onPayload)), heartbeats), drainSendQueue), socket.run);
74
- return { run };
74
+ return { send, run };
75
75
  }));
76
76
  })));
77
77
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAW,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAQ7B,MAAM,CAAC,MAAM,IAAI,2BACc,aAAa,GAApC,EAAE,KAAK,EAAE,OAAO,EAAE,6BACN,WAAW,EAAvB,OAAO,4BACC,SAAS,EAAjB,GAAG,wBACK,GAAG,EAAX,GAAG;IAET,MAAM,OAAO,GAAG,CACd,KAAkC,EAClC,GAAsD,EACtD,SAA6D,EAC7D,EAAE,yBAEwB,2BAA0B,EAA5C,aAAa,4BACI,2BAA0B,EAA3C,YAAY,4BACF,8CAA0B,EAApC,KAAK;QACX,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAE,EAAE,CAC5B,wBAAA,oBAAA,KAAK,EAAK,CAAC,CAAC,EAAS,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,oBAAA,aAAa;aAC3B,IAAI,EAAE,EACF,GAAG,EAAE,CACR,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,wBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAC9D,CAAA;QAEH,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAC1B,4CAAA,KAAK,GAAa,CAAC,CAAC,EAAE,CACpB,CAAC,4BAAoB;YACnB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1B,CAAA;QAEH,MAAM,aAAa,GAAG,CAAC,CAAU,EAAE,EAAE,CACnC,4CAAA,KAAK,GAAa,CAAC,CAAC,EAAE,CACpB,CAAC,6BAAqB;YACpB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,wBAAe,KAAK,CAAC,CAC1B,CAAA;QAEH,MAAM,YAAY,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE3D,MAAM,MAAM,0BAAG,oBAAA,yBAAA,QAAQ,yBAAiB,EAC5B,YAAY,CAAC,OAAO,EAAE,CAAC,EAC5B,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAO,CAAA;QAE7C,MAAM,YAAY,GAAG,yBAAA,oBAAA,aAAa;aAC/B,OAAO,EAAE,EACL,CAAC,CAAC,EAAE,CACP,YAAY,CAAC,QAAQ,CACnB,uBAAA,CAAC,EACC,GAAG,CAAC,EAAE,CACJ,GAAG,KAAK,SAAS;YACjB,GAAG,CAAC,EAAE,2CAAmC;YACzC,GAAG,CAAC,EAAE,yCAAiC;YACvC,GAAG,CAAC,EAAE,4CAAoC,CAC7C,CACF,CACF,EACS,QAAQ,0BAAkB,CAAC,CAAA;uCAEtB,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAlD,MAAM,4BAGV,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACf,oBAAA,uBAEI,CAAC,CAAC,EAAmD,EAAE,CACrD,CAAC,CAAC,EAAE,2CAAmC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAHhE,qBAAW,CAAC,CAAC,CAIV,EACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAClB,GARG,CAAC,WAAW,EAAE,iBAAiB,CAAC,6BAWpC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,6BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GADtC,CAAC,cAAc,EAAE,oBAAoB,CAAC;YAG5C,MAAM,cAAc,GAAG,CAAC,CAAyB,EAAE,EAAE,CACnD,sBAAA,oBAAA,uBAEI,CAAC,CAAC,EAAmD,EAAE,CACrD,CAAC,CAAC,EAAE,2CAAmC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAHhE,qBAAW,CAAC,CAAC,CAIV,EACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAEb,GAAG,EAAE,CAAC,sBAAa,EACnB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CACzC,CAAA;2CAEY,2BAAyC,EAApD,MAAM,wBACG,2BAAyC,EAAlD,IAAI;gBAEV,aAAa;gBACb,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAChC,MAAM,EACN,IAAI,EACJ,cAAc,EACd,aAAa,CACd,CAAA;gBAED,WAAW;gBACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CACxC;oBACE,KAAK,wBAAE,KAAK,CAAM;oBAClB,KAAK;oBACL,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,EACD,WAAW,EACX,cAAc,CACf,CAAA;gBAED,MAAM,SAAS,GAAG,CAAC,CAAyB,EAAE,EAAE,yBAG1C,uBAAA,uBAAA,iBAAiB,CAAC,CAAC,CAAC,EACV,oBAAoB,CAAC,CAAC,CAAC,CAAC,EACxB,cAAc,CAAC,CAAC,CAAC,CAAC;oBAG9B,IAAI,MAAM,GAAG,sBAAa,CAAA;oBAE1B,QAAQ,CAAC,CAAC,EAAE,EAAE;wBACZ;4BACE,MAAM,GAAG,uBAAA,oBAAA,QAAQ,EACV,YAAY,CAAC,EACV,yBAAA,QAAQ,yBAAiB,EAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;4BAC9D,MAAK;wBACP;4BACE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;4BACtB,MAAK;wBACP;4BACE,MAAM,GAAG,oBAAA,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,EAAK,IAAI,CAAC,CAAA;4BAC7D,MAAK;wBACP;4BACE,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gCACxC,MAAM,GAAG,yBAAA,MAAM,EAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;6BACzC;iCAAM;gCACL,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;6BACxB;4BACD,MAAK;qBACR;+CAEC,MAAM;kBACR,CAAA;gBAEJ,MAAM,cAAc,2BAAG,oBAAA,SAAS,CAAC,IAAI,EAAE,EAAK,IAAI,CAAC,CAAQ,CAAA;gBAEzD,MAAM,GAAG,GAAG,2BAAA,2BAAA,mDAAA,wBAAA,MAAM,CAAC,IAAI,EACZ,SAAS,CAAC,GACC,UAAU,CAAC,EACnB,cAAc,CAAC,EACf,MAAM,CAAC,GAAG,CAAC,CAAA;gBAEzB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAW,CAAA;;;QAC7B,CAAA;IAEJ,OAAO,EAAE,OAAO,EAAW,CAAA;KAC3B,CAAA;AAGF,MAAM,CAAC,MAAM,KAAK,GAAG,gBAAA,GAAG,EAAS,CAAA;AACjC,MAAM,CAAC,MAAM,SAAS,2BACiB,wBAAA,IAAI,EAAS,KAAK,CAAC,EAAxD,uBAAiB,eAAe,EAA/B,aAAa,EAAmB,CAAuB,CAAA"}
@@ -2,10 +2,11 @@ import { Maybe, Schedule, Effect, Discord, Hub, Dequeue } from "dfx/_common";
2
2
  import { DiscordConfig } from "dfx/DiscordConfig";
3
3
  import { DiscordREST } from "dfx/DiscordREST";
4
4
  import { RateLimiter } from "../RateLimit.js";
5
- import { Shard } from "./Shard.js";
5
+ import { RunningShard, Shard } from "./Shard.js";
6
6
  import { ShardStore } from "./ShardStore.js";
7
7
  import { WebSocketCloseError, WebSocketError } from "./WS.js";
8
8
  declare const make: import("@effect/io/Effect").Effect<DiscordREST | DiscordConfig | RateLimiter | Shard | ShardStore, never, {
9
+ readonly shards: import("@effect/io/Effect").Effect<never, never, import("../_common.js").HashSet<RunningShard>>;
9
10
  readonly run: (hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>, sendQueue: Dequeue<Discord.GatewayPayload<Discord.SendEvent>>) => import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
10
11
  }>;
11
12
  export interface Sharder extends Effect.Success<typeof make> {
@@ -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,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAO7D,QAAA,MAAM,IAAI;wBA6CD,IAAI,QAAQ,cAAc,CAAC,QAAQ,YAAY,CAAC,CAAC,aAC3C,QAAQ,QAAQ,cAAc,CAAC,QAAQ,SAAS,CAAC,CAAC;EAyC/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,sNACgC,CAAA"}
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,sNACgC,CAAA"}
@@ -1,12 +1,13 @@
1
1
  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
- 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";
4
+ import * as tsplus_module_4 from "@effect/io/Ref";
5
+ import * as tsplus_module_5 from "dfx/_common";
6
+ import * as tsplus_module_6 from "@effect/io/Effect";
7
+ import * as tsplus_module_7 from "@effect/data/Chunk";
8
+ import * as tsplus_module_8 from "@effect/io/Deferred";
9
+ import * as tsplus_module_9 from "@effect/data/HashSet";
10
+ import * as tsplus_module_10 from "@effect/io/Layer";
10
11
  import { millis } from "@effect/data/Duration";
11
12
  import { DiscordConfig } from "dfx/DiscordConfig";
12
13
  import { DiscordREST } from "dfx/DiscordREST";
@@ -14,17 +15,17 @@ import { LiveRateLimiter, RateLimiter } from "../RateLimit.js";
14
15
  import { LiveShard, Shard } from "./Shard.js";
15
16
  import { ShardStore } from "./ShardStore.js";
16
17
  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
+ const make = tsplus_module_6.flatMap(ShardStore, store => tsplus_module_6.flatMap(DiscordREST, rest => tsplus_module_6.flatMap(DiscordConfig, ({ gateway: config }) => tsplus_module_6.flatMap(RateLimiter, limiter => tsplus_module_6.flatMap(Shard, shard => tsplus_module_6.flatMap(tsplus_module_4.make(tsplus_module_9.empty()), currentShards => {
19
+ const takeConfig = (totalCount) => tsplus_module_6.map(tsplus_module_4.make(0), currentCount => {
20
+ const claimId = (sharderCount) => tsplus_module_6.map(tsplus_module_6.repeat(store
20
21
  .claimId({
21
22
  totalCount,
22
23
  sharderCount,
23
24
  }), claimRepeatPolicy), _ => _.value);
24
- return tsplus_module_5.map(tsplus_module_5.flatMap(tsplus_module_8.getAndUpdate(currentCount, _ => _ + 1), claimId), id => ({ id, totalCount }));
25
+ return tsplus_module_6.map(tsplus_module_6.flatMap(tsplus_module_4.getAndUpdate(currentCount, _ => _ + 1), claimId), id => ({ id, totalCount }));
25
26
  });
26
- return tsplus_module_5.map(tsplus_module_5.catchAll(tsplus_module_5.flatMap(rest
27
- .getGatewayBot(), r => r.json), () => tsplus_module_5.succeed({
27
+ return tsplus_module_6.map(tsplus_module_6.catchAll(tsplus_module_6.flatMap(rest
28
+ .getGatewayBot(), r => r.json), () => tsplus_module_6.succeed({
28
29
  url: "wss://gateway.discord.gg/",
29
30
  shards: 1,
30
31
  session_start_limit: {
@@ -34,18 +35,18 @@ const make = tsplus_module_5.flatMap(ShardStore, store => tsplus_module_5.flatMa
34
35
  max_concurrency: 1,
35
36
  },
36
37
  })), gateway => {
37
- const run = (hub, sendQueue) => 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 => ({
38
+ const run = (hub, sendQueue) => tsplus_module_6.flatMap(tsplus_module_8.make(), deferred => tsplus_module_6.flatMap(takeConfig(config.shardCount ?? gateway.shards), take => {
39
+ const spawner = tsplus_module_6.forever(tsplus_module_6.flatMap(tsplus_module_6.flatMap(tsplus_module_6.tap(tsplus_module_6.map(take, config => ({
39
40
  ...config,
40
41
  url: gateway.url,
41
42
  concurrency: gateway.session_start_limit.max_concurrency,
42
- })), ({ 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(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
+ })), ({ 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_6.fork(tsplus_module_6.catchAllCause(tsplus_module_6.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
+ const spawners = tsplus_module_7.map(tsplus_module_7.range(1, gateway.session_start_limit.max_concurrency), () => spawner);
45
+ return tsplus_module_6.zipParLeft(tsplus_module_6.allParDiscard(spawners), tsplus_module_5.deferredAwait(deferred));
45
46
  }));
46
- return { run };
47
+ return { shards: tsplus_module_4.get(currentShards), run };
47
48
  });
48
- })))));
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
+ }))))));
50
+ export const Sharder = tsplus_module_5.Tag();
51
+ export const LiveSharder = tsplus_module_10.provide(tsplus_module_6.toLayer(make, Sharder))((tsplus_module_10.merge(LiveShard)(LiveRateLimiter)));
51
52
  //# sourceMappingURL=Sharder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare const make: import("@effect/io/Effect").Effect<Sharder, never, {
6
6
  readonly fromDispatch: <K extends keyof import("./types.js").ReceiveEvents>(event: K) => import("@effect-http/client/_common").Stream<never, never, import("./types.js").ReceiveEvents[K]>;
7
7
  readonly handleDispatch: <K_1 extends keyof import("./types.js").ReceiveEvents, R, E, A>(event: K_1, handle: (event: import("./types.js").ReceiveEvents[K_1]) => import("@effect/io/Effect").Effect<R, E, A>) => import("@effect/io/Effect").Effect<R, E, never>;
8
8
  readonly send: (payload: Discord.GatewayPayload<Discord.SendEvent>) => import("@effect/io/Effect").Effect<never, never, boolean>;
9
+ readonly shards: import("@effect/io/Effect").Effect<never, never, import("./_common.js").HashSet<import("./DiscordGateway/Shard.js").RunningShard>>;
9
10
  }>;
10
11
  export interface DiscordGateway extends Effect.Success<typeof make> {
11
12
  }
@@ -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;EAgBhE,CAAA;AAEF,MAAM,WAAW,cAAe,SAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC;CAAG;AACtE,eAAO,MAAM,cAAc,oEAAwB,CAAA;AACnD,eAAO,MAAM,kBAAkB,2UAA8C,CAAA"}
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,2UAA8C,CAAA"}
package/DiscordGateway.js CHANGED
@@ -25,6 +25,7 @@ export const make = tsplus_module_2.flatMap(Sharder, sharder => tsplus_module_2.
25
25
  fromDispatch,
26
26
  handleDispatch,
27
27
  send,
28
+ shards: sharder.shards,
28
29
  };
29
30
  })));
30
31
  export const DiscordGateway = tsplus_module_6.Tag();
@@ -1 +1 @@
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,OAAO,sBAAa,CAAA;AACtB,CAAC,CAAC,CAAA;AAEN,MAAM,CAAC,MAAM,IAAI,2BACG,OAAO,EAAnB,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;KACI,CAAA;IACV,CAAA;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,2BAAkB,wBAAA,IAAI,EAAS,cAAc,CAAC,EAA3C,WAAW,CAAgC,CAAA"}
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,OAAO,sBAAa,CAAA;AACtB,CAAC,CAAC,CAAA;AAEN,MAAM,CAAC,MAAM,IAAI,2BACG,OAAO,EAAnB,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,2BAAkB,wBAAA,IAAI,EAAS,cAAc,CAAC,EAA3C,WAAW,CAAgC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.49.0",
3
+ "version": "0.50.0",
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": "927bb7a718347700774353d155db8bac66586e98"
51
+ "gitHead": "68e33961a8d1e6e1cafa91837a24a7f537042006"
52
52
  }
@@ -164,7 +164,7 @@ export const make = Do($ => {
164
164
  .zipParLeft(drainSendQueue)
165
165
  .zipParLeft(socket.run)
166
166
 
167
- return { run } as const
167
+ return { send, run } as const
168
168
  })
169
169
 
170
170
  return { connect } as const
@@ -174,3 +174,6 @@ export interface Shard extends Effect.Success<typeof make> {}
174
174
  export const Shard = Tag<Shard>()
175
175
  export const LiveShard =
176
176
  (LiveDiscordWS + LiveRateLimiter) >> make.toLayer(Shard)
177
+
178
+ export interface RunningShard
179
+ extends Effect.Success<ReturnType<Shard["connect"]>> {}
@@ -2,7 +2,7 @@ import { millis } from "@effect/data/Duration"
2
2
  import { DiscordConfig } from "dfx/DiscordConfig"
3
3
  import { DiscordREST } from "dfx/DiscordREST"
4
4
  import { LiveRateLimiter, RateLimiter } from "../RateLimit.js"
5
- import { LiveShard, Shard } from "./Shard.js"
5
+ import { LiveShard, RunningShard, Shard } from "./Shard.js"
6
6
  import { ShardStore } from "./ShardStore.js"
7
7
  import { WebSocketCloseError, WebSocketError } from "./WS.js"
8
8
  import { Some } from "@effect/data/Option"
@@ -17,6 +17,7 @@ const make = Do($ => {
17
17
  const { gateway: config } = $(DiscordConfig)
18
18
  const limiter = $(RateLimiter)
19
19
  const shard = $(Shard)
20
+ const currentShards = $(Ref.make(HashSet.empty<RunningShard>()))
20
21
 
21
22
  const takeConfig = (totalCount: number) =>
22
23
  Do($ => {
@@ -80,7 +81,14 @@ const make = Do($ => {
80
81
  )
81
82
  .flatMap(c => shard.connect([c.id, c.totalCount], hub, sendQueue))
82
83
  .flatMap(
83
- shard => shard.run.catchAllCause(_ => deferred.failCause(_)).fork,
84
+ shard =>
85
+ currentShards
86
+ .update(_ => _.add(shard))
87
+ .acquireUseRelease(
88
+ () => shard.run,
89
+ () => currentShards.update(_ => _.remove(shard)),
90
+ )
91
+ .catchAllCause(_ => deferred.failCause(_)).fork,
84
92
  ).forever
85
93
 
86
94
  const spawners = Chunk.range(
@@ -97,7 +105,7 @@ const make = Do($ => {
97
105
  )
98
106
  })
99
107
 
100
- return { run } as const
108
+ return { shards: currentShards.get, run } as const
101
109
  })
102
110
 
103
111
  export interface Sharder extends Effect.Success<typeof make> {}
@@ -42,6 +42,7 @@ export const make = Do($ => {
42
42
  fromDispatch,
43
43
  handleDispatch,
44
44
  send,
45
+ shards: sharder.shards,
45
46
  } as const
46
47
  })
47
48
 
package/src/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.49.0",
3
+ "version": "0.50.0",
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": "927bb7a718347700774353d155db8bac66586e98"
51
+ "gitHead": "68e33961a8d1e6e1cafa91837a24a7f537042006"
52
52
  }