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.
- package/dist/Interactions/gateway.d.ts +2 -1
- package/dist/Interactions/gateway.d.ts.map +1 -1
- package/dist/Interactions/gateway.js +2 -2
- package/dist/Interactions/gateway.js.map +1 -1
- package/dist/Interactions/index.d.ts +3 -3
- package/dist/Interactions/index.d.ts.map +1 -1
- package/dist/Interactions/index.js +2 -2
- package/dist/Interactions/index.js.map +1 -1
- package/dist/Interactions/webhook.d.ts +2 -1
- package/dist/Interactions/webhook.d.ts.map +1 -1
- package/dist/Interactions/webhook.js +1 -1
- package/dist/Interactions/webhook.js.map +1 -1
- package/package.json +2 -2
- package/src/Interactions/gateway.ts +11 -6
- package/src/Interactions/index.ts +8 -3
- package/src/Interactions/webhook.ts +6 -8
|
@@ -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 |
|
|
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,
|
|
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,
|
|
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 |
|
|
13
|
-
handleWebhook(headers:
|
|
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;
|
|
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,
|
|
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:
|
|
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;
|
|
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
|
|
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;
|
|
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.
|
|
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": "
|
|
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)
|
|
39
|
-
|
|
40
|
-
|
|
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(
|
|
34
|
-
|
|
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:
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
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:
|
|
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:
|
|
51
|
+
headers: Headers,
|
|
54
52
|
body: string,
|
|
55
53
|
) =>
|
|
56
54
|
Do(($) => {
|