dfx 0.24.0 → 0.24.1
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/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 +3 -7
- package/gateway.js +2 -7
- 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 +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/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
|
@@ -7,10 +7,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
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const MemoryGateway: import("@effect-http/client/_common").Layer<DiscordConfig.DiscordConfig | import("@effect-http/client/Request/Executor").HttpRequestExecutor | Log.Log, never, import("./DiscordGateway.js").DiscordGateway>;
|
|
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 MemoryBot: import("@effect-http/client/_common").Layer<DiscordConfig.DiscordConfig | Log.Log | import("@effect-http/client/Request/Executor").HttpRequestExecutor, never, import("dfx").DiscordREST | import("./DiscordGateway.js").DiscordGateway>;
|
|
11
|
+
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("./DiscordGateway.js").DiscordGateway>;
|
|
12
|
+
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("./DiscordGateway.js").DiscordGateway>;
|
package/gateway.js
CHANGED
|
@@ -3,9 +3,8 @@ import * as tsplus_module_2 from "dfx/_common";
|
|
|
3
3
|
import { DiscordConfig, LiveDiscordREST, Log } from "dfx";
|
|
4
4
|
import { LiveJsonDiscordWSCodec } from "./DiscordGateway/DiscordWS.js";
|
|
5
5
|
import { LiveDiscordGateway } from "./DiscordGateway.js";
|
|
6
|
-
import { LiveSharder } from "./DiscordGateway/Sharder.js";
|
|
7
6
|
import { LiveMemoryShardStore } from "./DiscordGateway/ShardStore.js";
|
|
8
|
-
import { LiveMemoryRateLimitStore
|
|
7
|
+
import { LiveMemoryRateLimitStore } from "./RateLimit.js";
|
|
9
8
|
import { LiveFetchRequestExecutor } from "@effect-http/client";
|
|
10
9
|
export * as CachePrelude from "./Cache/prelude.js";
|
|
11
10
|
export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
|
|
@@ -14,11 +13,7 @@ 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
|
|
18
|
-
export const MemoryREST = tsplus_module_1.provide(LiveDiscordREST)(MemoryRateLimit);
|
|
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 MemoryBot = tsplus_module_1.provide((tsplus_module_1.provideMerge(LiveDiscordGateway)(LiveDiscordREST)))((tsplus_module_1.merge(LiveJsonDiscordWSCodec)(tsplus_module_1.merge(LiveMemoryRateLimitStore)(LiveMemoryShardStore))));
|
|
22
17
|
export const makeLiveWithoutFetch = (config, debug = false) => {
|
|
23
18
|
const LiveLog = debug ? Log.LiveLogDebug : Log.LiveLog;
|
|
24
19
|
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,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAmB,MAAM,gBAAgB,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,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,SAAS,2BAEpB,8BAAmB,kBAAkB,EAApC,eAAe,EAAsB,EADtC,uBAAmD,sBAAsB,wBAAjD,wBAAwB,EAA/C,oBAAoB,GAAqD,CACpC,CAAA;AAExC,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.1",
|
|
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": "1d0ccf17d79faab2cad7cef36296c51efb31dd0d"
|
|
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
|
@@ -3,6 +3,6 @@ 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
5
|
export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<import("./Log.js").Log, never, import("./RateLimit.js").RateLimitStore | import("./RateLimit.js").RateLimiter>;
|
|
6
|
-
export declare const MemoryREST: import("@effect-http/client/_common").Layer<import("./DiscordConfig.js").DiscordConfig | import("@effect-http/client/Request/Executor").HttpRequestExecutor
|
|
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
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").RateLimitStore | import("./RateLimit.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
|
|
8
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").RateLimitStore | import("./RateLimit.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
|