dfx 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ export interface OpenOpts {
8
8
  version?: number;
9
9
  encoding?: DiscordWSCodec;
10
10
  outbound: Effect<never, never, Message>;
11
- onReconnect?: Effect<never, never, void>;
11
+ onConnecting?: Effect<never, never, void>;
12
12
  }
13
13
  export interface DiscordWSCodec {
14
14
  type: "json" | "etf";
@@ -18,7 +18,7 @@ export interface DiscordWSCodec {
18
18
  export declare const DiscordWSCodec: import("@effect/data/Context").Tag<DiscordWSCodec, DiscordWSCodec>;
19
19
  export declare const LiveJsonDiscordWSCodec: import("@effect-http/client/_common").Layer<never, never, DiscordWSCodec>;
20
20
  declare const make: import("@effect/io/Effect").Effect<WS | DiscordWSCodec, never, {
21
- readonly connect: ({ url, version, outbound, onReconnect, }: OpenOpts) => import("@effect/io/Effect").Effect<never, never, {
21
+ readonly connect: ({ url, version, outbound, onConnecting, }: OpenOpts) => import("@effect/io/Effect").Effect<never, never, {
22
22
  readonly run: import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
23
23
  readonly take: import("@effect/io/Effect").Effect<never, never, import("../types.js").GatewayPayload<any>>;
24
24
  readonly setUrl: (url: string) => import("@effect/io/Effect").Effect<never, never, void>;
@@ -10,10 +10,10 @@ export const LiveJsonDiscordWSCodec = tsplus_module_2.succeed(DiscordWSCodec, {
10
10
  decode: p => JSON.parse(p.toString("utf8")),
11
11
  });
12
12
  const make = tsplus_module_3.flatMap(WS, ws => tsplus_module_3.map(DiscordWSCodec, encoding => {
13
- const connect = ({ url = "wss://gateway.discord.gg/", version = 10, outbound, onReconnect, }) => tsplus_module_3.flatMap(tsplus_module_4.make(`${url}?v=${version}&encoding=${encoding.type}`), urlRef => {
13
+ const connect = ({ url = "wss://gateway.discord.gg/", version = 10, outbound, onConnecting, }) => tsplus_module_3.flatMap(tsplus_module_4.make(`${url}?v=${version}&encoding=${encoding.type}`), urlRef => {
14
14
  const setUrl = (url) => tsplus_module_4.set(urlRef, `${url}?v=${version}&encoding=${encoding.type}`);
15
15
  const takeOutbound = tsplus_module_3.map(outbound, a => a === Reconnect ? a : encoding.encode(a));
16
- return tsplus_module_3.map(ws.connect(urlRef, takeOutbound, onReconnect), socket => {
16
+ return tsplus_module_3.map(ws.connect(urlRef, takeOutbound, onConnecting), socket => {
17
17
  const take = tsplus_module_3.map(socket.take, encoding.decode);
18
18
  const run = tsplus_module_3.retryWhile(socket.run, _ => (_._tag === "WebSocketCloseError" && _.code < 2000) ||
19
19
  (_._tag === "WebSocketError" && _.reason === "open-timeout"));
@@ -1 +1 @@
1
- {"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EACL,MAAM,EACN,SAAS,EACT,EAAE,GAGH,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAc,cAAc,EAAE;IAClE,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAA;AAEF,MAAM,IAAI,2BACK,EAAE,EAAT,EAAE,wBACW,cAAc,EAA3B,QAAQ;IAEd,MAAM,OAAO,GAAG,CAAC,EACf,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,EAAE,EACZ,QAAQ,EACR,WAAW,GACF,EAAE,EAAE,yBAGT,qBAAS,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,EADrD,MAAM;QAGZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,oBAAA,MAAM,EAAK,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,oBAAA,QAAQ,EAAK,CAAC,CAAC,EAAE,CACpC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACzC,CAAA;mCACgB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,EAAxD,MAAM;YACZ,MAAM,IAAI,GAAG,oBAAA,MAAM,CAAC,IAAI,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;YAE7C,MAAM,GAAG,GAAG,2BAAA,MAAM,CAAC,GAAG,EACpB,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnD,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAC/D,CAAA;YAED,OAAO;gBACL,GAAG;gBACH,IAAI;gBACJ,MAAM;aACE,CAAA;;MACV,CAAA;IAEJ,OAAO,EAAE,OAAO,EAAW,CAAA;GAC3B,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAA,GAAG,EAAa,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,2BAAa,wBAAA,IAAI,EAAS,SAAS,CAAC,EAAjC,MAAM,CAA2B,CAAA"}
1
+ {"version":3,"file":"DiscordWS.js","sourceRoot":"","sources":["../src/DiscordGateway/DiscordWS.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EACL,MAAM,EACN,SAAS,EACT,EAAE,GAGH,MAAM,uBAAuB,CAAA;AAkB9B,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAA,GAAG,EAAkB,CAAA;AACnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAc,cAAc,EAAE;IAClE,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC,CAAA;AAEF,MAAM,IAAI,2BACK,EAAE,EAAT,EAAE,wBACW,cAAc,EAA3B,QAAQ;IAEd,MAAM,OAAO,GAAG,CAAC,EACf,GAAG,GAAG,2BAA2B,EACjC,OAAO,GAAG,EAAE,EACZ,QAAQ,EACR,YAAY,GACH,EAAE,EAAE,yBAGT,qBAAS,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,EADrD,MAAM;QAGZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,oBAAA,MAAM,EAAK,GAAG,GAAG,MAAM,OAAO,aAAa,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAC7D,MAAM,YAAY,GAAG,oBAAA,QAAQ,EAAK,CAAC,CAAC,EAAE,CACpC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACzC,CAAA;mCACgB,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAzD,MAAM;YACZ,MAAM,IAAI,GAAG,oBAAA,MAAM,CAAC,IAAI,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;YAE7C,MAAM,GAAG,GAAG,2BAAA,MAAM,CAAC,GAAG,EACpB,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnD,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAC/D,CAAA;YAED,OAAO;gBACL,GAAG;gBACH,IAAI;gBACJ,MAAM;aACE,CAAA;;MACV,CAAA;IAEJ,OAAO,EAAE,OAAO,EAAW,CAAA;GAC3B,CAAA;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAA,GAAG,EAAa,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,2BAAa,wBAAA,IAAI,EAAS,SAAS,CAAC,EAAjC,MAAM,CAA2B,CAAA"}
@@ -29,12 +29,12 @@ export const make = tsplus_module_1.flatMap(DiscordConfig, ({ token, gateway })
29
29
  : tsplus_module_1.succeed(false));
30
30
  const prioritySend = (p) => outboundQueue.offer(p);
31
31
  const resume = tsplus_module_1.asUnit(tsplus_module_1.tap(tsplus_module_1.zipRight(setPhase(2 /* Phase.Connected */), pendingQueue.takeAll()), _ => outboundQueue.offerAll(_)));
32
- const onReconnect = tsplus_module_1.zipRight(tsplus_module_1.tap(outboundQueue
32
+ const onConnecting = tsplus_module_1.zipRight(tsplus_module_1.tap(outboundQueue
33
33
  .takeAll(), _ => pendingQueue.offerAll(tsplus_module_6.filter(_, msg => msg !== Reconnect &&
34
34
  msg.op !== 2 /* Discord.GatewayOpcode.IDENTIFY */ &&
35
35
  msg.op !== 6 /* Discord.GatewayOpcode.RESUME */ &&
36
36
  msg.op !== 1 /* Discord.GatewayOpcode.HEARTBEAT */))), setPhase(0 /* Phase.Connecting */));
37
- return tsplus_module_1.flatMap(dws.connect({ outbound, onReconnect }), socket => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.map(tsplus_module_5.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_5.some(p)), p => p.d)), ([latestReady, updateLatestReady]) => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.fromNullable(p.s)), ([latestSequence, updateLatestSequence]) => {
37
+ return tsplus_module_1.flatMap(dws.connect({ outbound, onConnecting }), socket => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.map(tsplus_module_5.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_5.some(p)), p => p.d)), ([latestReady, updateLatestReady]) => tsplus_module_1.flatMap(Utils.latest(p => tsplus_module_5.fromNullable(p.s)), ([latestSequence, updateLatestSequence]) => {
38
38
  const maybeUpdateUrl = (p) => tsplus_module_5.match(tsplus_module_5.map(tsplus_module_5.filter((p) => p.op === 0 /* Discord.GatewayOpcode.DISPATCH */ && p.t === "READY")(tsplus_module_5.some(p)), p => p.d), () => tsplus_module_1.unit(), a => socket.setUrl(a.resume_gateway_url));
39
39
  return tsplus_module_1.flatMap(tsplus_module_4.unbounded(), hellos => tsplus_module_1.map(tsplus_module_4.unbounded(), acks => {
40
40
  // heartbeats
@@ -1 +1 @@
1
- {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shard.js","sourceRoot":"","sources":["../src/DiscordGateway/Shard.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export declare class WebSocketCloseError {
19
19
  constructor(code: number, reason: string);
20
20
  }
21
21
  declare const make: import("@effect/io/Effect").Effect<Log, never, {
22
- readonly connect: (url: Ref<string>, takeOutbound: Effect<never, never, Message>, onReconnect?: import("@effect/io/Effect").Effect<never, never, void>, openTimeout?: import("../_common.js").Duration) => import("@effect/io/Effect").Effect<never, never, {
22
+ readonly connect: (url: Ref<string>, takeOutbound: Effect<never, never, Message>, onConnecting?: import("@effect/io/Effect").Effect<never, never, void>, openTimeout?: import("../_common.js").Duration) => import("@effect/io/Effect").Effect<never, never, {
23
23
  readonly run: import("@effect/io/Effect").Effect<never, WebSocketError | WebSocketCloseError, never>;
24
24
  readonly take: import("@effect/io/Effect").Effect<never, never, WebSocket.Data>;
25
25
  }>;
@@ -66,8 +66,8 @@ const send = (ws, take, log) => tsplus_module_1.forever(tsplus_module_1.tap(tspl
66
66
  });
67
67
  }));
68
68
  const make = tsplus_module_1.map(Log, log => {
69
- const connect = (url, takeOutbound, onReconnect = tsplus_module_1.unit(), openTimeout = tsplus_module_4.seconds(3)) => tsplus_module_1.map(tsplus_module_5.unbounded(), queue => {
70
- const run = tsplus_module_1.retryWhile(tsplus_module_1.tapError(tsplus_module_1.scoped(tsplus_module_1.flatMap(socket(url), ws => tsplus_module_1.zipParLeft(offer(ws, queue, log), tsplus_module_1.zipRight(waitForOpen(ws, openTimeout), send(ws, takeOutbound, log))))), _ => (isReconnect(_) ? onReconnect : tsplus_module_1.unit())), isReconnect);
69
+ const connect = (url, takeOutbound, onConnecting = tsplus_module_1.unit(), openTimeout = tsplus_module_4.seconds(3)) => tsplus_module_1.map(tsplus_module_5.unbounded(), queue => {
70
+ const run = tsplus_module_1.retryWhile(tsplus_module_1.scoped(tsplus_module_1.flatMap(tsplus_module_1.zipRight(onConnecting, socket(url)), ws => tsplus_module_1.zipParLeft(offer(ws, queue, log), tsplus_module_1.zipRight(waitForOpen(ws, openTimeout), send(ws, takeOutbound, log))))), isReconnect);
71
71
  return { run, take: queue.take() };
72
72
  });
73
73
  return { connect };
@@ -1 +1 @@
1
- {"version":3,"file":"WS.js","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WS.js","sourceRoot":"","sources":["../src/DiscordGateway/WS.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,9 @@ export interface RunOpts {
12
12
  * @tsplus location "dfx/Interactions/gateway"
13
13
  */
14
14
  export declare const run: <R, R2, E, E2>(postHandler: (effect: import("@effect/io/Effect").Effect<R | DiscordREST | import("../types.js").Interaction, E | DiscordRESTError | DefinitionNotFound, void>) => import("@effect/io/Effect").Effect<R2, E2, void>, { sync }?: RunOpts) => (ix: InteractionBuilder<R, E>) => import("@effect/io/Effect").Effect<DiscordREST | DiscordGateway | Exclude<R2, import("../types.js").Interaction>, E2 | DiscordRESTError | Http.ResponseDecodeError, never>;
15
+ export interface InteractionsRegistry {
16
+ readonly register: (ix: InteractionBuilder<never, never>) => Effect<never, never, void>;
17
+ readonly run: Effect<DiscordREST | DiscordGateway, DiscordRESTError | Http.ResponseDecodeError, never>;
18
+ }
19
+ export declare const InteractionsRegistry: import("@effect/data/Context").Tag<InteractionsRegistry, InteractionsRegistry>;
20
+ export declare const InteractionsRegistryLive: import("@effect-http/client/_common").Layer<never, never, InteractionsRegistry>;
@@ -1,15 +1,17 @@
1
1
  import * as tsplus_module_1 from "@effect/io/Effect";
2
2
  import * as tsplus_module_2 from "@effect/data/Function";
3
+ import * as tsplus_module_3 from "@effect/io/Ref";
4
+ import * as tsplus_module_4 from "dfx/_common";
3
5
  import * as Http from "@effect-http/client";
4
6
  import { DiscordGateway } from "dfx/DiscordGateway";
5
7
  import { DiscordREST } from "dfx/DiscordREST";
6
8
  import { handlers } from "./handlers.js";
7
- import { Interaction } from "./index.js";
9
+ import { Interaction, builder } from "./index.js";
8
10
  import { splitDefinitions } from "./utils.js";
9
11
  /**
10
12
  * @tsplus pipeable dfx/InteractionBuilder runGateway
11
13
  */
12
- export const run = (postHandler, { sync = true } = {}) => (ix) => (() => {
14
+ const run_1 = (postHandler, { sync = true } = {}) => (ix) => (() => {
13
15
  const { GlobalApplicationCommand, GuildApplicationCommand } = splitDefinitions(ix.definitions);
14
16
  return tsplus_module_1.flatMap(DiscordGateway, gateway => tsplus_module_1.flatMap(DiscordREST, rest => tsplus_module_1.flatMap(tsplus_module_1.flatMap(rest.getCurrentBotApplicationInformation(), a => a.json), application => {
15
17
  const globalSync = rest.bulkOverwriteGlobalApplicationCommands(application.id, { body: Http.body.json(GlobalApplicationCommand.map(a => a.command)) });
@@ -17,8 +19,17 @@ export const run = (postHandler, { sync = true } = {}) => (ix) => (() => {
17
19
  ? gateway.handleDispatch("GUILD_CREATE", a => rest.bulkOverwriteGuildApplicationCommands(application.id, a.id, GuildApplicationCommand.map(a => a.command)))
18
20
  : tsplus_module_1.never();
19
21
  const handle = handlers(ix.definitions);
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), Interaction, i));
22
+ const run = gateway.handleDispatch("INTERACTION_CREATE", i => tsplus_module_1.provideService(tsplus_module_2.pipe(tsplus_module_1.tap(ix
23
+ .transformRespond(handle[i.type](i)), r => rest.createInteractionResponse(i.id, i.token, r)), ix.transform, postHandler), Interaction, i));
21
24
  return sync ? tsplus_module_1.zipParRight(tsplus_module_1.zipParRight(run, globalSync), guildSync) : run;
22
25
  })));
23
26
  })();
27
+ export const run = run_1;
28
+ const makeRegistry = tsplus_module_1.map(tsplus_module_3.make(builder), ref => {
29
+ const register = (ix) => tsplus_module_3.update(ref, _ => _.concat(ix));
30
+ const run = tsplus_module_1.flatMap(tsplus_module_3.get(ref), _ => run_1(_ => tsplus_module_1.catchAllCause(_, _ => tsplus_module_1.logErrorCause(_)))(_));
31
+ return { register, run };
32
+ });
33
+ export const InteractionsRegistry = tsplus_module_4.Tag();
34
+ export const InteractionsRegistryLive = tsplus_module_1.toLayer(makeRegistry, InteractionsRegistry);
24
35
  //# 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,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAoB,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAsB,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAM7C;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GACd,CACE,WAMyB,EACzB,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE,CACJ,CACE,EAA4B,EAK5B,EAAE;IAEA,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,GACzD,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;mCAEhB,cAAc,EAA1B,OAAO,4BACE,WAAW,EAApB,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,uBAAc,CAAA;QAElB,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,WAAW,EAAE,CAAC,CAAC,CACjC,CAAA;eAEQ,IAAI,CAAC,CAAC,CAAC,4BAAA,4BAAA,GAAG,EAAa,UAAU,CAAC,EAAa,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;;IACxE,CAAA"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/Interactions/gateway.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,38 @@
1
+ import { Cause } from "dfx/_common";
2
+ import * as Http from "@effect-http/client";
1
3
  import { DiscordREST } from "dfx";
2
4
  import { Discord, Effect } from "dfx/_common";
3
5
  import * as D from "./definitions.js";
4
- import * as Http from "@effect-http/client";
5
6
  export { response } from "../Helpers/interactions.js";
6
- export * as helpers from "../Helpers/interactions.js";
7
7
  export * from "./context.js";
8
- export { autocomplete, global, guild, InteractionDefinition, messageComponent, modalSubmit, } from "./definitions.js";
8
+ export { InteractionDefinition, autocomplete, global, guild, messageComponent, modalSubmit, } from "./definitions.js";
9
+ type ExtractTag<A> = A extends {
10
+ _tag: infer Tag;
11
+ } ? Tag extends string ? Tag : never : never;
9
12
  /**
10
13
  * @tsplus type dfx/InteractionBuilder
11
14
  */
12
15
  export declare class InteractionBuilder<R, E> {
13
16
  readonly definitions: D.InteractionDefinition<R, E>[];
14
- constructor(definitions: D.InteractionDefinition<R, E>[]);
17
+ readonly transform: (self: Effect<any, any, any>) => Effect<R, E, void>;
18
+ readonly transformRespond: (self: Effect<any, any, Discord.InteractionResponse>) => Effect<R, E, Discord.InteractionResponse>;
19
+ constructor(definitions: D.InteractionDefinition<R, E>[], transform: (self: Effect<any, any, any>) => Effect<R, E, void>, transformRespond: (self: Effect<any, any, Discord.InteractionResponse>) => Effect<R, E, Discord.InteractionResponse>);
15
20
  add<R1, E1>(definition: D.InteractionDefinition<R1, E1>): InteractionBuilder<R | R1, E | E1>;
16
21
  concat<R1, E1>(builder: InteractionBuilder<R1, E1>): InteractionBuilder<R | R1, E | E1>;
22
+ catchAllCause<R1, E1>(f: (cause: Cause<E>) => Effect<R1, E1, void>): InteractionBuilder<R | R1, E1>;
23
+ catchAllCauseRespond<R1, E1>(f: (cause: Cause<E>) => Effect<R1, E1, Discord.InteractionResponse>): InteractionBuilder<R | R1, E1>;
24
+ catchAll<R1, E1>(f: (error: E) => Effect<R1, E1, void>): InteractionBuilder<R | R1, E1>;
25
+ catchAllRespond<R1, E1>(f: (error: E) => Effect<R1, E1, Discord.InteractionResponse>): InteractionBuilder<R | R1, E1>;
26
+ catchTag<T extends ExtractTag<E>, R1, E1>(tag: T, f: (error: Extract<E, {
27
+ _tag: T;
28
+ }>) => Effect<R1, E1, void>): InteractionBuilder<R | R1, E1 | Exclude<E, {
29
+ _tag: T;
30
+ }>>;
31
+ catchTagRespond<T extends ExtractTag<E>, R1, E1>(tag: T, f: (error: Extract<E, {
32
+ _tag: T;
33
+ }>) => Effect<R1, E1, Discord.InteractionResponse>): InteractionBuilder<R | R1, E1 | Exclude<E, {
34
+ _tag: T;
35
+ }>>;
17
36
  get syncGlobal(): Effect<DiscordREST, import("../DiscordREST.js").DiscordRESTError | Http.ResponseDecodeError, import("../DiscordREST/types.js").ResponseWithData<Discord.ApplicationCommand[]>>;
18
37
  syncGuild(appId: Discord.Snowflake, guildId: Discord.Snowflake): Effect<DiscordREST, import("../DiscordREST.js").DiscordRESTError, import("../DiscordREST/types.js").ResponseWithData<Discord.ApplicationCommand[]>>;
19
38
  }
@@ -1,8 +1,9 @@
1
1
  import * as tsplus_module_1 from "@effect/io/Effect";
2
- import { DiscordREST } from "dfx";
2
+ import * as tsplus_module_2 from "@effect/data/Function";
3
3
  import * as Http from "@effect-http/client";
4
+ import { catchTag } from "@effect/io/Effect";
5
+ import { DiscordREST } from "dfx";
4
6
  export { response } from "../Helpers/interactions.js";
5
- export * as helpers from "../Helpers/interactions.js";
6
7
  export * from "./context.js";
7
8
  export { autocomplete, global, guild, messageComponent, modalSubmit, } from "./definitions.js";
8
9
  /**
@@ -10,20 +11,36 @@ export { autocomplete, global, guild, messageComponent, modalSubmit, } from "./d
10
11
  */
11
12
  export class InteractionBuilder {
12
13
  definitions;
13
- constructor(definitions) {
14
+ transform;
15
+ transformRespond;
16
+ constructor(definitions, transform, transformRespond) {
14
17
  this.definitions = definitions;
18
+ this.transform = transform;
19
+ this.transformRespond = transformRespond;
15
20
  }
16
21
  add(definition) {
17
- return new InteractionBuilder([
18
- ...this.definitions,
19
- definition,
20
- ]);
22
+ return new InteractionBuilder([...this.definitions, definition], this.transform, this.transformRespond);
21
23
  }
22
24
  concat(builder) {
23
- return new InteractionBuilder([
24
- ...this.definitions,
25
- ...builder.definitions,
26
- ]);
25
+ return new InteractionBuilder([...this.definitions, ...builder.definitions], this.transform, this.transformRespond);
26
+ }
27
+ catchAllCause(f) {
28
+ return new InteractionBuilder(this.definitions, _ => tsplus_module_1.catchAllCause(this.transform(_), f), this.transformRespond);
29
+ }
30
+ catchAllCauseRespond(f) {
31
+ return new InteractionBuilder(this.definitions, this.transform, _ => tsplus_module_1.catchAllCause(this.transformRespond(_), f));
32
+ }
33
+ catchAll(f) {
34
+ return new InteractionBuilder(this.definitions, _ => tsplus_module_1.catchAll(this.transform(_), f), this.transformRespond);
35
+ }
36
+ catchAllRespond(f) {
37
+ return new InteractionBuilder(this.definitions, this.transform, _ => tsplus_module_1.catchAll(this.transformRespond(_), f));
38
+ }
39
+ catchTag(tag, f) {
40
+ return new InteractionBuilder(this.definitions, _ => catchTag(this.transform(_), tag, f), this.transformRespond);
41
+ }
42
+ catchTagRespond(tag, f) {
43
+ return new InteractionBuilder(this.definitions, this.transform, _ => catchTag(this.transformRespond(_), tag, f));
27
44
  }
28
45
  get syncGlobal() {
29
46
  const commands = this.definitions
@@ -41,7 +58,7 @@ export class InteractionBuilder {
41
58
  return tsplus_module_1.flatMap(DiscordREST, rest => rest.bulkOverwriteGuildApplicationCommands(appId, guildId, commands));
42
59
  }
43
60
  }
44
- export const builder = new InteractionBuilder([]);
61
+ export const builder = new InteractionBuilder([], tsplus_module_2.identity, tsplus_module_2.identity);
45
62
  // Filters
46
63
  export const id = (query) => (customId) => tsplus_module_1.succeed(query === customId);
47
64
  export const idStartsWith = (query) => (customId) => tsplus_module_1.succeed(customId.startsWith(query));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/Interactions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/Interactions/index.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export interface HandleWebhookOpts<E> {
33
33
  * @tsplus getter dfx/InteractionBuilder webhookHandler
34
34
  * @tsplus location "dfx/Interactions/webhook"
35
35
  */
36
- export declare const makeHandler: <R, E>(ix: InteractionBuilder<R, E>) => ({ headers, body, success, error, }: HandleWebhookOpts<DefinitionNotFound | BadWebhookSignature | WebhookParseError | E>) => import("@effect/io/Effect").Effect<WebhookConfig | Exclude<R, import("../types.js").Interaction>, never, void>;
36
+ export declare const makeHandler: <R, E>(ix: InteractionBuilder<R, E>) => ({ headers, body, success, error, }: HandleWebhookOpts<DefinitionNotFound | BadWebhookSignature | WebhookParseError | E>) => import("@effect/io/Effect").Effect<R, never, void>;
37
37
  /**
38
38
  * @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
39
39
  * @tsplus location "dfx/Interactions/webhook"
@@ -43,7 +43,8 @@ const run = (definitions) => {
43
43
  */
44
44
  export const makeHandler = (ix) => {
45
45
  const handle = run(ix.definitions);
46
- return ({ headers, body, success, error, }) => tsplus_module_7.catchAllCause(tsplus_module_7.flatMap(handle(headers, body), success), error);
46
+ return ({ headers, body, success, error, }) => tsplus_module_7.catchAllCause(ix
47
+ .transform(tsplus_module_7.flatMap(ix.transformRespond(handle(headers, body)), success)), error);
47
48
  };
48
49
  /**
49
50
  * @tsplus getter dfx/InteractionBuilder simpleWebhookHandler
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/Interactions/webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../src/Interactions/webhook.ts"],"names":[],"mappings":"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"}
package/gateway.d.ts CHANGED
@@ -6,7 +6,7 @@ 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
- export { run as runIx } from "./Interactions/gateway.js";
9
+ export { InteractionsRegistry, InteractionsRegistryLive, run as runIx, } from "./Interactions/gateway.js";
10
10
  export declare const MemoryRateLimit: import("@effect-http/client/_common").Layer<Log.Log, never, import("dfx").RateLimiter>;
11
11
  export declare const MemoryBot: import("@effect-http/client/_common").Layer<DiscordConfig.DiscordConfig | Log.Log | import("@effect-http/client").HttpRequestExecutor, never, import("dfx").DiscordREST | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
12
12
  export declare const makeLiveWithoutFetch: (config: Config.Wrap<DiscordConfig.MakeOpts>) => import("@effect-http/client/_common").Layer<import("@effect-http/client").HttpRequestExecutor, import("./_common.js").ConfigError, import("dfx").DiscordREST | DiscordConfig.DiscordConfig | Log.Log | import("dfx").RateLimiter | import("./DiscordGateway.js").DiscordGateway>;
package/gateway.js CHANGED
@@ -13,7 +13,7 @@ export * as DiscordWS from "./DiscordGateway/DiscordWS.js";
13
13
  export * as Shard from "./DiscordGateway/Shard.js";
14
14
  export * as ShardStore from "./DiscordGateway/ShardStore.js";
15
15
  export * as WS from "./DiscordGateway/WS.js";
16
- export { run as runIx } from "./Interactions/gateway.js";
16
+ export { InteractionsRegistry, InteractionsRegistryLive, run as runIx, } from "./Interactions/gateway.js";
17
17
  export const MemoryRateLimit = tsplus_module_1.provide(LiveRateLimiter)(LiveMemoryRateLimitStore);
18
18
  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))));
19
19
  export const makeLiveWithoutFetch = (config) => tsplus_module_1.unwrapEffect(tsplus_module_3.map(tsplus_module_3.map(tsplus_module_3.config(tsplus_module_2.unwrap(config)), DiscordConfig.make), config => {
package/gateway.js.map CHANGED
@@ -1 +1 @@
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,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxE,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,MAA2C,EAC3C,EAAE,CACF,6BACE,oBAAA,2CAAA,uBAAc,MAAM,CAAC,GACP,aAAa,CAAC,IAAI,CAAC,EAC1B,MAAM,CAAC,EAAE;IACZ,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAA;IAC7D,MAAM,UAAU,GAAG,wBAAc,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACrE,oCAA8B,SAAS,wBAAtB,UAAU,EAApB,OAAO,GAAyB;AACzC,CAAC,CAAC,CACL,CAAA;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA2C,EAAE,EAAE,yBAC1C,oBAAoB,CAAC,MAAM,CAAC,EAAxD,wBAAwB,CAAgC,CAAA"}
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,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxE,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,EACL,oBAAoB,EACpB,wBAAwB,EACxB,GAAG,IAAI,KAAK,GACb,MAAM,2BAA2B,CAAA;AAElC,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,MAA2C,EAC3C,EAAE,CACF,6BACE,oBAAA,2CAAA,uBAAc,MAAM,CAAC,GACP,aAAa,CAAC,IAAI,CAAC,EAC1B,MAAM,CAAC,EAAE;IACZ,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAA;IAC7D,MAAM,UAAU,GAAG,wBAAc,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACrE,oCAA8B,SAAS,wBAAtB,UAAU,EAApB,OAAO,GAAyB;AACzC,CAAC,CAAC,CACL,CAAA;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA2C,EAAE,EAAE,yBAC1C,oBAAoB,CAAC,MAAM,CAAC,EAAxD,wBAAwB,CAAgC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.43.0",
3
+ "version": "0.44.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -48,5 +48,5 @@
48
48
  "ws": "^8.13.0"
49
49
  },
50
50
  "sideEffects": false,
51
- "gitHead": "eb969e6b2d8ac1c0a5ab877898feae57728b5e3c"
51
+ "gitHead": "e8c64ec253a70ff461247eafcccce4d181a1d67d"
52
52
  }
@@ -14,7 +14,7 @@ export interface OpenOpts {
14
14
  version?: number
15
15
  encoding?: DiscordWSCodec
16
16
  outbound: Effect<never, never, Message>
17
- onReconnect?: Effect<never, never, void>
17
+ onConnecting?: Effect<never, never, void>
18
18
  }
19
19
 
20
20
  export interface DiscordWSCodec {
@@ -37,7 +37,7 @@ const make = Do($ => {
37
37
  url = "wss://gateway.discord.gg/",
38
38
  version = 10,
39
39
  outbound,
40
- onReconnect,
40
+ onConnecting,
41
41
  }: OpenOpts) =>
42
42
  Do($ => {
43
43
  const urlRef = $(
@@ -48,7 +48,7 @@ const make = Do($ => {
48
48
  const takeOutbound = outbound.map(a =>
49
49
  a === Reconnect ? a : encoding.encode(a),
50
50
  )
51
- const socket = $(ws.connect(urlRef, takeOutbound, onReconnect))
51
+ const socket = $(ws.connect(urlRef, takeOutbound, onConnecting))
52
52
  const take = socket.take.map(encoding.decode)
53
53
 
54
54
  const run = socket.run.retryWhile(
@@ -56,7 +56,7 @@ export const make = Do($ => {
56
56
  .zipRight(pendingQueue.takeAll())
57
57
  .tap(_ => outboundQueue.offerAll(_)).asUnit
58
58
 
59
- const onReconnect = outboundQueue
59
+ const onConnecting = outboundQueue
60
60
  .takeAll()
61
61
  .tap(_ =>
62
62
  pendingQueue.offerAll(
@@ -71,7 +71,7 @@ export const make = Do($ => {
71
71
  )
72
72
  .zipRight(setPhase(Phase.Connecting))
73
73
 
74
- const socket = $(dws.connect({ outbound, onReconnect }))
74
+ const socket = $(dws.connect({ outbound, onConnecting }))
75
75
 
76
76
  const [latestReady, updateLatestReady] = $(
77
77
  Utils.latest(p =>
@@ -98,20 +98,20 @@ const make = Do($ => {
98
98
  const connect = (
99
99
  url: Ref<string>,
100
100
  takeOutbound: Effect<never, never, Message>,
101
- onReconnect = Effect.unit(),
101
+ onConnecting = Effect.unit(),
102
102
  openTimeout = Duration.seconds(3),
103
103
  ) =>
104
104
  Do($ => {
105
105
  const queue = $(Queue.unbounded<WebSocket.Data>())
106
106
 
107
- const run = socket(url)
107
+ const run = onConnecting
108
+ .zipRight(socket(url))
108
109
  .flatMap(ws =>
109
110
  offer(ws, queue, log).zipParLeft(
110
111
  waitForOpen(ws, openTimeout).zipRight(send(ws, takeOutbound, log)),
111
112
  ),
112
113
  )
113
- .scoped.tapError(_ => (isReconnect(_) ? onReconnect : Effect.unit()))
114
- .retryWhile(isReconnect)
114
+ .scoped.retryWhile(isReconnect)
115
115
 
116
116
  return { run, take: queue.take() } as const
117
117
  })
@@ -2,7 +2,7 @@ import * as Http from "@effect-http/client"
2
2
  import { DiscordGateway } from "dfx/DiscordGateway"
3
3
  import { DiscordREST, DiscordRESTError } from "dfx/DiscordREST"
4
4
  import { DefinitionNotFound, handlers } from "./handlers.js"
5
- import { Interaction, InteractionBuilder } from "./index.js"
5
+ import { Interaction, InteractionBuilder, builder } from "./index.js"
6
6
  import { splitDefinitions } from "./utils.js"
7
7
 
8
8
  export interface RunOpts {
@@ -60,12 +60,42 @@ export const run =
60
60
 
61
61
  const run = gateway.handleDispatch("INTERACTION_CREATE", i =>
62
62
  pipe(
63
- handle[i.type](i).tap(r =>
64
- rest.createInteractionResponse(i.id, i.token, r),
65
- ),
63
+ ix
64
+ .transformRespond(handle[i.type](i))
65
+ .tap(r => rest.createInteractionResponse(i.id, i.token, r)),
66
+ ix.transform,
66
67
  postHandler,
67
68
  ).provideService(Interaction, i),
68
69
  )
69
70
 
70
71
  return $(sync ? run.zipParRight(globalSync).zipParRight(guildSync) : run)
71
72
  })
73
+
74
+ const makeRegistry = Do($ => {
75
+ const ref = $(Ref.make(builder))
76
+
77
+ const register = (ix: InteractionBuilder<never, never>) =>
78
+ ref.update(_ => _.concat(ix))
79
+
80
+ const run = ref.get.flatMap(_ =>
81
+ _.runGateway(_ => _.catchAllCause(_ => _.logErrorCause)),
82
+ )
83
+
84
+ return { register, run } as const
85
+ })
86
+
87
+ export interface InteractionsRegistry {
88
+ readonly register: (
89
+ ix: InteractionBuilder<never, never>,
90
+ ) => Effect<never, never, void>
91
+
92
+ readonly run: Effect<
93
+ DiscordREST | DiscordGateway,
94
+ DiscordRESTError | Http.ResponseDecodeError,
95
+ never
96
+ >
97
+ }
98
+
99
+ export const InteractionsRegistry = Tag<InteractionsRegistry>()
100
+ export const InteractionsRegistryLive =
101
+ makeRegistry.toLayer(InteractionsRegistry)
@@ -1,38 +1,112 @@
1
+ import * as Http from "@effect-http/client"
2
+ import { catchTag } from "@effect/io/Effect"
1
3
  import { DiscordREST } from "dfx"
2
4
  import { Discord, Effect } from "dfx/_common"
3
5
  import * as D from "./definitions.js"
4
- import * as Http from "@effect-http/client"
5
6
 
6
7
  export { response } from "../Helpers/interactions.js"
7
- export * as helpers from "../Helpers/interactions.js"
8
8
  export * from "./context.js"
9
9
  export {
10
+ InteractionDefinition,
10
11
  autocomplete,
11
12
  global,
12
13
  guild,
13
- InteractionDefinition,
14
14
  messageComponent,
15
15
  modalSubmit,
16
16
  } from "./definitions.js"
17
17
 
18
+ type ExtractTag<A> = A extends { _tag: infer Tag }
19
+ ? Tag extends string
20
+ ? Tag
21
+ : never
22
+ : never
23
+
18
24
  /**
19
25
  * @tsplus type dfx/InteractionBuilder
20
26
  */
21
27
  export class InteractionBuilder<R, E> {
22
- constructor(readonly definitions: D.InteractionDefinition<R, E>[]) {}
28
+ constructor(
29
+ readonly definitions: D.InteractionDefinition<R, E>[],
30
+ readonly transform: (self: Effect<any, any, any>) => Effect<R, E, void>,
31
+ readonly transformRespond: (
32
+ self: Effect<any, any, Discord.InteractionResponse>,
33
+ ) => Effect<R, E, Discord.InteractionResponse>,
34
+ ) {}
23
35
 
24
36
  add<R1, E1>(definition: D.InteractionDefinition<R1, E1>) {
25
- return new InteractionBuilder<R | R1, E | E1>([
26
- ...this.definitions,
27
- definition,
28
- ])
37
+ return new InteractionBuilder<R | R1, E | E1>(
38
+ [...this.definitions, definition],
39
+ this.transform,
40
+ this.transformRespond,
41
+ )
29
42
  }
30
43
 
31
44
  concat<R1, E1>(builder: InteractionBuilder<R1, E1>) {
32
- return new InteractionBuilder<R | R1, E | E1>([
33
- ...this.definitions,
34
- ...builder.definitions,
35
- ])
45
+ return new InteractionBuilder<R | R1, E | E1>(
46
+ [...this.definitions, ...builder.definitions],
47
+ this.transform,
48
+ this.transformRespond,
49
+ )
50
+ }
51
+
52
+ catchAllCause<R1, E1>(f: (cause: Cause<E>) => Effect<R1, E1, void>) {
53
+ return new InteractionBuilder<R | R1, E1>(
54
+ this.definitions as any,
55
+ _ => this.transform(_).catchAllCause(f),
56
+ this.transformRespond as any,
57
+ )
58
+ }
59
+
60
+ catchAllCauseRespond<R1, E1>(
61
+ f: (cause: Cause<E>) => Effect<R1, E1, Discord.InteractionResponse>,
62
+ ) {
63
+ return new InteractionBuilder<R | R1, E1>(
64
+ this.definitions as any,
65
+ this.transform as any,
66
+ _ => this.transformRespond(_).catchAllCause(f),
67
+ )
68
+ }
69
+
70
+ catchAll<R1, E1>(f: (error: E) => Effect<R1, E1, void>) {
71
+ return new InteractionBuilder<R | R1, E1>(
72
+ this.definitions as any,
73
+ _ => this.transform(_).catchAll(f),
74
+ this.transformRespond as any,
75
+ )
76
+ }
77
+
78
+ catchAllRespond<R1, E1>(
79
+ f: (error: E) => Effect<R1, E1, Discord.InteractionResponse>,
80
+ ) {
81
+ return new InteractionBuilder<R | R1, E1>(
82
+ this.definitions as any,
83
+ this.transform as any,
84
+ _ => this.transformRespond(_).catchAll(f),
85
+ )
86
+ }
87
+
88
+ catchTag<T extends ExtractTag<E>, R1, E1>(
89
+ tag: T,
90
+ f: (error: Extract<E, { _tag: T }>) => Effect<R1, E1, void>,
91
+ ) {
92
+ return new InteractionBuilder<R | R1, Exclude<E, { _tag: T }> | E1>(
93
+ this.definitions as any,
94
+ _ => catchTag(this.transform(_) as any, tag, f as any) as any,
95
+ this.transformRespond as any,
96
+ )
97
+ }
98
+
99
+ catchTagRespond<T extends ExtractTag<E>, R1, E1>(
100
+ tag: T,
101
+ f: (
102
+ error: Extract<E, { _tag: T }>,
103
+ ) => Effect<R1, E1, Discord.InteractionResponse>,
104
+ ) {
105
+ return new InteractionBuilder<R | R1, Exclude<E, { _tag: T }> | E1>(
106
+ this.definitions as any,
107
+ this.transform as any,
108
+ _ => catchTag(this.transformRespond(_) as any, tag, f as any) as any,
109
+ )
36
110
  }
37
111
 
38
112
  get syncGlobal() {
@@ -73,7 +147,11 @@ export class InteractionBuilder<R, E> {
73
147
  }
74
148
  }
75
149
 
76
- export const builder = new InteractionBuilder<never, never>([])
150
+ export const builder = new InteractionBuilder<never, never>(
151
+ [],
152
+ identity as any,
153
+ identity as any,
154
+ )
77
155
 
78
156
  // Filters
79
157
  export const id = (query: string) => (customId: string) =>
@@ -96,7 +96,10 @@ export const makeHandler = <R, E>(ix: InteractionBuilder<R, E>) => {
96
96
  error,
97
97
  }: HandleWebhookOpts<
98
98
  E | WebhookParseError | BadWebhookSignature | DefinitionNotFound
99
- >) => handle(headers, body).flatMap(success).catchAllCause(error)
99
+ >) =>
100
+ ix
101
+ .transform(ix.transformRespond(handle(headers, body)).flatMap(success))
102
+ .catchAllCause(error)
100
103
  }
101
104
 
102
105
  /**
package/src/gateway.ts CHANGED
@@ -11,7 +11,11 @@ export * as DiscordWS from "./DiscordGateway/DiscordWS.js"
11
11
  export * as Shard from "./DiscordGateway/Shard.js"
12
12
  export * as ShardStore from "./DiscordGateway/ShardStore.js"
13
13
  export * as WS from "./DiscordGateway/WS.js"
14
- export { run as runIx } from "./Interactions/gateway.js"
14
+ export {
15
+ InteractionsRegistry,
16
+ InteractionsRegistryLive,
17
+ run as runIx,
18
+ } from "./Interactions/gateway.js"
15
19
 
16
20
  export const MemoryRateLimit = LiveMemoryRateLimitStore >> LiveRateLimiter
17
21
 
package/src/package.json DELETED
@@ -1,52 +0,0 @@
1
- {
2
- "name": "dfx",
3
- "version": "0.43.0",
4
- "type": "module",
5
- "publishConfig": {
6
- "access": "public",
7
- "directory": "dist"
8
- },
9
- "description": "Effect-TS discord library",
10
- "author": "Tim Smart <hello@timsmart.co>",
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/tim-smart/dfx.git"
14
- },
15
- "license": "MIT",
16
- "scripts": {
17
- "prepublishOnly": "make build",
18
- "types": "discord-api-codegen ./discord-api-docs -l typescript -o 'imports=RestResponse|dfx/DiscordREST/types' 'endpointReturnType=RestResponse' > src/types.ts && prettier -w src/types.ts"
19
- },
20
- "exports": {
21
- ".": "./index.js",
22
- "./gateway": "./gateway.js",
23
- "./webhooks": "./webhooks.js",
24
- "./*": "./*.js"
25
- },
26
- "devDependencies": {
27
- "@tim-smart/discord-api-docs-parser": "^0.5.2",
28
- "@tsplus-types/effect__data": "0.12.2-3b576ba",
29
- "@tsplus-types/effect__io": "0.25.8-11739c0",
30
- "@tsplus-types/effect__stream": "0.21.1-3b576ba",
31
- "@types/ws": "^8.5.4",
32
- "dotenv": "^16.0.3",
33
- "lerna": "^6.6.1",
34
- "madge": "^6.0.0",
35
- "typescript": "https://cdn.jsdelivr.net/npm/@tsplus/installer@0.0.171/compiler/typescript.tgz"
36
- },
37
- "dependencies": {
38
- "@effect-http/client": "^0.24.2",
39
- "@effect/data": "^0.12.2",
40
- "@effect/io": "~0.25.8",
41
- "@effect/stream": "~0.21.1",
42
- "tweetnacl": "^1.0.3"
43
- },
44
- "optionalDependencies": {
45
- "bufferutil": "^4.0.7",
46
- "isomorphic-ws": "^5.0.0",
47
- "utf-8-validate": "^6.0.3",
48
- "ws": "^8.13.0"
49
- },
50
- "sideEffects": false,
51
- "gitHead": "eb969e6b2d8ac1c0a5ab877898feae57728b5e3c"
52
- }