dfx 0.40.3 → 0.40.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,14 +1,14 @@
1
1
  /// <reference types="ws" />
2
2
  import { Discord, Effect } from "dfx/_common";
3
+ import { Reconnect, WS, WebSocketCloseError, WebSocketError } from "dfx/DiscordGateway/WS";
3
4
  import WebSocket from "isomorphic-ws";
4
- import { Reconnect, WS } from "dfx/DiscordGateway/WS";
5
- import { Log } from "dfx/Log";
6
5
  export type Message = Discord.GatewayPayload | Reconnect;
7
6
  export interface OpenOpts {
8
7
  url?: string;
9
8
  version?: number;
10
9
  encoding?: DiscordWSCodec;
11
10
  outbound: Effect<never, never, Message>;
11
+ onReconnect?: Effect<never, never, void>;
12
12
  }
13
13
  export interface DiscordWSCodec {
14
14
  type: "json" | "etf";
@@ -17,9 +17,9 @@ export interface DiscordWSCodec {
17
17
  }
18
18
  export declare const DiscordWSCodec: import("@effect/data/Context").Tag<DiscordWSCodec, DiscordWSCodec>;
19
19
  export declare const LiveJsonDiscordWSCodec: import("@effect-http/client/_common").Layer<never, never, DiscordWSCodec>;
20
- declare const make: import("@effect/io/Effect").Effect<Log | WS | DiscordWSCodec, never, {
21
- readonly connect: ({ url, version, outbound, }: OpenOpts) => import("@effect/io/Effect").Effect<never, never, {
22
- readonly run: import("@effect/io/Effect").Effect<never, never, never>;
20
+ declare const make: import("@effect/io/Effect").Effect<WS | DiscordWSCodec, never, {
21
+ readonly connect: ({ url, version, outbound, onReconnect, }: OpenOpts) => import("@effect/io/Effect").Effect<never, never, {
22
+ readonly run: import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
23
23
  readonly take: import("@effect/io/Effect").Effect<never, never, import("../types.js").GatewayPayload<any>>;
24
24
  readonly setUrl: (url: string) => import("@effect/io/Effect").Effect<never, never, void>;
25
25
  }>;
@@ -27,5 +27,5 @@ declare const make: import("@effect/io/Effect").Effect<Log | WS | DiscordWSCodec
27
27
  export interface DiscordWS extends Effect.Success<typeof make> {
28
28
  }
29
29
  export declare const DiscordWS: import("@effect/data/Context").Tag<DiscordWS, DiscordWS>;
30
- export declare const LiveDiscordWS: import("@effect-http/client/_common").Layer<Log | DiscordWSCodec, never, DiscordWS>;
30
+ export declare const LiveDiscordWS: import("@effect-http/client/_common").Layer<import("../Log.js").Log | DiscordWSCodec, never, DiscordWS>;
31
31
  export {};
@@ -4,21 +4,20 @@ import * as tsplus_module_3 from "@effect/data/Duration";
4
4
  import * as tsplus_module_4 from "@effect/io/Schedule";
5
5
  import * as tsplus_module_5 from "@effect/io/Effect";
6
6
  import * as tsplus_module_6 from "@effect/io/Ref";
7
- import { LiveWS, Reconnect, WS } from "dfx/DiscordGateway/WS";
8
- import { Log } from "dfx/Log";
7
+ import { LiveWS, Reconnect, WS, } from "dfx/DiscordGateway/WS";
9
8
  export const DiscordWSCodec = tsplus_module_1.Tag();
10
9
  export const LiveJsonDiscordWSCodec = tsplus_module_2.succeed(DiscordWSCodec, {
11
10
  type: "json",
12
11
  encode: p => JSON.stringify(p),
13
12
  decode: p => JSON.parse(p.toString("utf8")),
14
13
  });
15
- const make = tsplus_module_5.flatMap(WS, ws => tsplus_module_5.flatMap(DiscordWSCodec, encoding => tsplus_module_5.map(Log, log => {
16
- const connect = ({ url = "wss://gateway.discord.gg/", version = 10, outbound, }) => tsplus_module_5.flatMap(tsplus_module_6.make(`${url}?v=${version}&encoding=${encoding.type}`), urlRef => {
14
+ const make = tsplus_module_5.flatMap(WS, ws => tsplus_module_5.map(DiscordWSCodec, encoding => {
15
+ const connect = ({ url = "wss://gateway.discord.gg/", version = 10, outbound, onReconnect, }) => tsplus_module_5.flatMap(tsplus_module_6.make(`${url}?v=${version}&encoding=${encoding.type}`), urlRef => {
17
16
  const setUrl = (url) => tsplus_module_6.set(urlRef, `${url}?v=${version}&encoding=${encoding.type}`);
18
17
  const takeOutbound = tsplus_module_5.map(outbound, a => a === Reconnect ? a : encoding.encode(a));
19
- return tsplus_module_5.map(ws.connect(urlRef, takeOutbound), socket => {
18
+ return tsplus_module_5.map(ws.connect(urlRef, takeOutbound, onReconnect), socket => {
20
19
  const take = tsplus_module_5.map(socket.take, encoding.decode);
21
- const run = tsplus_module_5.retry(tsplus_module_5.tapError(socket.run, e => log.info("DiscordWS", "ERROR", e)), tsplus_module_4.exponential(tsplus_module_3.seconds(0.5)));
20
+ const run = tsplus_module_5.retry(socket.run, tsplus_module_4.whileInput(tsplus_module_4.exponential(tsplus_module_3.seconds(0.5)), (_) => _._tag === "WebSocketCloseError" && _.code < 2000));
22
21
  return {
23
22
  run,
24
23
  take,
@@ -27,7 +26,7 @@ const make = tsplus_module_5.flatMap(WS, ws => tsplus_module_5.flatMap(DiscordWS
27
26
  });
28
27
  });
29
28
  return { connect };
30
- })));
29
+ }));
31
30
  export const DiscordWS = tsplus_module_1.Tag();
32
31
  export const LiveDiscordWS = tsplus_module_2.provide(tsplus_module_5.toLayer(make, DiscordWS))(LiveWS);
33
32
  //# sourceMappingURL=DiscordWS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAgB7B,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAc,cAAc,EAAE;IAClE,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAA;AAEF,MAAM,IAAI,2BACK,EAAE,EAAT,EAAE,4BACW,cAAc,EAA3B,QAAQ,wBACA,GAAG,EAAX,GAAG;IAET,MAAM,OAAO,GAAG,CAAC,EACf,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,EAAE,EACZ,QAAQ,GACC,EAAE,EAAE,yBAGT,qBAAS,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,EADrD,MAAM;QAGZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,oBAAA,MAAM,EAAK,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,oBAAA,QAAQ,EAAK,CAAC,CAAC,EAAE,CACpC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACzC,CAAA;mCACgB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAA3C,MAAM;YACZ,MAAM,IAAI,GAAG,oBAAA,MAAM,CAAC,IAAI,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;YAE7C,MAAM,GAAG,GAAG,sBAAA,yBAAA,MAAM,CAAC,GAAG,EACV,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAC1C,4BAAqB,wBAAiB,GAAG,CAAC,CAAC,CAInD,CAAA;YAED,OAAO;gBACL,GAAG;gBACH,IAAI;gBACJ,MAAM;aACE,CAAA;;MACV,CAAA;IAEJ,OAAO,EAAE,OAAO,EAAW,CAAA;IAC3B,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAA,GAAG,EAAa,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,2BAAa,wBAAA,IAAI,EAAS,SAAS,CAAC,EAAjC,MAAM,CAA2B,CAAA"}
1
+ {"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,MAAM,EACN,SAAS,EACT,EAAE,GAGH,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAc,cAAc,EAAE;IAClE,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAA;AAEF,MAAM,IAAI,2BACK,EAAE,EAAT,EAAE,wBACW,cAAc,EAA3B,QAAQ;IAEd,MAAM,OAAO,GAAG,CAAC,EACf,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,EAAE,EACZ,QAAQ,EACR,WAAW,GACF,EAAE,EAAE,yBAGT,qBAAS,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,EADrD,MAAM;QAGZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,oBAAA,MAAM,EAAK,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,oBAAA,QAAQ,EAAK,CAAC,CAAC,EAAE,CACpC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACzC,CAAA;mCACgB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EAAxD,MAAM;YACZ,MAAM,IAAI,GAAG,oBAAA,MAAM,CAAC,IAAI,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;YAE7C,MAAM,GAAG,GAAG,sBAAA,MAAM,CAAC,GAAG,EACpB,2BAAA,4BAAqB,wBAAiB,GAAG,CAAC,CAAC,EACzC,CAAC,CAAuC,EAAE,EAAE,CAC1C,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CACpD,CACF,CAAA;YAED,OAAO;gBACL,GAAG;gBACH,IAAI;gBACJ,MAAM;aACE,CAAA;;MACV,CAAA;IAEJ,OAAO,EAAE,OAAO,EAAW,CAAA;GAC3B,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAA,GAAG,EAAa,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,2BAAa,wBAAA,IAAI,EAAS,SAAS,CAAC,EAAjC,MAAM,CAA2B,CAAA"}
@@ -4,7 +4,8 @@ import { RateLimiter } from "dfx/RateLimit";
4
4
  import { DiscordWS } from "./DiscordWS.js";
5
5
  export declare const make: import("@effect/io/Effect").Effect<DiscordConfig | RateLimiter | DiscordWS, never, {
6
6
  readonly connect: (shard: [id: number, count: number], hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>) => import("@effect/io/Effect").Effect<never, never, {
7
- readonly run: import("@effect/io/Effect").Effect<never, never, never>;
7
+ readonly run: import("@effect/io/Effect").Effect<never, import("./WS.js").WebSocketError | import("./WS.js").WebSocketCloseError, never>;
8
+ readonly connected: import("@effect/io/Effect").Effect<never, never, boolean>;
8
9
  readonly send: (p: Discord.GatewayPayload) => import("@effect/io/Effect").Effect<never, never, boolean>;
9
10
  readonly reconnect: import("@effect/io/Effect").Effect<never, never, boolean>;
10
11
  }>;
@@ -1,10 +1,12 @@
1
- import * as tsplus_module_1 from "@effect/io/Effect";
2
- import * as tsplus_module_2 from "dfx/_common";
3
- import * as tsplus_module_3 from "@effect/io/Config/Secret";
4
- import * as tsplus_module_4 from "@effect/io/Queue";
5
- import * as tsplus_module_5 from "@effect/data/Option";
6
- import * as tsplus_module_6 from "@effect/data/Duration";
7
- import * as tsplus_module_7 from "@effect/io/Layer";
1
+ import * as tsplus_module_1 from "@effect/io/Ref";
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/Config/Secret";
5
+ import * as tsplus_module_5 from "@effect/io/Queue";
6
+ import * as tsplus_module_6 from "@effect/data/Option";
7
+ import * as tsplus_module_7 from "@effect/data/Chunk";
8
+ import * as tsplus_module_8 from "@effect/data/Duration";
9
+ import * as tsplus_module_9 from "@effect/io/Layer";
8
10
  import { DiscordConfig } from "dfx/DiscordConfig";
9
11
  import { LiveRateLimiter, RateLimiter } from "dfx/RateLimit";
10
12
  import { DiscordWS, LiveDiscordWS } from "./DiscordWS.js";
@@ -13,52 +15,65 @@ import * as Identify from "./Shard/identify.js";
13
15
  import * as InvalidSession from "./Shard/invalidSession.js";
14
16
  import * as Utils from "./Shard/utils.js";
15
17
  import { Reconnect } from "./WS.js";
16
- export const make = tsplus_module_1.flatMap(DiscordConfig, ({ token, gateway }) => tsplus_module_1.flatMap(RateLimiter, limiter => tsplus_module_1.map(DiscordWS, dws => {
17
- const connect = (shard, hub) => tsplus_module_1.flatMap(tsplus_module_4.unbounded(), outboundQueue => {
18
- const outbound = tsplus_module_1.tap(outboundQueue
19
- .take(), () => limiter.maybeWait("dfx.shard.send", tsplus_module_6.minutes(1), 120));
20
- const send = (p) => outboundQueue.offer(p);
21
- return tsplus_module_1.flatMap(dws.connect({ outbound }), socket => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.map(tsplus_module_5.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_5.some(p)), p => p.d)), ([latestReady, updateLatestReady]) => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.fromNullable(p.s)), ([latestSequence, updateLatestSequence]) => {
22
- const maybeUpdateUrl = (p) => tsplus_module_5.match(tsplus_module_5.map(tsplus_module_5.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_5.some(p)), p => p.d), () => tsplus_module_1.unit(), a => socket.setUrl(a.resume_gateway_url));
23
- return tsplus_module_1.flatMap(tsplus_module_4.unbounded(), hellos => tsplus_module_1.map(tsplus_module_4.unbounded(), acks => {
18
+ export const make = tsplus_module_2.flatMap(DiscordConfig, ({ token, gateway }) => tsplus_module_2.flatMap(RateLimiter, limiter => tsplus_module_2.map(DiscordWS, dws => {
19
+ const connect = (shard, hub) => tsplus_module_2.flatMap(tsplus_module_5.unbounded(), outboundQueue => tsplus_module_2.flatMap(tsplus_module_5.unbounded(), pendingQueue => tsplus_module_2.flatMap(tsplus_module_1.make(true), connecting => {
20
+ const outbound = tsplus_module_2.tap(outboundQueue
21
+ .take(), () => limiter.maybeWait("dfx.shard.send", tsplus_module_8.minutes(1), 120));
22
+ const send = (p) => tsplus_module_2.flatMap(tsplus_module_1.get(connecting), _ => _ ? pendingQueue.offer(p) : outboundQueue.offer(p));
23
+ const prioritySend = (p) => outboundQueue.offer(p);
24
+ const resume = tsplus_module_2.asUnit(tsplus_module_2.tap(tsplus_module_2.zipRight(tsplus_module_1.set(connecting, false), pendingQueue.takeAll()), _ => outboundQueue.offerAll(_)));
25
+ const onReconnect = tsplus_module_2.zipRight(tsplus_module_2.tap(outboundQueue
26
+ .takeAll(), _ => pendingQueue.offerAll(tsplus_module_7.filter(_, msg => msg !== Reconnect &&
27
+ msg.op !== 2 /* Discord.GatewayOpcode.IDENTIFY */ &&
28
+ msg.op !== 6 /* Discord.GatewayOpcode.RESUME */ &&
29
+ msg.op !== 1 /* Discord.GatewayOpcode.HEARTBEAT */))), tsplus_module_1.set(connecting, true));
30
+ return tsplus_module_2.flatMap(dws.connect({ outbound, onReconnect }), socket => tsplus_module_2.flatMap(Utils.latest(p => tsplus_module_6.map(tsplus_module_6.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_6.some(p)), p => p.d)), ([latestReady, updateLatestReady]) => tsplus_module_2.flatMap(Utils.latest(p => tsplus_module_6.fromNullable(p.s)), ([latestSequence, updateLatestSequence]) => {
31
+ const maybeUpdateUrl = (p) => tsplus_module_6.match(tsplus_module_6.map(tsplus_module_6.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_6.some(p)), p => p.d), () => tsplus_module_2.unit(), a => socket.setUrl(a.resume_gateway_url));
32
+ return tsplus_module_2.flatMap(tsplus_module_5.unbounded(), hellos => tsplus_module_2.map(tsplus_module_5.unbounded(), acks => {
24
33
  // heartbeats
25
34
  const heartbeats = Heartbeats.send(hellos, acks, latestSequence, send);
26
35
  // identify
27
36
  const identify = Identify.identifyOrResume({
28
- token: tsplus_module_3.value(token),
37
+ token: tsplus_module_4.value(token),
29
38
  shard,
30
39
  intents: gateway.intents,
31
40
  presence: gateway.presence,
32
41
  }, latestReady, latestSequence);
33
- const onPayload = (p) => tsplus_module_1.flatMap(tsplus_module_1.zipPar(tsplus_module_1.zipPar(updateLatestReady(p), updateLatestSequence(p)), maybeUpdateUrl(p)), () => {
34
- let effect = tsplus_module_1.unit();
42
+ const onPayload = (p) => tsplus_module_2.flatMap(tsplus_module_2.zipPar(tsplus_module_2.zipPar(updateLatestReady(p), updateLatestSequence(p)), maybeUpdateUrl(p)), () => {
43
+ let effect = tsplus_module_2.unit();
35
44
  switch (p.op) {
36
45
  case 10 /* Discord.GatewayOpcode.HELLO */:
37
- effect = tsplus_module_1.zipPar(tsplus_module_1.tap(identify, send), hellos.offer(p));
46
+ effect = tsplus_module_2.zipPar(tsplus_module_2.tap(identify, prioritySend), hellos.offer(p));
38
47
  break;
39
48
  case 11 /* Discord.GatewayOpcode.HEARTBEAT_ACK */:
40
49
  effect = acks.offer(p);
41
50
  break;
42
51
  case 9 /* Discord.GatewayOpcode.INVALID_SESSION */:
43
- effect = tsplus_module_1.tap(InvalidSession.fromPayload(p, latestReady), send);
52
+ effect = tsplus_module_2.tap(InvalidSession.fromPayload(p, latestReady), send);
44
53
  break;
45
54
  case 0 /* Discord.GatewayOpcode.DISPATCH */:
46
- effect = hub.publish(p);
55
+ if (p.t === "READY" || p.t === "RESUMED") {
56
+ effect = tsplus_module_2.zipRight(resume, hub.publish(p));
57
+ }
58
+ else {
59
+ effect = hub.publish(p);
60
+ }
47
61
  break;
48
62
  }
49
- return tsplus_module_1.map(effect, () => void 0);
63
+ return tsplus_module_2.map(effect, () => void 0);
50
64
  });
51
- const run = tsplus_module_1.zipParLeft(tsplus_module_1.zipParLeft(tsplus_module_1.forever(tsplus_module_1.flatMap(socket.take, onPayload)), heartbeats), socket.run);
65
+ const run = tsplus_module_2.zipParLeft(tsplus_module_2.zipParLeft(tsplus_module_2.forever(tsplus_module_2.flatMap(socket.take, onPayload)), heartbeats), socket.run);
52
66
  return {
53
67
  run,
68
+ connected: tsplus_module_1.get(connecting),
54
69
  send: (p) => send(p),
55
70
  reconnect: send(Reconnect),
56
71
  };
57
72
  }));
58
73
  })));
59
- });
74
+ })));
60
75
  return { connect };
61
76
  })));
62
- export const Shard = tsplus_module_2.Tag();
63
- export const LiveShard = tsplus_module_7.provide(tsplus_module_1.toLayer(make, Shard))((tsplus_module_7.merge(LiveRateLimiter)(LiveDiscordWS)));
77
+ export const Shard = tsplus_module_3.Tag();
78
+ export const LiveShard = tsplus_module_9.provide(tsplus_module_2.toLayer(make, Shard))((tsplus_module_9.merge(LiveRateLimiter)(LiveDiscordWS)));
64
79
  //# sourceMappingURL=Shard.js.map
@@ -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":"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"}
@@ -4,8 +4,9 @@ import { DiscordREST } from "dfx/DiscordREST";
4
4
  import { RateLimiter } from "../RateLimit.js";
5
5
  import { Shard } from "./Shard.js";
6
6
  import { ShardStore } from "./ShardStore.js";
7
+ import { WebSocketCloseError, WebSocketError } from "./WS.js";
7
8
  declare const make: import("@effect/io/Effect").Effect<DiscordREST | DiscordConfig | RateLimiter | Shard | ShardStore, never, {
8
- readonly run: (hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>) => import("@effect/io/Effect").Effect<never, never, never>;
9
+ readonly run: (hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>) => import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
9
10
  }>;
10
11
  export interface Sharder extends Effect.Success<typeof make> {
11
12
  }
@@ -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":";;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,MAAM,IAAI,2BACQ,UAAU,EAApB,KAAK,4BACI,WAAW,EAApB,IAAI,4BACoB,aAAa,GAArC,EAAE,OAAO,EAAE,MAAM,EAAE,6BACP,WAAW,EAAvB,OAAO,4BACG,KAAK,EAAf,KAAK;IAEX,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,qBAEf,qBAAS,CAAC,CAAC,EAA5B,YAAY;QAElB,MAAM,OAAO,GAAG,CAAC,YAAoB,EAAgC,EAAE,CACrE,wBAAA,KAAK;aACF,OAAO,CAAC;YACP,UAAU;YACV,YAAY;SACb,CAAC,EACO,CAAC,CAAC,EAAE,CACX,sBAAA,CAAC,EACC,GAAG,EAAE,CAAC,sBAAA,OAAO,CAAC,YAAY,CAAC,EAAO,wBAAiB,CAAC,CAAC,CAAC,EACtD,EAAE,CAAC,EAAE,CAAC,wBAAe,EAAE,CAAC,CACzB,CACF,CAAA;QAEL,OAAO,oBAAA,wBAAA,6BAAA,YAAY,EACH,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAChB,OAAO,CAAC,EACZ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAY,CAAA,CAAC,CAAA;MAC3C,CAAA;+BAGF,yBAAA,wBAAA,IAAI;SACD,aAAa,EAAE,EACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACX,GAAG,EAAE,CACb,wBAA8C;QAC5C,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,CAAC;QACT,mBAAmB,EAAE;YACnB,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;SACnB;KACF,CAAC,CACH,EAfC,OAAO;QAkBb,MAAM,GAAG,GAAG,CAAC,GAAsD,EAAE,EAAE,yBAGjE,sBAA4D,EADxD,QAAQ,4BAGC,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,EAAxD,IAAI;YAEV,MAAM,OAAO,2BAAG,wBAAA,wBAAA,oBAAA,oBAAA,IAAI,EACb,MAAM,CAAC,EAAE,CAAC,CAAC;gBACd,GAAG,MAAM;gBACT,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,eAAe;aACzD,CAAC,CAAC,EACE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAC3B,OAAO,CAAC,SAAS,CACf,eAAe,EAAE,GAAG,WAAW,EAAE,EACjC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAC5B,CACF,EACQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,EAErD,KAAK,CAAC,EAAE,sBAAC,8BAAA,KAAK,CAAC,GAAG,EAAe,CAAC,CAAC,EAAE,CAAC,0BAAA,QAAQ,EAAW,CAAC,CAAC,CAAC,CAAK,CAClE,CAAQ,CAAA;YAEX,MAAM,QAAQ,GAAG,oBAAA,sBACf,CAAC,EACD,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAC5C,EAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAA;mBAGlB,2BAAA,8BAAqB,QAAQ,CAAC,gCAAY,QAAQ,EAIjD;WAEH,CAAA;QAEJ,OAAO,EAAE,GAAG,EAAW,CAAA;;MACvB,CAAA;AAGF,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAA,GAAG,EAAW,CAAA;AACrC,MAAM,CAAC,MAAM,WAAW,2BACW,wBAAA,IAAI,EAAS,OAAO,CAAC,EAAtD,uBAAmB,SAAS,EAA3B,eAAe,EAAa,CAAyB,CAAA"}
@@ -18,7 +18,7 @@ export declare class WebSocketCloseError {
18
18
  constructor(code: number, reason: string);
19
19
  }
20
20
  declare const make: import("@effect/io/Effect").Effect<Log, never, {
21
- readonly connect: (url: Ref<string>, takeOutbound: Effect<never, never, Message>) => import("@effect/io/Effect").Effect<never, never, {
21
+ readonly connect: (url: Ref<string>, takeOutbound: Effect<never, never, Message>, onReconnect?: import("@effect/io/Effect").Effect<never, never, void>) => import("@effect/io/Effect").Effect<never, never, {
22
22
  readonly run: import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
23
23
  readonly take: import("@effect/io/Effect").Effect<never, never, WebSocket.Data>;
24
24
  }>;
@@ -21,6 +21,7 @@ export class WebSocketCloseError {
21
21
  this.reason = reason;
22
22
  }
23
23
  }
24
+ const isReconnect = (e) => e._tag === "WebSocketCloseError" && e.code === 1012;
24
25
  const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMap(tsplus_module_2.get(urlRef), url => {
25
26
  const ws = new WebSocket(url);
26
27
  return tsplus_module_1.map(tsplus_module_1.async(resume => {
@@ -33,9 +34,9 @@ const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMa
33
34
  ws.removeAllListeners?.();
34
35
  ws.close();
35
36
  }));
36
- const offer = (ws, queue) => tsplus_module_1.async(resume => {
37
+ const offer = (ws, queue, log) => tsplus_module_1.async(resume => {
37
38
  ws.addEventListener("message", message => {
38
- tsplus_module_1.runFork(queue.offer(message.data));
39
+ tsplus_module_1.runFork(tsplus_module_1.zipLeft(queue.offer(message.data), log.debug("WS", "offer", message.data)));
39
40
  });
40
41
  ws.addEventListener("error", cause => {
41
42
  resume(tsplus_module_1.fail(new WebSocketError(cause)));
@@ -56,8 +57,8 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tspl
56
57
  });
57
58
  }));
58
59
  const make = tsplus_module_1.map(Log, log => {
59
- const connect = (url, takeOutbound) => tsplus_module_1.map(tsplus_module_3.unbounded(), queue => {
60
- const run = tsplus_module_1.scoped(tsplus_module_1.retryWhile(tsplus_module_1.flatMap(socket(url), ws => tsplus_module_1.zipParLeft(offer(ws, queue), send(ws, takeOutbound, log))), e => e._tag === "WebSocketCloseError" && e.code === 1012));
60
+ const connect = (url, takeOutbound, onReconnect = tsplus_module_1.unit()) => tsplus_module_1.map(tsplus_module_3.unbounded(), queue => {
61
+ const run = tsplus_module_1.scoped(tsplus_module_1.retryWhile(tsplus_module_1.tapError(tsplus_module_1.flatMap(socket(url), ws => tsplus_module_1.zipParLeft(offer(ws, queue, log), send(ws, takeOutbound, log))), _ => (isReconnect(_) ? onReconnect : tsplus_module_1.unit())), isReconnect));
61
62
  return { run, take: queue.take() };
62
63
  });
63
64
  return { connect };
@@ -1 +1 @@
1
- {"version":3,"file":"WS.js","sourceRoot":"","sources":["../../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WS.js","sourceRoot":"","sources":["../../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Stream, Discord, Hub, Effect } from "dfx/_common";
2
2
  import { Sharder } from "./DiscordGateway/Sharder.js";
3
3
  export declare const make: import("@effect/io/Effect").Effect<Sharder, never, {
4
- run: import("@effect/io/Effect").Effect<never, never, never>;
4
+ run: import("@effect/io/Effect").Effect<never, import("./DiscordGateway/WS.js").WebSocketError | import("./DiscordGateway/WS.js").WebSocketCloseError, never>;
5
5
  dispatch: import("@effect-http/client/_common").Stream<never, never, import("./types.js").GatewayPayload<import("./types.js").ReceiveEvent>>;
6
6
  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
  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>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.40.3",
3
+ "version": "0.40.5",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -37,7 +37,7 @@
37
37
  "typescript": "https://cdn.jsdelivr.net/npm/@tsplus/installer@0.0.171/compiler/typescript.tgz"
38
38
  },
39
39
  "dependencies": {
40
- "@effect-http/client": "^0.22.2",
40
+ "@effect-http/client": "^0.22.4",
41
41
  "@effect/data": "^0.12.2",
42
42
  "@effect/io": "~0.25.7",
43
43
  "@effect/stream": "~0.21.0",
@@ -50,5 +50,5 @@
50
50
  "ws": "^8.13.0"
51
51
  },
52
52
  "sideEffects": false,
53
- "gitHead": "75f280021adcfc53ae383efddc6b49b2d2c14488"
53
+ "gitHead": "d014cbf5159cd938aa819c35138622015f7af9e2"
54
54
  }