dfx 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
+ import { Http, Effect } from "dfx/common";
1
2
  import * as D from "./definitions.js";
2
3
  export interface RunOpts {
3
4
  sync?: boolean;
4
5
  }
5
- export declare const run: <R, E>(definitions: D.InteractionDefinition<R, E>[], { sync }?: RunOpts) => import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E, void>;
6
+ export declare const run: <R, R2, E, E2>(definitions: D.InteractionDefinition<R, E>[], catchAll: (e: import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E) => import("../common.js").Effect<R2, E2, any>, { sync }?: RunOpts) => import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R | R2, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E2, void>;
6
7
  //# sourceMappingURL=gateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAIrC,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,GAAG,kEAEG,OAAO,yQAmCtB,CAAA"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAIrC,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,GAAG,2QAKG,OAAO,+QAqCtB,CAAA"}
@@ -3,7 +3,7 @@ import * as tsplus_module_2 from "dfx/common";
3
3
  import * as tsplus_module_3 from "@fp-ts/data/Option";
4
4
  import { handlers } from "./handlers.js";
5
5
  import { splitDefinitions } from "./utils.js";
6
- export const run = (definitions, { sync = true } = {}) => (() => {
6
+ export const run = (definitions, catchAll, { sync = true } = {}) => (() => {
7
7
  const { globalCommands, guildCommands } = splitDefinitions(definitions);
8
8
  return tsplus_module_1.flatMap(application => {
9
9
  const globalSync = tsplus_module_2.Rest.rest.bulkOverwriteGlobalApplicationCommands(application.id, {
@@ -11,7 +11,7 @@ export const run = (definitions, { sync = true } = {}) => (() => {
11
11
  });
12
12
  const guildSync = tsplus_module_2.Gateway.handleDispatch("GUILD_CREATE", (a) => tsplus_module_2.Rest.rest.bulkOverwriteGuildApplicationCommands(application.id, a.id, guildCommands.map((a) => a.command)));
13
13
  const handle = handlers(definitions);
14
- const run = tsplus_module_2.Gateway.handleDispatch("INTERACTION_CREATE", (i) => tsplus_module_1.tap((r) => tsplus_module_3.match(tsplus_module_1.unit, (r) => tsplus_module_2.Rest.rest.createInteractionResponse(i.id, i.token, r))(r))(handle[i.type](i)));
14
+ const run = tsplus_module_2.Gateway.handleDispatch("INTERACTION_CREATE", (i) => tsplus_module_1.catchAll(catchAll)(tsplus_module_1.tap((r) => tsplus_module_3.match(tsplus_module_1.unit, (r) => tsplus_module_2.Rest.rest.createInteractionResponse(i.id, i.token, r))(r))(handle[i.type](i))));
15
15
  return tsplus_module_1.map(() => void 0)(sync ? tsplus_module_1.zipPar(guildSync)(tsplus_module_1.zipPar(globalSync)(run)) : run);
16
16
  })(tsplus_module_1.flatMap((a) => a.json)(tsplus_module_2.Rest.rest.getCurrentBotApplicationInformation()));
17
17
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAM7C,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,WAA4C,EAC5C,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE;IAEA,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;mCAEjE,WAAW;QAIjB,MAAM,UAAU,GAAG,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACjE,WAAW,CAAC,EAAE,EACd;YACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SAC3D,CACF,CAAA;QAED,MAAM,SAAS,GAAG,gBAAA,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7D,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAC7C,WAAW,CAAC,EAAE,EACd,CAAC,CAAC,EAAE,EACJ,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CAC3C,CACF,CAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;QAEpC,MAAM,GAAG,GAAG,gBAAA,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7D,oBAAsB,CAAC,CAAC,EAAE,EAAE,CAC1B,4CAAqB,CAAC,CAAC,EAAE,EAAE,CACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EADvD,CAAC,CAEA,EAHH,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAIhB,CACF,CAAA;iDAEC,IAAI,CAAC,CAAC,CAAC,uBAA8B,SAAS,EAAvC,uBAAW,UAAU,EAArB,GAAG,CAAmB,CAAkB,CAAC,CAAC,CAAC,GAAG;OA5BrD,wBAAwD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAArE,gBAAA,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAuB;IA6BxE,CAAA"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/Interactions/gateway.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAM7C,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,WAA4C,EAC5C,QAEwB,EACxB,EAAE,IAAI,GAAG,IAAI,KAAc,EAAE,EAC7B,EAAE;IAEA,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;mCAEjE,WAAW;QAIjB,MAAM,UAAU,GAAG,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CACjE,WAAW,CAAC,EAAE,EACd;YACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SAC3D,CACF,CAAA;QAED,MAAM,SAAS,GAAG,gBAAA,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7D,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAC7C,WAAW,CAAC,EAAE,EACd,CAAC,CAAC,EAAE,EACJ,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAQ,CAC3C,CACF,CAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;QAEpC,MAAM,GAAG,GAAG,gBAAA,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC7D,yBAMY,QAAQ,EANpB,oBACO,CAAC,CAAC,EAAE,EAAE,CACT,4CAAqB,CAAC,CAAC,EAAE,EAAE,CACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EADvD,CAAC,CAEA,EAJL,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAKd,CACkB,CACtB,CAAA;iDAEC,IAAI,CAAC,CAAC,CAAC,uBAA8B,SAAS,EAAvC,uBAAW,UAAU,EAArB,GAAG,CAAmB,CAAkB,CAAC,CAAC,CAAC,GAAG;OA9BrD,wBAAwD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAArE,gBAAA,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAuB;IA+BxE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Discord } from "dfx/common";
1
+ import { Http, Effect, Discord } from "dfx/common";
2
2
  import * as D from "./definitions.js";
3
3
  import * as Gateway from "./gateway.js";
4
4
  import * as Webhook from "./webhook.js";
@@ -9,8 +9,8 @@ declare class InteractionBuilder<R, E> {
9
9
  readonly definitions: D.InteractionDefinition<R, E>[];
10
10
  constructor(definitions: D.InteractionDefinition<R, E>[]);
11
11
  add<R1, E1>(definition: D.InteractionDefinition<R1, E1>): InteractionBuilder<R | R1, E | E1>;
12
- runGateway(opts?: Gateway.RunOpts): import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E, void>;
13
- handleWebhook(headers: Record<string, string>, rawBody: string): import("../common.js").Effect<Webhook.WebhookConfig | R, Webhook.BadWebhookSignature | Webhook.WebhookParseError | E, import("../common.js").Maybe<import("../types.js").InteractionResponse>>;
12
+ runGateway<R2, E2>(catchAll: (e: E | Http.FetchError | Http.StatusCodeError | Http.JsonParseError) => Effect<R2, E2, any>, opts?: Gateway.RunOpts): import("../common.js").Effect<import("../index.js").DiscordREST | import("../DiscordGateway/index.js").DiscordGateway | R | R2, import("../Http/index.js").FetchError | import("../Http/index.js").StatusCodeError | import("../Http/index.js").JsonParseError | E2, void>;
13
+ handleWebhook(headers: Webhook.Headers, rawBody: string): import("../common.js").Effect<Webhook.WebhookConfig | R, Webhook.BadWebhookSignature | Webhook.WebhookParseError | E, import("../common.js").Maybe<import("../types.js").InteractionResponse>>;
14
14
  }
15
15
  export declare const builder: InteractionBuilder<never, never>;
16
16
  export declare const id: (query: string) => (customId: string) => import("../common.js").Effect<never, never, boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,cAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACf,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAA5C,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEjE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;IAOvD,UAAU,CAAC,IAAI,GAAE,OAAO,CAAC,OAAY;IAIrC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAG/D;AAED,eAAO,MAAM,OAAO,kCAA2C,CAAA;AAG/D,eAAO,MAAM,EAAE,UAAW,MAAM,gBAAgB,MAAM,yDAClB,CAAA;AAEpC,eAAO,MAAM,YAAY,UAAW,MAAM,gBAAgB,MAAM,yDACpB,CAAA;AAE5C,eAAO,MAAM,KAAK,UAAW,MAAM,gBAAgB,MAAM,yDACnB,CAAA;AAEtC,eAAO,MAAM,MAAM,SACV,MAAM,qBACG,QAAQ,uCAAuC,yDAClB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,cAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACf,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAA5C,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAEjE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;IAOvD,UAAU,CAAC,EAAE,EAAE,EAAE,EACf,QAAQ,EAAE,CACR,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,KAChE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EACxB,IAAI,GAAE,OAAO,CAAC,OAAY;IAK5B,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM;CAGxD;AAED,eAAO,MAAM,OAAO,kCAA2C,CAAA;AAG/D,eAAO,MAAM,EAAE,UAAW,MAAM,gBAAgB,MAAM,yDAClB,CAAA;AAEpC,eAAO,MAAM,YAAY,UAAW,MAAM,gBAAgB,MAAM,yDACpB,CAAA;AAE5C,eAAO,MAAM,KAAK,UAAW,MAAM,gBAAgB,MAAM,yDACnB,CAAA;AAEtC,eAAO,MAAM,MAAM,SACV,MAAM,qBACG,QAAQ,uCAAuC,yDAClB,CAAA"}
@@ -15,8 +15,8 @@ class InteractionBuilder {
15
15
  definition,
16
16
  ]);
17
17
  }
18
- runGateway(opts = {}) {
19
- return Gateway.run(this.definitions, opts);
18
+ runGateway(catchAll, opts = {}) {
19
+ return Gateway.run(this.definitions, catchAll, opts);
20
20
  }
21
21
  handleWebhook(headers, rawBody) {
22
22
  return Webhook.run(this.definitions, headers, rawBody);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAEb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,kBAAkB;IACD;IAArB,YAAqB,WAA4C;QAA5C,gBAAW,GAAX,WAAW,CAAiC;IAAG,CAAC;IAErE,GAAG,CAAS,UAA2C;QACrD,OAAO,IAAI,kBAAkB,CAAiB;YAC5C,GAAG,IAAI,CAAC,WAAW;YACnB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,OAAwB,EAAE;QACnC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,aAAa,CAAC,OAA+B,EAAE,OAAe;QAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAe,EAAE,CAAC,CAAA;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CACxD,wBAAe,KAAK,KAAK,QAAQ,CAAC,CAAA;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAClE,wBAAe,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAC3D,wBAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,aAA8D,EAAE,EAAE,CACjE,wBAAe,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAEb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,kBAAkB;IACD;IAArB,YAAqB,WAA4C;QAA5C,gBAAW,GAAX,WAAW,CAAiC;IAAG,CAAC;IAErE,GAAG,CAAS,UAA2C;QACrD,OAAO,IAAI,kBAAkB,CAAiB;YAC5C,GAAG,IAAI,CAAC,WAAW;YACnB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CACR,QAEwB,EACxB,OAAwB,EAAE;QAE1B,OAAO,OAAO,CAAC,GAAG,CAAe,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAED,aAAa,CAAC,OAAwB,EAAE,OAAe;QACrD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAe,EAAE,CAAC,CAAA;AAE/D,UAAU;AACV,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CACxD,wBAAe,KAAK,KAAK,QAAQ,CAAC,CAAA;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAClE,wBAAe,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;AAE5C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,QAAgB,EAAE,EAAE,CAC3D,wBAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,aAA8D,EAAE,EAAE,CACjE,wBAAe,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA"}
@@ -3,6 +3,7 @@ import * as D from "./definitions.js";
3
3
  export declare class BadWebhookSignature {
4
4
  readonly _tag = "BadWebhookSignature";
5
5
  }
6
+ export type Headers = Record<string, string | string[]>;
6
7
  export interface WebhookConfig {
7
8
  applicationId: string;
8
9
  publicKey: string;
@@ -14,5 +15,5 @@ export declare class WebhookParseError {
14
15
  readonly _tag = "WebhookParseError";
15
16
  constructor(reason: unknown);
16
17
  }
17
- export declare const run: <R, E>(definitions: D.InteractionDefinition<R, E>[], headers: Record<string, string>, body: string) => import("../common.js").Effect<WebhookConfig | R, BadWebhookSignature | WebhookParseError | E, import("../common.js").Maybe<import("../types.js").InteractionResponse>>;
18
+ export declare const run: <R, E>(definitions: D.InteractionDefinition<R, E>[], headers: Headers, body: string) => import("../common.js").Effect<WebhookConfig | R, BadWebhookSignature | WebhookParseError | E, import("../common.js").Maybe<import("../types.js").InteractionResponse>>;
18
19
  //# sourceMappingURL=webhook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAGrC,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,yBAAwB;CACtC;AAoBD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AACD,eAAO,MAAM,aAAa,2CAAuB,CAAA;AACjD,eAAO,MAAM,UAAU,MAAO,aAAa,8DAAoC,CAAA;AAE/E,qBAAa,iBAAiB;IAEhB,QAAQ,CAAC,MAAM,EAAE,OAAO;IADpC,QAAQ,CAAC,IAAI,uBAAsB;gBACd,MAAM,EAAE,OAAO;CACrC;AAcD,eAAO,MAAM,GAAG,gEAEL,OAAO,MAAM,EAAE,MAAM,CAAC,QACzB,MAAM,2KAKV,CAAA"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAGrC,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,yBAAwB;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;AAgBvD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AACD,eAAO,MAAM,aAAa,2CAAuB,CAAA;AACjD,eAAO,MAAM,UAAU,MAAO,aAAa,8DAAoC,CAAA;AAE/E,qBAAa,iBAAiB;IAEhB,QAAQ,CAAC,MAAM,EAAE,OAAO;IADpC,QAAQ,CAAC,IAAI,uBAAsB;gBACd,MAAM,EAAE,OAAO;CACrC;AAcD,eAAO,MAAM,GAAG,gEAEL,OAAO,QACV,MAAM,2KAKV,CAAA"}
@@ -8,7 +8,7 @@ import { handlers } from "./handlers.js";
8
8
  export class BadWebhookSignature {
9
9
  _tag = "BadWebhookSignature";
10
10
  }
11
- const checkSignature = (publicKey, headers, body) => tsplus_module_2.asUnit(tsplus_module_1.toEither(() => new BadWebhookSignature())(tsplus_module_1.filter((a) => Nacl.sign.detached.verify(Buffer.from(a.timestamp + body), Buffer.from(a.signature, "hex"), Buffer.from(publicKey, "hex")))(tsplus_module_1.struct({
11
+ const checkSignature = (publicKey, headers, body) => tsplus_module_2.asUnit(tsplus_module_1.toEither(() => new BadWebhookSignature())(tsplus_module_1.filter((a) => Nacl.sign.detached.verify(Buffer.from(a.timestamp + body), Buffer.from(`${a.signature}`, "hex"), Buffer.from(publicKey, "hex")))(tsplus_module_1.struct({
12
12
  signature: tsplus_module_1.fromNullable(headers["x-signature-ed25519"]),
13
13
  timestamp: tsplus_module_1.fromNullable(headers["x-signature-timestamp"]),
14
14
  }))));
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,qBAAqB,CAAA;CACtC;AAED,MAAM,cAAc,GAAG,CACrB,SAAiB,EACjB,OAA+B,EAC/B,IAAY,EACZ,EAAE,wBACF,yBAWY,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,EAX3C,uBAIU,CAAC,CAAC,EAAE,EAAE,CACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,EAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAC/B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAC9B,EATL,uBAAa;IACX,SAAS,EAAE,6BAAmB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7D,SAAS,EAAE,6BAAmB,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChE,CAAC,CAOC,CACyC,CAAO,CAAA;AAMrD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAA,GAAG,EAAiB,CAAA;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,wBAAc,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/E,MAAM,OAAO,iBAAiB;IAEP;IADZ,IAAI,GAAG,mBAAmB,CAAA;IACnC,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;CACzC;AAED,MAAM,kBAAkB,GAAG,CAAC,OAA+B,EAAE,IAAY,EAAE,EAAE,0BAEnE,EAAE,SAAS,EAAE,mCAGjB,yBACE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,EAC7C,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAC1C,EALD,2BAAkB,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GADrC,wBAAe,aAAa,CAAC,CAQrD,CAAA;AAEJ,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,WAA4C,EAC5C,OAA+B,EAC/B,IAAY,EACZ,EAAE,yBAEM,WAAW,IACR,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EADvC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAEvD,CAAA"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,qBAAqB,CAAA;CACtC;AAID,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,OAAgB,EAAE,IAAY,EAAE,EAAE,wBAC3E,yBAWY,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,EAX3C,uBAIU,CAAC,CAAC,EAAE,EAAE,CACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,EAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,EACpC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAC9B,EATL,uBAAa;IACX,SAAS,EAAE,6BAAmB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC7D,SAAS,EAAE,6BAAmB,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAChE,CAAC,CAOC,CACyC,CAAO,CAAA;AAMrD,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAA,GAAG,EAAiB,CAAA;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,wBAAc,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/E,MAAM,OAAO,iBAAiB;IAEP;IADZ,IAAI,GAAG,mBAAmB,CAAA;IACnC,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;CACzC;AAED,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAE,EAAE,0BAEpD,EAAE,SAAS,EAAE,mCAGjB,yBACE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,EAC7C,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAC1C,EALD,2BAAkB,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GADrC,wBAAe,aAAa,CAAC,CAQrD,CAAA;AAEJ,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,WAA4C,EAC5C,OAAgB,EAChB,IAAY,EACZ,EAAE,yBAEM,WAAW,IACR,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EADvC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAEvD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -46,5 +46,5 @@
46
46
  "@fp-ts/data": "^0.0.19"
47
47
  }
48
48
  },
49
- "gitHead": "984f9280a1075c64f2a32a3b4da4d89a16ae19ef"
49
+ "gitHead": "c372187fedfaefe1b5aaf1cab0cee2bb7fdfb5f0"
50
50
  }
@@ -6,8 +6,11 @@ export interface RunOpts {
6
6
  sync?: boolean
7
7
  }
8
8
 
9
- export const run = <R, E>(
9
+ export const run = <R, R2, E, E2>(
10
10
  definitions: D.InteractionDefinition<R, E>[],
11
+ catchAll: (
12
+ e: Http.FetchError | Http.StatusCodeError | Http.JsonParseError | E,
13
+ ) => Effect<R2, E2, any>,
11
14
  { sync = true }: RunOpts = {},
12
15
  ) =>
13
16
  Do(($) => {
@@ -35,11 +38,13 @@ export const run = <R, E>(
35
38
  const handle = handlers(definitions)
36
39
 
37
40
  const run = Gateway.handleDispatch("INTERACTION_CREATE", (i) =>
38
- handle[i.type](i).tap((r) =>
39
- r.match(Effect.unit, (r) =>
40
- Rest.rest.createInteractionResponse(i.id, i.token, r),
41
- ),
42
- ),
41
+ handle[i.type](i)
42
+ .tap((r) =>
43
+ r.match(Effect.unit, (r) =>
44
+ Rest.rest.createInteractionResponse(i.id, i.token, r),
45
+ ),
46
+ )
47
+ .catchAll(catchAll),
43
48
  )
44
49
 
45
50
  $(sync ? run.zipPar(globalSync).zipPar(guildSync) : run)
@@ -30,11 +30,16 @@ class InteractionBuilder<R, E> {
30
30
  ])
31
31
  }
32
32
 
33
- runGateway(opts: Gateway.RunOpts = {}) {
34
- return Gateway.run(this.definitions, opts)
33
+ runGateway<R2, E2>(
34
+ catchAll: (
35
+ e: E | Http.FetchError | Http.StatusCodeError | Http.JsonParseError,
36
+ ) => Effect<R2, E2, any>,
37
+ opts: Gateway.RunOpts = {},
38
+ ) {
39
+ return Gateway.run<R, R2, E, E2>(this.definitions, catchAll, opts)
35
40
  }
36
41
 
37
- handleWebhook(headers: Record<string, string>, rawBody: string) {
42
+ handleWebhook(headers: Webhook.Headers, rawBody: string) {
38
43
  return Webhook.run(this.definitions, headers, rawBody)
39
44
  }
40
45
  }
@@ -6,11 +6,9 @@ export class BadWebhookSignature {
6
6
  readonly _tag = "BadWebhookSignature"
7
7
  }
8
8
 
9
- const checkSignature = (
10
- publicKey: string,
11
- headers: Record<string, string>,
12
- body: string,
13
- ) =>
9
+ export type Headers = Record<string, string | string[]>
10
+
11
+ const checkSignature = (publicKey: string, headers: Headers, body: string) =>
14
12
  Maybe.struct({
15
13
  signature: Maybe.fromNullable(headers["x-signature-ed25519"]),
16
14
  timestamp: Maybe.fromNullable(headers["x-signature-timestamp"]),
@@ -18,7 +16,7 @@ const checkSignature = (
18
16
  .filter((a) =>
19
17
  Nacl.sign.detached.verify(
20
18
  Buffer.from(a.timestamp + body),
21
- Buffer.from(a.signature, "hex"),
19
+ Buffer.from(`${a.signature}`, "hex"),
22
20
  Buffer.from(publicKey, "hex"),
23
21
  ),
24
22
  )
@@ -36,7 +34,7 @@ export class WebhookParseError {
36
34
  constructor(readonly reason: unknown) {}
37
35
  }
38
36
 
39
- const fromHeadersAndBody = (headers: Record<string, string>, body: string) =>
37
+ const fromHeadersAndBody = (headers: Headers, body: string) =>
40
38
  Do(($) => {
41
39
  const { publicKey } = $(Effect.service(WebhookConfig))
42
40
  $(Effect.fromEither(checkSignature(publicKey, headers, body)))
@@ -50,7 +48,7 @@ const fromHeadersAndBody = (headers: Record<string, string>, body: string) =>
50
48
 
51
49
  export const run = <R, E>(
52
50
  definitions: D.InteractionDefinition<R, E>[],
53
- headers: Record<string, string>,
51
+ headers: Headers,
54
52
  body: string,
55
53
  ) =>
56
54
  Do(($) => {