dfx 0.24.0 → 0.24.2
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/DiscordGateway/DiscordWS.d.ts +12 -4
- package/DiscordGateway/DiscordWS.js +21 -12
- package/DiscordGateway/DiscordWS.js.map +1 -1
- package/DiscordGateway/Shard/heartbeats.d.ts +2 -2
- package/DiscordGateway/Shard/heartbeats.js +9 -10
- package/DiscordGateway/Shard/heartbeats.js.map +1 -1
- package/DiscordGateway/Shard/identify.d.ts +2 -2
- package/DiscordGateway/Shard/identify.js +1 -5
- package/DiscordGateway/Shard/identify.js.map +1 -1
- package/DiscordGateway/Shard/invalidSession.d.ts +2 -2
- package/DiscordGateway/Shard/invalidSession.js +1 -4
- package/DiscordGateway/Shard/invalidSession.js.map +1 -1
- package/DiscordGateway/Shard.d.ts +12 -8
- package/DiscordGateway/Shard.js +53 -35
- package/DiscordGateway/Shard.js.map +1 -1
- package/DiscordGateway/Sharder.d.ts +5 -10
- package/DiscordGateway/Sharder.js +33 -27
- package/DiscordGateway/Sharder.js.map +1 -1
- package/DiscordGateway/WS.d.ts +12 -2
- package/DiscordGateway/WS.js +17 -11
- package/DiscordGateway/WS.js.map +1 -1
- package/DiscordGateway.d.ts +6 -6
- package/DiscordGateway.js +19 -10
- package/DiscordGateway.js.map +1 -1
- package/DiscordREST.d.ts +2 -2
- package/DiscordREST.js +2 -1
- package/DiscordREST.js.map +1 -1
- package/Interactions/gateway.js +3 -1
- package/Interactions/gateway.js.map +1 -1
- package/README.md +4 -6
- package/RateLimit.js +1 -1
- package/RateLimit.js.map +1 -1
- package/_common.d.ts +11 -1
- package/_common.js +5 -0
- package/_common.js.map +1 -1
- package/gateway.d.ts +5 -8
- package/gateway.js +5 -9
- package/gateway.js.map +1 -1
- package/global.d.ts +1 -1
- package/package.json +2 -2
- package/utils/hub.d.ts +16 -0
- package/utils/hub.js +31 -0
- package/utils/hub.js.map +1 -0
- package/webhooks.d.ts +4 -4
- package/webhooks.js +2 -2
- package/webhooks.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="ws" />
|
|
2
|
-
import { Discord, Effect,
|
|
2
|
+
import { Discord, Effect, Dequeue } from "dfx/_common";
|
|
3
3
|
import { WS } from "dfx/gateway";
|
|
4
4
|
import WebSocket from "isomorphic-ws";
|
|
5
5
|
export type Message = Discord.GatewayPayload | WS.Reconnect;
|
|
@@ -16,7 +16,15 @@ export interface DiscordWSCodec {
|
|
|
16
16
|
}
|
|
17
17
|
export declare const DiscordWSCodec: import("@effect-http/client/_common").Tag<DiscordWSCodec>;
|
|
18
18
|
export declare const LiveJsonDiscordWSCodec: import("@effect-http/client/_common").Layer<never, never, DiscordWSCodec>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
declare const make: import("@effect-http/client/_common").Effect<import("../Log.js").Log | import("./WS.js").WS | DiscordWSCodec, never, {
|
|
20
|
+
readonly connect: ({ url, version, outbound, }: OpenOpts) => import("@effect-http/client/_common").Effect<never, never, {
|
|
21
|
+
readonly run: import("@effect-http/client/_common").Effect<never, never, never>;
|
|
22
|
+
readonly queue: import("../_common.js").Dequeue<import("../types.js").GatewayPayload<any>>;
|
|
23
|
+
readonly setUrl: (url: string) => import("@effect-http/client/_common").Effect<never, never, void>;
|
|
24
|
+
}>;
|
|
22
25
|
}>;
|
|
26
|
+
export interface DiscordWS extends Effect.Success<typeof make> {
|
|
27
|
+
}
|
|
28
|
+
export declare const DiscordWS: import("@effect-http/client/_common").Tag<DiscordWS>;
|
|
29
|
+
export declare const LiveDiscordWS: import("@effect-http/client/_common").Layer<import("../Log.js").Log | DiscordWSCodec, never, DiscordWS>;
|
|
30
|
+
export {};
|
|
@@ -2,24 +2,33 @@ import * as tsplus_module_1 from "dfx/_common";
|
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Layer";
|
|
3
3
|
import * as tsplus_module_3 from "@effect/data/Duration";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/io/Schedule";
|
|
5
|
-
import * as tsplus_module_5 from "@effect/
|
|
6
|
-
import * as tsplus_module_6 from "dfx";
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Effect";
|
|
6
|
+
import * as tsplus_module_6 from "dfx/utils/hub";
|
|
7
7
|
import * as tsplus_module_7 from "dfx/gateway";
|
|
8
|
-
import * as tsplus_module_8 from "@effect/io/
|
|
9
|
-
import * as tsplus_module_9 from "
|
|
8
|
+
import * as tsplus_module_8 from "@effect/io/Ref";
|
|
9
|
+
import * as tsplus_module_9 from "dfx";
|
|
10
|
+
import { LiveWS } from "./WS.js";
|
|
10
11
|
export const DiscordWSCodec = tsplus_module_1.Tag();
|
|
11
12
|
export const LiveJsonDiscordWSCodec = tsplus_module_2.succeed(DiscordWSCodec, {
|
|
12
13
|
type: "json",
|
|
13
14
|
encode: p => JSON.stringify(p),
|
|
14
15
|
decode: p => JSON.parse(p.toString("utf8")),
|
|
15
16
|
});
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
const make = tsplus_module_5.flatMap(tsplus_module_5.service(tsplus_module_7.WS.WS), ws => tsplus_module_5.flatMap(tsplus_module_5.service(DiscordWSCodec), encoding => tsplus_module_5.map(tsplus_module_5.service(tsplus_module_9.Log.Log), log => {
|
|
18
|
+
const connect = ({ url = "wss://gateway.discord.gg/", version = 10, outbound, }) => tsplus_module_5.flatMap(tsplus_module_8.make(`${url}?v=${version}&encoding=${encoding.type}`), urlRef => {
|
|
19
|
+
const setUrl = (url) => tsplus_module_8.set(urlRef, `${url}?v=${version}&encoding=${encoding.type}`);
|
|
20
|
+
const take = tsplus_module_5.map(outbound, a => a === tsplus_module_7.WS.Reconnect ? a : encoding.encode(a));
|
|
21
|
+
return tsplus_module_5.flatMap(ws.connect(urlRef, take), socket => tsplus_module_5.map(tsplus_module_6.transform(socket.queue, encoding.decode), ([queue, offer]) => {
|
|
22
|
+
const run = tsplus_module_5.retry(tsplus_module_5.tapError(tsplus_module_5.zipParLeft(socket.run, offer), e => log.info("DiscordWS", "ERROR", e)), tsplus_module_4.exponential(tsplus_module_3.seconds(0.5)));
|
|
23
|
+
return {
|
|
24
|
+
run,
|
|
25
|
+
queue: queue,
|
|
26
|
+
setUrl,
|
|
27
|
+
};
|
|
28
|
+
}));
|
|
23
29
|
});
|
|
24
|
-
}
|
|
30
|
+
return { connect };
|
|
31
|
+
})));
|
|
32
|
+
export const DiscordWS = tsplus_module_1.Tag();
|
|
33
|
+
export const LiveDiscordWS = tsplus_module_2.provide(tsplus_module_5.toLayer(make, DiscordWS))(LiveWS);
|
|
25
34
|
//# sourceMappingURL=DiscordWS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAgBhC,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,mDACK,gBAAA,EAAE,CAAC,EAAE,GAAZ,EAAE,4BACW,wBAAe,cAAc,CAAC,EAA3C,QAAQ,wBACA,wBAAe,gBAAA,GAAG,CAAC,GAAG,CAAC,EAA/B,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,IAAI,GAAG,oBAAA,QAAQ,EAAK,CAAC,CAAC,EAAE,CAC5B,CAAC,KAAK,gBAAA,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAC5C,CAAA;uCACgB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAnC,MAAM,wBACa,0BAAA,MAAM,CAAC,KAAK,EAAW,QAAQ,CAAC,MAAM,CAAC,GAA1D,CAAC,KAAK,EAAE,KAAK,CAAC;YAEpB,MAAM,GAAG,GAAG,sBAAA,yBAAA,2BAAA,MAAM,CAAC,GAAG,EACR,KAAK,CAAC,EACR,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,KAAK,EAAE,KAAwC;gBAC/C,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,3 +1,3 @@
|
|
|
1
|
-
import { Ref, Maybe, Effect,
|
|
1
|
+
import { Ref, Maybe, Effect, Dequeue, Discord } from "dfx/_common";
|
|
2
2
|
import { DiscordWS } from "dfx/gateway";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const send: (hellos: Dequeue<Discord.GatewayPayload>, acks: Dequeue<Discord.GatewayPayload>, seqRef: Ref<Maybe<number>>, send: (p: DiscordWS.Message) => Effect<never, never, boolean>) => import("@effect-http/client/_common").Effect<never, never, never>;
|
|
@@ -3,16 +3,15 @@ import * as tsplus_module_2 from "@fp-ts/core/Option";
|
|
|
3
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
4
4
|
import * as tsplus_module_4 from "dfx/gateway";
|
|
5
5
|
import * as tsplus_module_5 from "@effect/io/Schedule";
|
|
6
|
-
import * as tsplus_module_6 from "
|
|
7
|
-
import * as tsplus_module_7 from "dfx/_common";
|
|
6
|
+
import * as tsplus_module_6 from "dfx/utils/hub";
|
|
8
7
|
import { millis } from "@effect/data/Duration";
|
|
9
8
|
import * as SendEvents from "./sendEvents.js";
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
return
|
|
17
|
-
})
|
|
9
|
+
const payload = (ref, seqRef) => tsplus_module_3.tap(tsplus_module_3.map(tsplus_module_1.get(seqRef), a => SendEvents.heartbeat(tsplus_module_2.getOrNull(a))), () => tsplus_module_1.set(ref, false));
|
|
10
|
+
const payloadOrReconnect = (ref, seqRef) => tsplus_module_3.flatMap(tsplus_module_1.get(ref), (acked) => acked ? payload(ref, seqRef) : tsplus_module_3.succeed(tsplus_module_4.WS.Reconnect));
|
|
11
|
+
export const send = (hellos, acks, seqRef, send) => tsplus_module_3.flatMap(tsplus_module_1.make(true), ackedRef => {
|
|
12
|
+
const heartbeats = tsplus_module_6.foreverSwitch(tsplus_module_3.tap(hellos
|
|
13
|
+
.take(), () => tsplus_module_1.set(ackedRef, true)), p => tsplus_module_3.schedule(tsplus_module_3.tap(payloadOrReconnect(ackedRef, seqRef), send), tsplus_module_5.andThen(tsplus_module_5.duration(millis(p.d.heartbeat_interval * Math.random())), tsplus_module_5.fixed(millis(p.d.heartbeat_interval)))));
|
|
14
|
+
const run = tsplus_module_3.forever(tsplus_module_3.tap(acks.take(), () => tsplus_module_1.set(ackedRef, true)));
|
|
15
|
+
return tsplus_module_3.zipParLeft(run, heartbeats);
|
|
16
|
+
});
|
|
18
17
|
//# sourceMappingURL=heartbeats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeats.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/heartbeats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"heartbeats.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/heartbeats.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,MAA0B,EAAE,EAAE,CAChE,oBAAA,wCAAA,MAAM,GACC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,2BAAC,CAAC,EAAW,CAAC,EACvC,GAAG,EAAE,CAAC,oBAAA,GAAG,EAAK,KAAK,CAAC,CAAC,CAAA;AAE9B,MAAM,kBAAkB,GAAG,CAAC,GAAiB,EAAE,MAA0B,EAAE,EAAE,CAC3E,4CAAA,GAAG,GACD,CAAC,KAAK,EAA2C,EAAE,CACjD,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAe,gBAAA,EAAE,CAAC,SAAS,CAAC,CAC9D,CAAA;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAuC,EACvC,IAAqC,EACrC,MAA0B,EAC1B,IAA6D,EAC7D,EAAE,yBAEmB,qBAAS,IAAI,CAAC,EAA3B,QAAQ;IAEd,MAAM,UAAU,GAAG,8BAAA,oBAAA,MAAM;SACtB,IAAI,EAAE,EACF,GAAG,EAAE,CAAC,oBAAA,QAAQ,EAAK,IAAI,CAAC,CAAC,EACf,CAAC,CAAC,EAAE,CACjB,yBAAA,oBAAA,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7B,IAAI,CAAC,EAER,wBAAA,yBACE,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAChD,EAAS,sBAAe,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC3D,CACJ,CAAA;IAEH,MAAM,GAAG,2BAAG,oBAAA,IAAI,CAAC,IAAI,EAAE,EAAK,GAAG,EAAE,CAAC,oBAAA,QAAQ,EAAK,IAAI,CAAC,CAAC,CAAQ,CAAA;WAEpD,2BAAA,GAAG,EAAY,UAAU,CAAC;EACnC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Discord, Ref, Maybe
|
|
1
|
+
import { Discord, Ref, Maybe } from "dfx/_common";
|
|
2
2
|
export interface Options {
|
|
3
3
|
token: string;
|
|
4
4
|
intents: number;
|
|
@@ -9,4 +9,4 @@ export interface Requirements {
|
|
|
9
9
|
latestReady: Ref<Maybe<Discord.ReadyEvent>>;
|
|
10
10
|
latestSequence: Ref<Maybe<number>>;
|
|
11
11
|
}
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const identifyOrResume: (opts: Options, ready: Ref<Maybe<Discord.ReadyEvent>>, seq: Ref<Maybe<number>>) => import("@effect-http/client/_common").Effect<never, never, import("../../types.js").GatewayPayload<any>>;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@fp-ts/core/Option";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Ref";
|
|
3
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
4
|
-
import * as tsplus_module_4 from "dfx/_common";
|
|
5
|
-
import * as tsplus_module_5 from "@effect/stream/Stream";
|
|
6
4
|
import * as SendEvents from "./sendEvents.js";
|
|
7
5
|
import * as OS from "os";
|
|
8
|
-
import { opCode } from "./utils.js";
|
|
9
6
|
const identify = ({ token, intents, shard, presence }) => SendEvents.identify({
|
|
10
7
|
token,
|
|
11
8
|
intents,
|
|
@@ -22,9 +19,8 @@ const resume = (token, ready, seq) => SendEvents.resume({
|
|
|
22
19
|
session_id: ready.session_id,
|
|
23
20
|
seq,
|
|
24
21
|
});
|
|
25
|
-
const identifyOrResume = (opts, ready, seq) => tsplus_module_3.flatMap(tsplus_module_2.get(ready), readyEvent => tsplus_module_3.map(tsplus_module_2.get(seq), seqNumber => tsplus_module_1.match(tsplus_module_1.struct({
|
|
22
|
+
export const identifyOrResume = (opts, ready, seq) => tsplus_module_3.flatMap(tsplus_module_2.get(ready), readyEvent => tsplus_module_3.map(tsplus_module_2.get(seq), seqNumber => tsplus_module_1.match(tsplus_module_1.struct({
|
|
26
23
|
readyEvent,
|
|
27
24
|
seqNumber,
|
|
28
25
|
}), () => identify(opts), ({ readyEvent, seqNumber }) => resume(opts.token, readyEvent, seqNumber))));
|
|
29
|
-
export const fromRaw = (source, { latestReady, latestSequence, ...opts }) => tsplus_module_5.mapEffect(opCode(source)(10 /* Discord.GatewayOpcode.HELLO */), () => identifyOrResume(opts, latestReady, latestSequence));
|
|
30
26
|
//# sourceMappingURL=identify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/identify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/identify.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAcxB,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAW,EAAE,EAAE,CAChE,UAAU,CAAC,QAAQ,CAAC;IAClB,KAAK;IACL,OAAO;IACP,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;QACjB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;KACd;IACD,KAAK;IACL,QAAQ;CACT,CAAC,CAAA;AAEJ,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,KAAyB,EAAE,GAAW,EAAE,EAAE,CACvE,UAAU,CAAC,MAAM,CAAC;IAChB,KAAK;IACL,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,GAAG;CACJ,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAa,EACb,KAAqC,EACrC,GAAuB,EACvB,EAAE,6CAEqB,KAAK,GAApB,UAAU,4CACI,GAAG,GAAjB,SAAS,IAER,sBAAA,uBAAa;IAClB,UAAU;IACV,SAAS;CACV,CAAC,EACA,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CACzE,EACD,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Discord, Ref, Maybe } from "dfx/_common";
|
|
2
2
|
import { DiscordWS } from "dfx/gateway";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const fromPayload: (p: Discord.GatewayPayload, latestReady: Ref<Maybe<Discord.ReadyEvent>>) => import("@effect-http/client/_common").Effect<never, never, import("../DiscordWS.js").Message>;
|
|
@@ -2,8 +2,5 @@ import * as tsplus_module_1 from "dfx/gateway";
|
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
3
|
import * as tsplus_module_3 from "@fp-ts/core/Option";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/io/Ref";
|
|
5
|
-
|
|
6
|
-
import * as tsplus_module_6 from "@effect/stream/Stream";
|
|
7
|
-
import { opCode } from "./utils.js";
|
|
8
|
-
export const fromRaw = (raw, latestReady) => tsplus_module_6.map(tsplus_module_6.tap(opCode(raw)(9 /* Discord.GatewayOpcode.INVALID_SESSION */), p => (p.d ? tsplus_module_2.unit() : tsplus_module_4.set(latestReady, tsplus_module_3.none()))), () => tsplus_module_1.WS.Reconnect);
|
|
5
|
+
export const fromPayload = (p, latestReady) => tsplus_module_2.map((p.d ? tsplus_module_2.unit() : tsplus_module_4.set(latestReady, tsplus_module_3.none())), () => tsplus_module_1.WS.Reconnect);
|
|
9
6
|
//# sourceMappingURL=invalidSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidSession.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/invalidSession.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalidSession.js","sourceRoot":"","sources":["../../../src/DiscordGateway/Shard/invalidSession.ts"],"names":[],"mappings":";;;;AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,CAAyB,EACzB,WAA2C,EAC3C,EAAE,CACF,oBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAa,CAAC,CAAC,CAAC,oBAAA,WAAW,EAAK,sBAAY,CAAC,CAAC,EACnD,GAAsB,EAAE,CAAC,gBAAA,EAAE,CAAC,SAAS,CACtC,CAAA"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export declare const make:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { Hub, Discord, Effect } from "dfx/_common";
|
|
2
|
+
import { DiscordWS } from "./DiscordWS.js";
|
|
3
|
+
export declare const make: import("@effect-http/client/_common").Effect<import("../DiscordConfig.js").DiscordConfig | DiscordWS | import("../RateLimit.js").RateLimiter, never, {
|
|
4
|
+
readonly connect: (shard: [id: number, count: number], hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>) => import("@effect-http/client/_common").Effect<never, never, {
|
|
5
|
+
readonly run: import("@effect-http/client/_common").Effect<never, never, never>;
|
|
6
|
+
readonly send: (p: Discord.GatewayPayload) => import("@effect-http/client/_common").Effect<never, never, boolean>;
|
|
7
|
+
readonly reconnect: import("@effect-http/client/_common").Effect<never, never, boolean>;
|
|
8
|
+
}>;
|
|
9
9
|
}>;
|
|
10
|
+
export interface Shard extends Effect.Success<typeof make> {
|
|
11
|
+
}
|
|
12
|
+
export declare const Shard: import("@effect-http/client/_common").Tag<Shard>;
|
|
13
|
+
export declare const LiveShard: import("@effect-http/client/_common").Layer<import("../DiscordConfig.js").DiscordConfig | import("../Log.js").Log | import("./DiscordWS.js").DiscordWSCodec | import("../RateLimit.js").RateLimitStore, never, Shard>;
|
package/DiscordGateway/Shard.js
CHANGED
|
@@ -1,44 +1,62 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "
|
|
2
|
-
import * as tsplus_module_2 from "
|
|
3
|
-
import * as tsplus_module_3 from "
|
|
1
|
+
import * as tsplus_module_1 from "dfx/gateway";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "dfx/_common";
|
|
4
4
|
import * as tsplus_module_4 from "@effect/io/Config/Secret";
|
|
5
|
-
import * as tsplus_module_5 from "
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Queue";
|
|
6
6
|
import * as tsplus_module_6 from "@fp-ts/core/Option";
|
|
7
7
|
import * as tsplus_module_7 from "@effect/data/Duration";
|
|
8
|
-
import * as tsplus_module_8 from "
|
|
9
|
-
import * as tsplus_module_9 from "
|
|
8
|
+
import * as tsplus_module_8 from "dfx";
|
|
9
|
+
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
10
|
+
import { DiscordWS, LiveDiscordWS } from "./DiscordWS.js";
|
|
10
11
|
import * as Heartbeats from "./Shard/heartbeats.js";
|
|
11
12
|
import * as Identify from "./Shard/identify.js";
|
|
12
13
|
import * as InvalidSession from "./Shard/invalidSession.js";
|
|
13
14
|
import * as Utils from "./Shard/utils.js";
|
|
14
|
-
export const make =
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
15
|
+
export const make = tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.DiscordConfig.DiscordConfig), ({ token, gateway }) => tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.RateLimiter), limiter => tsplus_module_2.map(tsplus_module_2.service(DiscordWS), dws => {
|
|
16
|
+
const connect = (shard, hub) => tsplus_module_2.flatMap(tsplus_module_5.unbounded(), outboundQueue => {
|
|
17
|
+
const outbound = tsplus_module_2.tap(outboundQueue
|
|
18
|
+
.take(), () => limiter.maybeWait("dfx.shard.send", tsplus_module_7.minutes(1), 120));
|
|
19
|
+
const send = (p) => outboundQueue.offer(p);
|
|
20
|
+
return tsplus_module_2.flatMap(dws.connect({ outbound }), 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]) => {
|
|
21
|
+
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));
|
|
22
|
+
return tsplus_module_2.flatMap(tsplus_module_5.unbounded(), hellos => tsplus_module_2.map(tsplus_module_5.unbounded(), acks => {
|
|
23
|
+
// heartbeats
|
|
24
|
+
const heartbeats = Heartbeats.send(hellos, acks, latestSequence, send);
|
|
25
|
+
// identify
|
|
26
|
+
const identify = Identify.identifyOrResume({
|
|
27
|
+
token: tsplus_module_4.value(token),
|
|
28
|
+
shard,
|
|
29
|
+
intents: gateway.intents,
|
|
30
|
+
presence: gateway.presence,
|
|
31
|
+
}, latestReady, latestSequence);
|
|
32
|
+
const onPayload = (_) => tsplus_module_2.flatMap(tsplus_module_2.zipPar(tsplus_module_2.zipPar(updateLatestReady(_), updateLatestSequence(_)), maybeUpdateUrl(_)), () => {
|
|
33
|
+
let effect = tsplus_module_2.unit();
|
|
34
|
+
if (_.op === 10 /* Discord.GatewayOpcode.HELLO */) {
|
|
35
|
+
effect = tsplus_module_2.zipPar(tsplus_module_2.tap(identify, send), hellos.offer(_));
|
|
36
|
+
}
|
|
37
|
+
else if (_.op === 11 /* Discord.GatewayOpcode.HEARTBEAT_ACK */) {
|
|
38
|
+
effect = acks.offer(_);
|
|
39
|
+
}
|
|
40
|
+
else if (_.op === 9 /* Discord.GatewayOpcode.INVALID_SESSION */) {
|
|
41
|
+
effect = tsplus_module_2.tap(InvalidSession.fromPayload(_, latestReady), send);
|
|
42
|
+
}
|
|
43
|
+
else if (_.op === 0 /* Discord.GatewayOpcode.DISPATCH */) {
|
|
44
|
+
effect = hub.publish(_);
|
|
45
|
+
}
|
|
46
|
+
return tsplus_module_2.map(effect, () => void 0);
|
|
47
|
+
});
|
|
48
|
+
const run = tsplus_module_2.zipParLeft(tsplus_module_2.zipParLeft(tsplus_module_2.forever(tsplus_module_2.flatMap(socket.queue
|
|
49
|
+
.take(), onPayload)), heartbeats), socket.run);
|
|
50
|
+
return {
|
|
51
|
+
run,
|
|
52
|
+
send: (p) => send(p),
|
|
53
|
+
reconnect: send(tsplus_module_1.WS.Reconnect),
|
|
54
|
+
};
|
|
55
|
+
}));
|
|
56
|
+
})));
|
|
57
|
+
});
|
|
58
|
+
return { connect };
|
|
43
59
|
})));
|
|
60
|
+
export const Shard = tsplus_module_3.Tag();
|
|
61
|
+
export const LiveShard = tsplus_module_9.provide(tsplus_module_2.toLayer(make, Shard))((tsplus_module_9.merge(tsplus_module_8.LiveRateLimiter)(LiveDiscordWS)));
|
|
44
62
|
//# sourceMappingURL=Shard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shard.js","sourceRoot":"","sources":["../../src/DiscordGateway/Shard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,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;AAEzC,MAAM,CAAC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"Shard.js","sourceRoot":"","sources":["../../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
import { Effect, Discord } from "dfx/_common";
|
|
1
|
+
import { Effect, Discord, Hub } from "dfx/_common";
|
|
2
2
|
import { ShardStore } from "./ShardStore.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
raw: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
|
|
7
|
-
dispatch: import("@effect-http/client/_common").Stream<never, never, import("../types.js").GatewayPayload<any>>;
|
|
8
|
-
send: (p: import("../types.js").GatewayPayload<any>) => import("@effect-http/client/_common").Effect<never, never, boolean>;
|
|
9
|
-
reconnect: import("@effect-http/client/_common").Effect<never, never, boolean>;
|
|
10
|
-
}>;
|
|
3
|
+
import { Shard } from "./Shard.js";
|
|
4
|
+
declare const make: import("@effect-http/client/_common").Effect<import("dfx").DiscordREST | import("../DiscordConfig.js").DiscordConfig | ShardStore | import("dfx").RateLimiter | Shard, never, {
|
|
5
|
+
readonly run: (hub: Hub<Discord.GatewayPayload<Discord.ReceiveEvent>>) => import("@effect-http/client/_common").Effect<never, never, never>;
|
|
11
6
|
}>;
|
|
12
7
|
export interface Sharder extends Effect.Success<typeof make> {
|
|
13
8
|
}
|
|
14
9
|
export declare const Sharder: import("@effect-http/client/_common").Tag<Sharder>;
|
|
15
|
-
export declare const LiveSharder: import("@effect-http/client/_common").Layer<import("
|
|
10
|
+
export declare const LiveSharder: import("@effect-http/client/_common").Layer<import("dfx").DiscordREST | import("../DiscordConfig.js").DiscordConfig | ShardStore | import("../Log.js").Log | import("./DiscordWS.js").DiscordWSCodec | import("dfx").RateLimitStore, never, Sharder>;
|
|
16
11
|
export {};
|
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "
|
|
2
|
-
import * as tsplus_module_2 from "
|
|
3
|
-
import * as tsplus_module_3 from "@effect/
|
|
4
|
-
import * as tsplus_module_4 from "@effect/
|
|
5
|
-
import * as tsplus_module_5 from "@effect/
|
|
6
|
-
import * as tsplus_module_6 from "@
|
|
7
|
-
import * as tsplus_module_7 from "
|
|
8
|
-
import * as tsplus_module_8 from "dfx
|
|
1
|
+
import * as tsplus_module_1 from "dfx/_common";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect/data/Chunk";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Deferred";
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Ref";
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/Duration";
|
|
7
|
+
import * as tsplus_module_7 from "@fp-ts/core/Option";
|
|
8
|
+
import * as tsplus_module_8 from "dfx";
|
|
9
9
|
import * as tsplus_module_9 from "@effect/io/Layer";
|
|
10
10
|
import { millis } from "@effect/data/Duration";
|
|
11
11
|
import { ShardStore } from "./ShardStore.js";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
import { LiveShard, Shard } from "./Shard.js";
|
|
13
|
+
import { LiveRateLimiter } from "dfx";
|
|
14
|
+
const make = tsplus_module_2.flatMap(tsplus_module_2.service(ShardStore), store => tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.DiscordREST), rest => tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.DiscordConfig.DiscordConfig), ({ gateway: config }) => tsplus_module_2.flatMap(tsplus_module_2.service(tsplus_module_8.RateLimiter), limiter => tsplus_module_2.flatMap(tsplus_module_2.service(Shard), shard => {
|
|
15
|
+
const takeConfig = (totalCount) => tsplus_module_2.map(tsplus_module_5.make(0), currentCount => {
|
|
16
|
+
const claimId = (sharderCount) => tsplus_module_2.flatMap(store
|
|
15
17
|
.claimId({
|
|
16
18
|
totalCount,
|
|
17
19
|
sharderCount,
|
|
18
|
-
}), a =>
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
24
|
-
return tsplus_module_3.flatMap(tsplus_module_3.catchAll(tsplus_module_3.flatMap(rest
|
|
25
|
-
.getGatewayBot(), r => r.json), () => tsplus_module_3.succeed({
|
|
20
|
+
}), a => tsplus_module_7.match(a, () => tsplus_module_2.delay(claimId(sharderCount), tsplus_module_6.minutes(3)), id => tsplus_module_2.succeed(id)));
|
|
21
|
+
return tsplus_module_2.map(tsplus_module_2.flatMap(tsplus_module_5.getAndUpdate(currentCount, _ => _ + 1), claimId), id => ({ id, totalCount }));
|
|
22
|
+
});
|
|
23
|
+
return tsplus_module_2.map(tsplus_module_2.catchAll(tsplus_module_2.flatMap(rest
|
|
24
|
+
.getGatewayBot(), r => r.json), () => tsplus_module_2.succeed({
|
|
26
25
|
url: "wss://gateway.discord.gg/",
|
|
27
26
|
shards: 1,
|
|
28
27
|
session_start_limit: {
|
|
@@ -31,12 +30,19 @@ const make = tsplus_module_3.flatMap(tsplus_module_3.service(ShardStore), store
|
|
|
31
30
|
reset_after: 0,
|
|
32
31
|
max_concurrency: 1,
|
|
33
32
|
},
|
|
34
|
-
})), gateway =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
})), gateway => {
|
|
34
|
+
const run = (hub) => tsplus_module_2.scoped(tsplus_module_2.flatMap(tsplus_module_4.make(), deferred => tsplus_module_2.flatMap(takeConfig(config.shardCount ?? gateway.shards), take => {
|
|
35
|
+
const spawner = tsplus_module_2.forever(tsplus_module_2.flatMap(tsplus_module_2.flatMap(tsplus_module_2.tap(tsplus_module_2.map(take, config => ({
|
|
36
|
+
...config,
|
|
37
|
+
url: gateway.url,
|
|
38
|
+
concurrency: gateway.session_start_limit.max_concurrency,
|
|
39
|
+
})), ({ 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_2.forkScoped(tsplus_module_2.catchAllCause(shard.run, _ => tsplus_module_4.failCause(deferred, _)))));
|
|
40
|
+
const spawners = tsplus_module_3.range(1, gateway.session_start_limit.max_concurrency).map(() => spawner);
|
|
41
|
+
return tsplus_module_2.zipParLeft(tsplus_module_2.collectAllParDiscard(spawners), tsplus_module_1.deferredAwait(deferred));
|
|
42
|
+
})));
|
|
43
|
+
return { run };
|
|
44
|
+
});
|
|
45
|
+
})))));
|
|
46
|
+
export const Sharder = tsplus_module_1.Tag();
|
|
47
|
+
export const LiveSharder = tsplus_module_9.provide(tsplus_module_9.scoped(Sharder, make))((tsplus_module_9.merge(LiveShard)(LiveRateLimiter)));
|
|
42
48
|
//# sourceMappingURL=Sharder.js.map
|
|
@@ -1 +1 @@
|
|
|
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,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Sharder.js","sourceRoot":"","sources":["../../src/DiscordGateway/Sharder.ts"],"names":[],"mappings":"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"}
|
package/DiscordGateway/WS.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="ws" />
|
|
3
|
-
import { Ref, Effect } from "dfx/_common";
|
|
3
|
+
import { Ref, Enqueue, Effect, Dequeue } from "dfx/_common";
|
|
4
4
|
import { Log } from "dfx";
|
|
5
5
|
import WebSocket from "isomorphic-ws";
|
|
6
6
|
export declare const Reconnect: unique symbol;
|
|
@@ -17,4 +17,14 @@ export declare class WebSocketCloseError {
|
|
|
17
17
|
readonly _tag = "WebSocketCloseError";
|
|
18
18
|
constructor(code: number, reason: string);
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
declare const make: import("@effect-http/client/_common").Effect<import("../Log.js").Log, never, {
|
|
21
|
+
readonly connect: (url: Ref<string>, takeOutbound: Effect<never, never, Message>) => import("@effect-http/client/_common").Effect<never, never, {
|
|
22
|
+
readonly run: import("@effect-http/client/_common").Effect<never, WebSocketError | WebSocketCloseError, never>;
|
|
23
|
+
readonly queue: import("../_common.js").Dequeue<WebSocket.Data>;
|
|
24
|
+
}>;
|
|
25
|
+
}>;
|
|
26
|
+
export interface WS extends Effect.Success<typeof make> {
|
|
27
|
+
}
|
|
28
|
+
export declare const WS: import("@effect-http/client/_common").Tag<WS>;
|
|
29
|
+
export declare const LiveWS: import("@effect-http/client/_common").Layer<import("../Log.js").Log, never, WS>;
|
|
30
|
+
export {};
|
package/DiscordGateway/WS.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Ref";
|
|
3
|
-
import * as tsplus_module_3 from "@effect/
|
|
4
|
-
import * as tsplus_module_4 from "@effect/io/
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Schedule";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Queue";
|
|
5
5
|
import * as tsplus_module_5 from "dfx";
|
|
6
|
+
import * as tsplus_module_6 from "dfx/_common";
|
|
6
7
|
import WebSocket from "isomorphic-ws";
|
|
7
8
|
export const Reconnect = Symbol();
|
|
8
9
|
export class WebSocketError {
|
|
@@ -33,17 +34,17 @@ const socket = (urlRef) => tsplus_module_1.acquireRelease(tsplus_module_1.flatMa
|
|
|
33
34
|
ws.removeAllListeners?.();
|
|
34
35
|
ws.close();
|
|
35
36
|
}));
|
|
36
|
-
const
|
|
37
|
+
const offer = (ws, queue) => tsplus_module_1.async(resume => {
|
|
37
38
|
ws.addEventListener("message", message => {
|
|
38
|
-
|
|
39
|
+
tsplus_module_1.runFork(queue.offer(message.data));
|
|
39
40
|
});
|
|
40
41
|
ws.addEventListener("error", cause => {
|
|
41
|
-
|
|
42
|
+
resume(tsplus_module_1.fail(new WebSocketError(cause)));
|
|
42
43
|
});
|
|
43
44
|
ws.addEventListener("close", e => {
|
|
44
|
-
|
|
45
|
+
resume(tsplus_module_1.fail(new WebSocketCloseError(e.code, e.reason)));
|
|
45
46
|
});
|
|
46
|
-
})
|
|
47
|
+
});
|
|
47
48
|
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) => {
|
|
48
49
|
if (data === Reconnect) {
|
|
49
50
|
return tsplus_module_1.failSync(() => {
|
|
@@ -55,8 +56,13 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tspl
|
|
|
55
56
|
ws.send(data);
|
|
56
57
|
});
|
|
57
58
|
}));
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
}
|
|
59
|
+
const make = tsplus_module_1.map(tsplus_module_1.service(tsplus_module_5.Log.Log), log => {
|
|
60
|
+
const connect = (url, takeOutbound) => tsplus_module_1.map(tsplus_module_4.unbounded(), queue => {
|
|
61
|
+
const run = tsplus_module_1.scoped(tsplus_module_1.retry(tsplus_module_1.flatMap(socket(url), ws => tsplus_module_1.zipParLeft(offer(ws, queue), send(ws, takeOutbound, log))), tsplus_module_3.recurWhile(e => e._tag === "WebSocketCloseError" && e.code === 1012)));
|
|
62
|
+
return { run, queue: queue };
|
|
63
|
+
});
|
|
64
|
+
return { connect };
|
|
65
|
+
});
|
|
66
|
+
export const WS = tsplus_module_6.Tag();
|
|
67
|
+
export const LiveWS = tsplus_module_1.toLayer(make, WS);
|
|
62
68
|
//# 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
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Stream, Discord, Effect } from "dfx/_common";
|
|
1
|
+
import { Stream, Discord, Hub, Effect } from "dfx/_common";
|
|
2
2
|
import { Sharder } from "./DiscordGateway/Sharder.js";
|
|
3
|
-
export declare const make: import("@effect-http/client/_common").Effect<
|
|
4
|
-
|
|
5
|
-
dispatch: import("@effect-http/client/_common").Stream<never, never, import("./types.js").GatewayPayload<
|
|
3
|
+
export declare const make: import("@effect-http/client/_common").Effect<Sharder, never, {
|
|
4
|
+
run: import("@effect-http/client/_common").Effect<never, never, never>;
|
|
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
|
-
handleDispatch: <K_1 extends keyof import("./types.js").ReceiveEvents,
|
|
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-http/client/_common").Effect<R, E, A>) => import("@effect-http/client/_common").Effect<R, E, void>;
|
|
8
8
|
}>;
|
|
9
9
|
export interface DiscordGateway extends Effect.Success<typeof make> {
|
|
10
10
|
}
|
|
11
11
|
export declare const DiscordGateway: import("@effect-http/client/_common").Tag<DiscordGateway>;
|
|
12
|
-
export declare const LiveDiscordGateway: import("@effect-http/client/_common").Layer<
|
|
12
|
+
export declare const LiveDiscordGateway: import("@effect-http/client/_common").Layer<import("./DiscordREST.js").DiscordREST | import("./DiscordConfig.js").DiscordConfig | import("./DiscordGateway/ShardStore.js").ShardStore | import("./Log.js").Log | import("./DiscordGateway/DiscordWS.js").DiscordWSCodec | import("./RateLimit.js").RateLimitStore, never, DiscordGateway>;
|
package/DiscordGateway.js
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/stream/Stream";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
-
import * as tsplus_module_3 from "dfx/
|
|
4
|
-
import * as tsplus_module_4 from "@effect/io/
|
|
5
|
-
import
|
|
3
|
+
import * as tsplus_module_3 from "dfx/utils/hub";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Hub";
|
|
5
|
+
import * as tsplus_module_5 from "dfx/_common";
|
|
6
|
+
import * as tsplus_module_6 from "@effect/io/Layer";
|
|
7
|
+
import { LiveSharder, Sharder } from "./DiscordGateway/Sharder.js";
|
|
6
8
|
const fromDispatchFactory = (source) => (event) => tsplus_module_1.map(tsplus_module_1.filter(source, p => p.t === event), p => p.d);
|
|
7
|
-
const handleDispatchFactory = (
|
|
8
|
-
|
|
9
|
+
const handleDispatchFactory = (hub) => (event, handle) => tsplus_module_3.subscribeForEachPar(hub, _ => {
|
|
10
|
+
if (_.t === event) {
|
|
11
|
+
return handle(_.d);
|
|
12
|
+
}
|
|
13
|
+
return tsplus_module_2.unit();
|
|
14
|
+
});
|
|
15
|
+
export const make = tsplus_module_2.flatMap(tsplus_module_2.service(Sharder), sharder => tsplus_module_2.map(tsplus_module_4.unbounded(), hub => {
|
|
16
|
+
const dispatch = tsplus_module_1.fromHub(hub);
|
|
9
17
|
const fromDispatch = fromDispatchFactory(dispatch);
|
|
10
|
-
const handleDispatch = handleDispatchFactory(
|
|
18
|
+
const handleDispatch = handleDispatchFactory(hub);
|
|
19
|
+
const run = sharder.run(hub);
|
|
11
20
|
return {
|
|
12
|
-
|
|
21
|
+
run,
|
|
13
22
|
dispatch,
|
|
14
23
|
fromDispatch,
|
|
15
24
|
handleDispatch,
|
|
16
25
|
};
|
|
17
|
-
}))
|
|
18
|
-
export const DiscordGateway =
|
|
19
|
-
export const LiveDiscordGateway =
|
|
26
|
+
}));
|
|
27
|
+
export const DiscordGateway = tsplus_module_5.Tag();
|
|
28
|
+
export const LiveDiscordGateway = tsplus_module_6.provide(tsplus_module_6.scoped(DiscordGateway, make))(LiveSharder);
|
|
20
29
|
//# 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,EACxC,EAAE,CACtB,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,wBAAe,OAAO,CAAC,EAAnC,OAAO,wBACC,2BAA6D,EAArE,GAAG;IAET,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,CAAC,CAAA;IAE5B,OAAO;QACL,GAAG;QACH,QAAQ;QACR,YAAY;QACZ,cAAc;KACf,CAAA;GACD,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.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare class DiscordRESTError {
|
|
|
7
7
|
readonly _tag = "DiscordRESTError";
|
|
8
8
|
constructor(error: Http.HttpClientError);
|
|
9
9
|
}
|
|
10
|
-
declare const make: import("@effect-http/client/_common").Effect<import("./DiscordConfig.js").DiscordConfig |
|
|
10
|
+
declare const make: import("@effect-http/client/_common").Effect<import("./DiscordConfig.js").DiscordConfig | import("./Log.js").Log | import("./RateLimit.js").RateLimitStore | import("./RateLimit.js").RateLimiter | Http.executor.HttpRequestExecutor, never, {
|
|
11
11
|
addGuildMember: (guildId: string, userId: string, params?: Partial<import("./types.js").AddGuildMemberParams> | undefined, options?: Partial<Http.MakeOptions> | undefined) => RestResponse<import("./types.js").GuildMember>;
|
|
12
12
|
addGuildMemberRole: (guildId: string, userId: string, roleId: string, options?: Partial<Http.MakeOptions> | undefined) => RestResponse<any>;
|
|
13
13
|
addThreadMember: (channelId: string, userId: string, options?: Partial<Http.MakeOptions> | undefined) => RestResponse<any>;
|
|
@@ -190,5 +190,5 @@ declare const make: import("@effect-http/client/_common").Effect<import("./Disco
|
|
|
190
190
|
export interface DiscordREST extends Effect.Success<typeof make> {
|
|
191
191
|
}
|
|
192
192
|
export declare const DiscordREST: import("@effect-http/client/_common").Tag<DiscordREST>;
|
|
193
|
-
export declare const LiveDiscordREST: import("@effect-http/client/_common").Layer<import("./DiscordConfig.js").DiscordConfig |
|
|
193
|
+
export declare const LiveDiscordREST: import("@effect-http/client/_common").Layer<import("./DiscordConfig.js").DiscordConfig | import("./Log.js").Log | import("./RateLimit.js").RateLimitStore | Http.executor.HttpRequestExecutor, never, DiscordREST>;
|
|
194
194
|
export {};
|
package/DiscordREST.js
CHANGED
|
@@ -13,6 +13,7 @@ import * as Http from "@effect-http/client";
|
|
|
13
13
|
import { millis } from "@effect/data/Duration";
|
|
14
14
|
import { rateLimitFromHeaders, retryAfter, routeFromConfig, } from "./DiscordREST/utils.js";
|
|
15
15
|
import Pkg from "./package.json" assert { type: "json" };
|
|
16
|
+
import { LiveRateLimiter } from "./RateLimit.js";
|
|
16
17
|
export class DiscordRESTError {
|
|
17
18
|
error;
|
|
18
19
|
_tag = "DiscordRESTError";
|
|
@@ -113,5 +114,5 @@ const make = tsplus_module_3.flatMap(tsplus_module_3.service(tsplus_module_10.Di
|
|
|
113
114
|
});
|
|
114
115
|
})))));
|
|
115
116
|
export const DiscordREST = tsplus_module_2.Tag();
|
|
116
|
-
export const LiveDiscordREST = tsplus_module_11.effect(DiscordREST, make);
|
|
117
|
+
export const LiveDiscordREST = tsplus_module_11.provide(tsplus_module_11.effect(DiscordREST, make))(LiveRateLimiter);
|
|
117
118
|
//# sourceMappingURL=DiscordREST.js.map
|
package/DiscordREST.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordREST.js","sourceRoot":"","sources":["../src/DiscordREST.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"DiscordREST.js","sourceRoot":"","sources":["../src/DiscordREST.ts"],"names":[],"mappings":"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"}
|
package/Interactions/gateway.js
CHANGED
|
@@ -18,7 +18,9 @@ export const run = (postHandler, { sync = true } = {}) => (ix) => (() => {
|
|
|
18
18
|
: tsplus_module_1.unit();
|
|
19
19
|
const handle = handlers(ix.definitions);
|
|
20
20
|
const run = gateway.handleDispatch("INTERACTION_CREATE", i => tsplus_module_1.provideService(tsplus_module_2.pipe(tsplus_module_1.tap(handle[i.type](i), r => rest.createInteractionResponse(i.id, i.token, r)), postHandler), InteractionContext, i));
|
|
21
|
-
return tsplus_module_1.map(sync
|
|
21
|
+
return tsplus_module_1.map(sync
|
|
22
|
+
? tsplus_module_1.zipPar(tsplus_module_1.zipPar(tsplus_module_1.zipPar(run, globalSync), guildSync), gateway.run)
|
|
23
|
+
: run, () => void 0);
|
|
22
24
|
})));
|
|
23
25
|
})();
|
|
24
26
|
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAsB,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAsB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GACd,CACE,WAMyB,EACzB,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE,CACJ,CAAC,EAA4B,EAAE,EAAE;IAE7B,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,GACzD,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;mCAEhB,wBAAe,gBAAA,OAAO,CAAC,cAAc,CAAC,EAAlD,OAAO,4BACE,wCAAe,WAAW,CAAC,EAApC,IAAI,4BAGR,wBAAA,IAAI,CAAC,mCAAmC,EAAE,EAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAD3D,WAAW;QAIjB,MAAM,UAAU,GAAG,IAAI,CAAC,sCAAsC,CAC5D,WAAW,CAAC,EAAE,EACd,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CACvE,CAAA;QAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM;YAC9C,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CACzC,IAAI,CAAC,qCAAqC,CACxC,WAAW,CAAC,EAAE,EACd,CAAC,CAAC,EAAE,EACJ,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CACnD,CACF;YACH,CAAC,CAAC,sBAAa,CAAA;QAEjB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAC3D,+BAAA,gBAAA,IAAI,CACF,oBAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAK,CAAC,CAAC,EAAE,CACxB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CACjD,EACD,WAAW,CACZ,EAAgB,kBAAkB,EAAE,CAAC,CAAC,CACxC,CAAA;
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAsB,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAsB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAO7C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GACd,CACE,WAMyB,EACzB,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE,CACJ,CAAC,EAA4B,EAAE,EAAE;IAE7B,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,GACzD,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;mCAEhB,wBAAe,gBAAA,OAAO,CAAC,cAAc,CAAC,EAAlD,OAAO,4BACE,wCAAe,WAAW,CAAC,EAApC,IAAI,4BAGR,wBAAA,IAAI,CAAC,mCAAmC,EAAE,EAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAD3D,WAAW;QAIjB,MAAM,UAAU,GAAG,IAAI,CAAC,sCAAsC,CAC5D,WAAW,CAAC,EAAE,EACd,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CACvE,CAAA;QAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM;YAC9C,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CACzC,IAAI,CAAC,qCAAqC,CACxC,WAAW,CAAC,EAAE,EACd,CAAC,CAAC,EAAE,EACJ,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CACnD,CACF;YACH,CAAC,CAAC,sBAAa,CAAA;QAEjB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAC3D,+BAAA,gBAAA,IAAI,CACF,oBAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAK,CAAC,CAAC,EAAE,CACxB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CACjD,EACD,WAAW,CACZ,EAAgB,kBAAkB,EAAE,CAAC,CAAC,CACxC,CAAA;mCAGC,IAAI;YACF,CAAC,CAAC,uBAAA,uBAAA,uBAAA,GAAG,EAAQ,UAAU,CAAC,EAAQ,SAAS,CAAC,EAAQ,OAAO,CAAC,GAAG,CAAC;YAC9D,CAAC,CAAC,GAAG;;IAET,CAAA"}
|
package/README.md
CHANGED
|
@@ -17,11 +17,9 @@ import { Ix } from "dfx"
|
|
|
17
17
|
import { runIx, makeFromConfig } from "dfx/gateway"
|
|
18
18
|
|
|
19
19
|
// Create the dependencies layer
|
|
20
|
-
const Dependencies = makeFromConfig(
|
|
21
|
-
Config.
|
|
22
|
-
|
|
23
|
-
}),
|
|
24
|
-
)
|
|
20
|
+
const Dependencies = makeFromConfig({
|
|
21
|
+
token: Config.secret("DISCORD_BOT_TOKEN"),
|
|
22
|
+
})
|
|
25
23
|
|
|
26
24
|
// Create hello command that responds with "Hello!"
|
|
27
25
|
const hello = Ix.global(
|
|
@@ -41,7 +39,7 @@ const hello = Ix.global(
|
|
|
41
39
|
pipe(
|
|
42
40
|
Ix.builder.add(hello),
|
|
43
41
|
runIx(
|
|
44
|
-
Effect.catchAll(
|
|
42
|
+
Effect.catchAll(e =>
|
|
45
43
|
Effect.sync(() => {
|
|
46
44
|
console.error("CAUGHT ERROR", e)
|
|
47
45
|
}),
|
package/RateLimit.js
CHANGED
|
@@ -16,7 +16,7 @@ const makeLimiter = tsplus_module_3.flatMap(tsplus_module_3.service(RateLimitSto
|
|
|
16
16
|
windowMs,
|
|
17
17
|
limit,
|
|
18
18
|
delay: d.millis,
|
|
19
|
-
})), tsplus_module_3.sleep));
|
|
19
|
+
})), _ => (_.millis === 0 ? tsplus_module_3.unit() : tsplus_module_3.sleep(_))));
|
|
20
20
|
};
|
|
21
21
|
return { maybeWait };
|
|
22
22
|
}));
|
package/RateLimit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimit.js","sourceRoot":"","sources":["../src/RateLimit.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AA+B/C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAW,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;AAE/E,MAAM,WAAW,2BACC,wBAAe,cAAc,CAAC,EAAxC,KAAK,wBACG,wBAAe,gBAAA,GAAG,CAAC,GAAG,CAAC,EAA/B,GAAG;IAET,MAAM,SAAS,GAAG,CAChB,GAAW,EACX,MAAgB,EAChB,KAAa,EACb,UAAU,GAAG,IAAI,EACjB,EAAE;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAA;QAE3C,8BAAO,oBAAA,oBAAA,oBAAA,KAAK;aACT,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAClC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EACzD,CAAC,CAAC,EAAE,CACP,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE;YACpC,GAAG;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ;YACR,KAAK;YACL,KAAK,EAAE,CAAC,CAAC,MAAM;SAChB,CAAC,CACH,
|
|
1
|
+
{"version":3,"file":"RateLimit.js","sourceRoot":"","sources":["../src/RateLimit.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AA+B/C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,qBAAW,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;AAE/E,MAAM,WAAW,2BACC,wBAAe,cAAc,CAAC,EAAxC,KAAK,wBACG,wBAAe,gBAAA,GAAG,CAAC,GAAG,CAAC,EAA/B,GAAG;IAET,MAAM,SAAS,GAAG,CAChB,GAAW,EACX,MAAgB,EAChB,KAAa,EACb,UAAU,GAAG,IAAI,EACjB,EAAE;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAA;QAE3C,8BAAO,oBAAA,oBAAA,oBAAA,KAAK;aACT,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAClC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EACzD,CAAC,CAAC,EAAE,CACP,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE;YACpC,GAAG;YACH,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ;YACR,KAAK;YACL,KAAK,EAAE,CAAC,CAAC,MAAM;SAChB,CAAC,CACH,EACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAa,CAAC,CAAC,CAAC,sBAAa,CAAC,CAAC,CAAC,CAAC,EAAO;IACxE,CAAC,CAAA;IAED,OAAO,EAAE,SAAS,EAAE,CAAA;GACpB,CAAA;AAGF,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAA,GAAG,EAAe,CAAA;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAa,WAAW,EAAE,WAAW,CAAC,CAAA"}
|
package/_common.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
+
import { Effect } from "dfx/_common";
|
|
1
2
|
import type { Schedule as _Schedule } from "@effect/io/Schedule";
|
|
3
|
+
import * as Deferred from "@effect/io/Deferred";
|
|
2
4
|
export type { Cause } from "@effect/io/Cause";
|
|
3
5
|
export type { Config } from "@effect/io/Config";
|
|
4
6
|
export type { ConfigSecret } from "@effect/io/Config/Secret";
|
|
5
7
|
export type { ConfigError } from "@effect/io/Config/Error";
|
|
8
|
+
export type { Deferred } from "@effect/io/Deferred";
|
|
6
9
|
export type { Effect } from "@effect/io/Effect";
|
|
7
10
|
export type { Exit } from "@effect/io/Exit";
|
|
11
|
+
export type { RuntimeFiber } from "@effect/io/Fiber";
|
|
12
|
+
export type { Hub } from "@effect/io/Hub";
|
|
8
13
|
export type { Layer } from "@effect/io/Layer";
|
|
9
|
-
export type { Queue } from "@effect/io/Queue";
|
|
14
|
+
export type { Dequeue, Enqueue, Queue } from "@effect/io/Queue";
|
|
10
15
|
export type { Ref } from "@effect/io/Ref";
|
|
11
16
|
export type { Scope } from "@effect/io/Scope";
|
|
12
17
|
export type { Stream } from "@effect/stream/Stream";
|
|
@@ -25,3 +30,8 @@ export * as ConfigWrap from "./utils/ConfigWrap.js";
|
|
|
25
30
|
* @tsplus companion effect/io/Schedule.Ops
|
|
26
31
|
*/
|
|
27
32
|
export type Schedule<Env, In, Out> = _Schedule<Env, In, Out>;
|
|
33
|
+
/**
|
|
34
|
+
* @tsplus getter effect/io/Deferred await
|
|
35
|
+
* @tsplus location "dfx/_common"
|
|
36
|
+
*/
|
|
37
|
+
export declare const deferredAwait: <E, A>(self: Deferred.Deferred<E, A>) => Effect<never, E, A>;
|
package/_common.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import * as Deferred from "@effect/io/Deferred";
|
|
1
2
|
export { Tag } from "@effect/data/Context";
|
|
2
3
|
export * as Discord from "./types.js";
|
|
3
4
|
export * as ConfigWrap from "./utils/ConfigWrap.js";
|
|
5
|
+
/**
|
|
6
|
+
* @tsplus getter effect/io/Deferred await
|
|
7
|
+
*/
|
|
8
|
+
export const deferredAwait = Deferred.await;
|
|
4
9
|
//# sourceMappingURL=_common.js.map
|
package/_common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_common.js","sourceRoot":"","sources":["../src/_common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_common.js","sourceRoot":"","sources":["../src/_common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAmB/C,OAAO,EAAW,GAAG,EAAE,MAAM,sBAAsB,CAAA;AASnD,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AAQnD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAEC,QAAQ,CAAC,KAAK,CAAA"}
|
package/gateway.d.ts
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { ConfigWrap } from "dfx/_common";
|
|
2
2
|
import { DiscordConfig, Log } from "dfx";
|
|
3
3
|
export * as CachePrelude from "./Cache/prelude.js";
|
|
4
|
-
export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
|
|
5
4
|
export * as Gateway from "./DiscordGateway.js";
|
|
5
|
+
export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
|
|
6
6
|
export * as Shard from "./DiscordGateway/Shard.js";
|
|
7
7
|
export * as ShardStore from "./DiscordGateway/ShardStore.js";
|
|
8
8
|
export * as WS from "./DiscordGateway/WS.js";
|
|
9
9
|
export { run as runIx } from "./Interactions/gateway.js";
|
|
10
|
-
export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<Log.Log, never, import("dfx").
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const MemoryBot: import("@effect-http/client/_common").Layer<DiscordConfig.DiscordConfig | import("@effect-http/client/Request/Executor").HttpRequestExecutor | Log.Log, never, import("dfx").DiscordREST | import("dfx").RateLimitStore | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
|
15
|
-
export declare const makeLiveWithoutFetch: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<import("@effect-http/client/Request/Executor").HttpRequestExecutor, import("./_common.js").ConfigError, import("dfx").DiscordREST | DiscordConfig.DiscordConfig | Log.Log | import("dfx").RateLimitStore | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
|
16
|
-
export declare const makeLive: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<never, import("./_common.js").ConfigError, import("dfx").DiscordREST | DiscordConfig.DiscordConfig | Log.Log | import("dfx").RateLimitStore | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
|
10
|
+
export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<Log.Log, never, import("dfx").RateLimiter>;
|
|
11
|
+
export declare const MemoryBot: import("@effect-http/client/_common").Layer<DiscordConfig.DiscordConfig | Log.Log | import("@effect-http/client/Request/Executor").HttpRequestExecutor, never, import("dfx").DiscordREST | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
|
12
|
+
export declare const makeLiveWithoutFetch: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<import("@effect-http/client/Request/Executor").HttpRequestExecutor, import("./_common.js").ConfigError, import("dfx").DiscordREST | DiscordConfig.DiscordConfig | Log.Log | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
|
13
|
+
export declare const makeLive: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<never, import("./_common.js").ConfigError, import("dfx").DiscordREST | DiscordConfig.DiscordConfig | Log.Log | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
|
package/gateway.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Layer";
|
|
2
2
|
import * as tsplus_module_2 from "dfx/_common";
|
|
3
|
+
import { LiveFetchRequestExecutor } from "@effect-http/client";
|
|
3
4
|
import { DiscordConfig, LiveDiscordREST, Log } from "dfx";
|
|
4
|
-
import { LiveJsonDiscordWSCodec } from "./DiscordGateway/DiscordWS.js";
|
|
5
5
|
import { LiveDiscordGateway } from "./DiscordGateway.js";
|
|
6
|
-
import {
|
|
6
|
+
import { LiveJsonDiscordWSCodec } from "./DiscordGateway/DiscordWS.js";
|
|
7
7
|
import { LiveMemoryShardStore } from "./DiscordGateway/ShardStore.js";
|
|
8
8
|
import { LiveMemoryRateLimitStore, LiveRateLimiter } from "./RateLimit.js";
|
|
9
|
-
import { LiveFetchRequestExecutor } from "@effect-http/client";
|
|
10
9
|
export * as CachePrelude from "./Cache/prelude.js";
|
|
11
|
-
export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
|
|
12
10
|
export * as Gateway from "./DiscordGateway.js";
|
|
11
|
+
export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
|
|
13
12
|
export * as Shard from "./DiscordGateway/Shard.js";
|
|
14
13
|
export * as ShardStore from "./DiscordGateway/ShardStore.js";
|
|
15
14
|
export * as WS from "./DiscordGateway/WS.js";
|
|
16
15
|
export { run as runIx } from "./Interactions/gateway.js";
|
|
17
|
-
export const MemoryRateLimit = tsplus_module_1.
|
|
18
|
-
export const
|
|
19
|
-
export const MemorySharder = tsplus_module_1.provide(LiveSharder)((tsplus_module_1.merge(LiveJsonDiscordWSCodec)(tsplus_module_1.merge(MemoryRateLimit)(tsplus_module_1.merge(LiveMemoryShardStore)(MemoryREST)))));
|
|
20
|
-
export const MemoryGateway = tsplus_module_1.provide(LiveDiscordGateway)(MemorySharder);
|
|
21
|
-
export const MemoryBot = tsplus_module_1.provideMerge(tsplus_module_1.merge(MemoryRateLimit)(MemoryGateway))(MemoryREST);
|
|
16
|
+
export const MemoryRateLimit = tsplus_module_1.provide(LiveRateLimiter)(LiveMemoryRateLimitStore);
|
|
17
|
+
export const MemoryBot = tsplus_module_1.provide((tsplus_module_1.merge(MemoryRateLimit)((tsplus_module_1.provideMerge(LiveDiscordGateway)(LiveDiscordREST)))))((tsplus_module_1.merge(LiveJsonDiscordWSCodec)(tsplus_module_1.merge(LiveMemoryRateLimitStore)(LiveMemoryShardStore))));
|
|
22
18
|
export const makeLiveWithoutFetch = (config, debug = false) => {
|
|
23
19
|
const LiveLog = debug ? Log.LiveLogDebug : Log.LiveLog;
|
|
24
20
|
const LiveConfig = DiscordConfig.makeFromConfig(tsplus_module_2.ConfigWrap.unwrap(config));
|
package/gateway.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE1E,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,CAAC,MAAM,eAAe,2BAA+B,eAAe,EAA3C,wBAAwB,CAAmB,CAAA;AAE1E,MAAM,CAAC,MAAM,SAAS,2BAEpB,uBAA0C,eAAe,EAAxD,8BAAmB,kBAAkB,EAApC,eAAe,EAAsB,EAAmB,EAD1D,uBAAmD,sBAAsB,wBAAjD,wBAAwB,EAA/C,oBAAoB,GAAqD,CAChB,CAAA;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAA+C,EAC/C,KAAK,GAAG,KAAK,EACb,EAAE;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAA;IACtD,MAAM,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,gBAAA,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1E,MAAM,OAAO,gCAA0B,SAAS,wBAAtB,UAAU,EAApB,OAAO,EAAyB,CAAA;IAEhD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAA+C,EAC/C,KAAK,GAAG,KAAK,EACb,EAAE;IACF,+BAAmC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAA/D,wBAAwB,EAAuC;AACxE,CAAC,CAAA"}
|
package/global.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tsplus global
|
|
3
3
|
*/
|
|
4
|
-
import type { Cause, Config, ConfigSecret, ConfigError, Effect, Exit, Layer, Queue, Schedule, Scope, Stream, Chunk, Context, Duration, Equal, Either, HashMap, Maybe, Ref, HashSet, } from "dfx/_common";
|
|
4
|
+
import type { Cause, Config, ConfigSecret, ConfigError, Deferred, Effect, Exit, Hub, Layer, RuntimeFiber, Dequeue, Enqueue, Queue, Schedule, Scope, Stream, Chunk, Context, Duration, Equal, Either, HashMap, Maybe, Ref, HashSet, } from "dfx/_common";
|
|
5
5
|
/**
|
|
6
6
|
* @tsplus global
|
|
7
7
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"ws": "^8.12.1"
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false,
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "3948872d2a30f28847c0132151cd9b8d643c5e63"
|
|
56
56
|
}
|
package/utils/hub.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Hub, Effect, Dequeue, Maybe, RuntimeFiber } from "dfx/_common";
|
|
2
|
+
/**
|
|
3
|
+
* @tsplus fluent effect/io/Hub subscribeForEachPar
|
|
4
|
+
* @tsplus location "dfx/utils/hub"
|
|
5
|
+
*/
|
|
6
|
+
export declare const subscribeForEachPar: <R, E, A, X>(self: import("../_common.js").Hub<A>, effect: (_: A) => import("@effect-http/client/_common").Effect<R, E, X>) => import("@effect-http/client/_common").Effect<Exclude<R, import("../_common.js").Scope>, E, never>;
|
|
7
|
+
/**
|
|
8
|
+
* @tsplus fluent effect/io/Queue/Dequeue transform
|
|
9
|
+
* @tsplus location "dfx/utils/hub"
|
|
10
|
+
*/
|
|
11
|
+
export declare const transform: <A, B>(self: import("../_common.js").Dequeue<A>, f: (_: A) => B) => import("@effect-http/client/_common").Effect<never, never, readonly [import("../_common.js").Queue<B>, import("@effect-http/client/_common").Effect<never, never, never>]>;
|
|
12
|
+
/**
|
|
13
|
+
* @tsplus fluent effect/io/Effect foreverSwitch
|
|
14
|
+
* @tsplus location "dfx/utils/hub"
|
|
15
|
+
*/
|
|
16
|
+
export declare const foreverSwitch: <R, E, A, R1, E1, X>(self: import("@effect-http/client/_common").Effect<R, E, A>, f: (_: A) => import("@effect-http/client/_common").Effect<R1, E1, X>) => import("@effect-http/client/_common").Effect<R | R1, E | E1, never>;
|
package/utils/hub.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as tsplus_module_1 from "dfx/_common";
|
|
2
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Deferred";
|
|
4
|
+
import * as tsplus_module_4 from "@effect/io/Queue";
|
|
5
|
+
import * as tsplus_module_5 from "@effect/io/Fiber";
|
|
6
|
+
import * as tsplus_module_6 from "@fp-ts/core/Option";
|
|
7
|
+
import * as tsplus_module_7 from "@effect/io/Ref";
|
|
8
|
+
/**
|
|
9
|
+
* @tsplus fluent effect/io/Hub subscribeForEachPar
|
|
10
|
+
*/
|
|
11
|
+
export const subscribeForEachPar = (self, effect) => tsplus_module_2.flatMap(tsplus_module_3.make(), deferred => {
|
|
12
|
+
const run = tsplus_module_2.scoped(tsplus_module_2.flatMap(self
|
|
13
|
+
.subscribe(), queue => tsplus_module_2.forever(tsplus_module_2.flatMap(queue
|
|
14
|
+
.take(), _ => tsplus_module_2.fork(tsplus_module_2.catchAllCause(effect(_), _ => tsplus_module_3.failCause(deferred, _)))))));
|
|
15
|
+
return tsplus_module_2.zipParLeft(run, tsplus_module_1.deferredAwait(deferred));
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* @tsplus fluent effect/io/Queue/Dequeue transform
|
|
19
|
+
*/
|
|
20
|
+
export const transform = (self, f) => tsplus_module_2.map(tsplus_module_4.unbounded(), queue => {
|
|
21
|
+
const run = tsplus_module_2.forever(tsplus_module_2.flatMap(self.take(), _ => queue.offer(f(_))));
|
|
22
|
+
return [queue, run];
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* @tsplus fluent effect/io/Effect foreverSwitch
|
|
26
|
+
*/
|
|
27
|
+
export const foreverSwitch = (self, f) => tsplus_module_2.scoped(tsplus_module_2.flatMap(tsplus_module_3.make(), causeDeferred => tsplus_module_2.flatMap(tsplus_module_7.make(tsplus_module_6.none()), fiberRef => {
|
|
28
|
+
const run = tsplus_module_2.forever(tsplus_module_2.tap(tsplus_module_2.flatMap(tsplus_module_2.flatMap(self, _ => tsplus_module_2.forkScoped(tsplus_module_2.tapErrorCause(f(_), _ => tsplus_module_3.failCause(causeDeferred, _)))), fiber => tsplus_module_7.getAndSet(fiberRef, tsplus_module_6.some(fiber))), _ => tsplus_module_6.match(_, () => tsplus_module_2.unit(), fiber => tsplus_module_5.interrupt(fiber))));
|
|
29
|
+
return tsplus_module_2.zipParLeft(run, tsplus_module_1.deferredAwait(causeDeferred));
|
|
30
|
+
})));
|
|
31
|
+
//# sourceMappingURL=hub.js.map
|
package/utils/hub.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/utils/hub.ts"],"names":[],"mappings":";;;;;;;AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAY,EACZ,MAAiC,EACjC,EAAE,yBAEmB,sBAAyB,EAAtC,QAAQ;IAEd,MAAM,GAAG,0BAAG,wBAAA,IAAI;SACb,SAAS,EAAE,EAEV,KAAK,CAAC,EAAE,yBACN,wBAAA,KAAK;SACF,IAAI,EAAE,EAEL,CAAC,CAAC,EAAE,sBAAC,8BAAA,MAAM,CAAC,CAAC,CAAC,EAAe,CAAC,CAAC,EAAE,CAAC,0BAAA,QAAQ,EAAW,CAAC,CAAC,CAAC,CAAK,CAC9D,CAAQ,CACd,CAAO,CAAA;WAED,2BAAA,GAAG,gCAAY,QAAQ,EAAO;EACvC,CAAA;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,IAAgB,EAAE,CAAc,EAAE,EAAE,qBAEhD,2BAAoB,EAA9B,KAAK;IAEX,MAAM,GAAG,2BAAG,wBAAA,IAAI,CAAC,IAAI,EAAE,EAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAA;IAE/D,OAAO,CAAC,KAAK,EAAE,GAAG,CAAU,CAAA;EAC5B,CAAA;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAqB,EACrB,CAA8B,EACC,EAAE,gDAEP,sBAA0B,EAA5C,aAAa,4BACA,qBAAqC,sBAAY,CAAC,EAA/D,QAAQ;IAEd,MAAM,GAAG,2BAAG,oBAAA,wBAAA,wBAAA,IAAI,EAEZ,CAAC,CAAC,EAAE,4BAAC,8BAAA,CAAC,CAAC,CAAC,CAAC,EAAe,CAAC,CAAC,EAAE,CAAC,0BAAA,aAAa,EAAW,CAAC,CAAC,CAAC,CAAW,CACpE,EACQ,KAAK,CAAC,EAAE,CAAC,0BAAA,QAAQ,EAAW,qBAAW,KAAK,CAAC,CAAC,CAAC,EACnD,CAAC,CAAC,EAAE,CACP,sBAAA,CAAC,EACC,GAAG,EAAE,CAAC,sBAAa,EACnB,KAAK,CAAC,EAAE,2BAAC,KAAK,CAAU,CACzB,CACF,CAAQ,CAAA;WAEF,2BAAA,GAAG,gCAAY,aAAa,EAAO;IACrC,CAAA"}
|
package/webhooks.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ConfigWrap } from "dfx/_common";
|
|
|
2
2
|
import { DiscordConfig } from "dfx";
|
|
3
3
|
import { MakeConfigOpts } from "./Interactions/webhook.js";
|
|
4
4
|
export { BadWebhookSignature, makeConfigLayer, makeHandler, makeSimpleHandler, WebhookConfig, WebhookParseError, } from "./Interactions/webhook.js";
|
|
5
|
-
export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<import("./Log.js").Log, never, import("./RateLimit.js").
|
|
6
|
-
export declare const MemoryREST: import("@effect-http/client/_common").Layer<import("./DiscordConfig.js").DiscordConfig | import("@effect-http/client/Request/Executor").HttpRequestExecutor
|
|
7
|
-
export declare const makeLiveWithoutFetch: (options: ConfigWrap.Wrap<DiscordConfig.MakeOpts & MakeConfigOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<import("@effect-http/client/Request/Executor").HttpRequestExecutor, import("./_common.js").ConfigError, import("./DiscordREST.js").DiscordREST | import("./RateLimit.js").
|
|
8
|
-
export declare const makeLive: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts & MakeConfigOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<never, import("./_common.js").ConfigError, import("./DiscordREST.js").DiscordREST | import("./RateLimit.js").
|
|
5
|
+
export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<import("./Log.js").Log, never, import("./RateLimit.js").RateLimiter>;
|
|
6
|
+
export declare const MemoryREST: import("@effect-http/client/_common").Layer<import("./DiscordConfig.js").DiscordConfig | import("./Log.js").Log | import("@effect-http/client/Request/Executor").HttpRequestExecutor, never, import("./DiscordREST.js").DiscordREST>;
|
|
7
|
+
export declare const makeLiveWithoutFetch: (options: ConfigWrap.Wrap<DiscordConfig.MakeOpts & MakeConfigOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<import("@effect-http/client/Request/Executor").HttpRequestExecutor, import("./_common.js").ConfigError, import("./DiscordREST.js").DiscordREST | import("./RateLimit.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
|
|
8
|
+
export declare const makeLive: (config: ConfigWrap.Wrap<DiscordConfig.MakeOpts & MakeConfigOpts>, debug?: boolean) => import("@effect-http/client/_common").Layer<never, import("./_common.js").ConfigError, import("./DiscordREST.js").DiscordREST | import("./RateLimit.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
|
package/webhooks.js
CHANGED
|
@@ -6,8 +6,8 @@ import { LiveDiscordREST } from "./DiscordREST.js";
|
|
|
6
6
|
import { makeFromConfig } from "./Interactions/webhook.js";
|
|
7
7
|
import { LiveMemoryRateLimitStore, LiveRateLimiter } from "./RateLimit.js";
|
|
8
8
|
export { BadWebhookSignature, makeConfigLayer, makeHandler, makeSimpleHandler, WebhookConfig, WebhookParseError, } from "./Interactions/webhook.js";
|
|
9
|
-
export const MemoryRateLimit = tsplus_module_1.
|
|
10
|
-
export const MemoryREST = tsplus_module_1.provide(LiveDiscordREST)(
|
|
9
|
+
export const MemoryRateLimit = tsplus_module_1.provide(LiveRateLimiter)(LiveMemoryRateLimitStore);
|
|
10
|
+
export const MemoryREST = tsplus_module_1.provide(LiveDiscordREST)(LiveMemoryRateLimitStore);
|
|
11
11
|
export const makeLiveWithoutFetch = (options, debug = false) => {
|
|
12
12
|
const config = tsplus_module_2.ConfigWrap.unwrap(options);
|
|
13
13
|
const LiveWebhook = makeFromConfig(config);
|
package/webhooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAkB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE1E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,2BAA2B,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAkB,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE1E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,2BAA2B,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,2BAA+B,eAAe,EAA3C,wBAAwB,CAAmB,CAAA;AAE1E,MAAM,CAAC,MAAM,UAAU,2BAA+B,eAAe,EAA3C,wBAAwB,CAAmB,CAAA;AAErE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAiE,EACjE,KAAK,GAAG,KAAK,EACb,EAAE;IACF,MAAM,MAAM,GAAG,gBAAA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEzC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,OAAO,CAAA;IACtD,MAAM,UAAU,GAAG,gBAAA,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,OAAO,2BACe,uBAA4B,eAAe,wBAA7B,WAAW,EAAxB,UAAU,GAAiC,EAAtE,uBAAW,UAAU,EAApB,OAAO,EAAc,CAAgD,CAAA;IAExE,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAgE,EAChE,KAAK,GAAG,KAAK,EACb,EAAE;IACF,+BAAmC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAA/D,wBAAwB,EAAuC;AACxE,CAAC,CAAA"}
|