dfx 0.9.3 → 0.9.4

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.
@@ -2,7 +2,7 @@ import { Rest, Discord } from "dfx/common";
2
2
  import * as D from "./definitions.js";
3
3
  export * from "./context.js";
4
4
  export { global, guild, messageComponent, modalSubmit, autocomplete, InteractionDefinition, InteractionResponse, } from "./definitions.js";
5
- export { makeConfig as makeWebhookConfig, makeHandler as makeWebhookHandler, WebhookConfig, WebhookParseError, BadWebhookSignature, } from "./webhook.js";
5
+ export { makeConfigLayer as makeWebhookConfig, makeHandler as makeWebhookHandler, MakeConfigOpts as MakeWebhookConfigOpts, WebhookConfig, WebhookParseError, BadWebhookSignature, } from "./webhook.js";
6
6
  export declare class InteractionBuilder<R, E> {
7
7
  readonly definitions: D.InteractionDefinition<R, E>[];
8
8
  constructor(definitions: D.InteractionDefinition<R, E>[]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAErC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,WAAW,IAAI,kBAAkB,EACjC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,qBAAa,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACtB,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,IAAI,UAAU,qSAgBb;IAED,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS;CAc/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;AAErC,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,eAAe,IAAI,iBAAiB,EACpC,WAAW,IAAI,kBAAkB,EACjC,cAAc,IAAI,qBAAqB,EACvC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,qBAAa,kBAAkB,CAAC,CAAC,EAAE,CAAC;IACtB,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,IAAI,UAAU,qSAgBb;IAED,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS;CAc/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"}
@@ -2,7 +2,7 @@ import * as tsplus_module_1 from "dfx/common";
2
2
  import * as tsplus_module_2 from "@effect/io/Effect";
3
3
  export * from "./context.js";
4
4
  export { global, guild, messageComponent, modalSubmit, autocomplete, } from "./definitions.js";
5
- export { makeConfig as makeWebhookConfig, makeHandler as makeWebhookHandler, WebhookConfig, WebhookParseError, BadWebhookSignature, } from "./webhook.js";
5
+ export { makeConfigLayer as makeWebhookConfig, makeHandler as makeWebhookHandler, WebhookConfig, WebhookParseError, BadWebhookSignature, } from "./webhook.js";
6
6
  export class InteractionBuilder {
7
7
  definitions;
8
8
  constructor(definitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Interactions/index.ts"],"names":[],"mappings":";;AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAGb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,UAAU,IAAI,iBAAiB,EAC/B,WAAW,IAAI,kBAAkB,EACjC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,OAAO,kBAAkB;IACR;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,IAAI,UAAU;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAyC,EAAE,CAC3C,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACxC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,wBAGI,CAAC,GAAG,EAAE,EAAE,CACf,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,EAAE,EAAE;YACvD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,EANC,wBAEI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAFjB,gBAAA,IAAI,CAAC,IAAI;aACb,mCAAmC,EAAE,CACf,CAKtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,KAAwB,EAAE,OAA0B;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,IAAI,KAAK,yBAAyB,CACvC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CACpD,KAAK,EACL,OAAO,EACP,QAAe,CAChB,CAAA;IACH,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":";;AAEA,cAAc,cAAc,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,GAGb,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,eAAe,IAAI,iBAAiB,EACpC,WAAW,IAAI,kBAAkB,EAEjC,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AAErB,MAAM,OAAO,kBAAkB;IACR;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,IAAI,UAAU;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAyC,EAAE,CAC3C,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACxC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,wBAGI,CAAC,GAAG,EAAE,EAAE,CACf,gBAAA,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,EAAE,EAAE;YACvD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;SAC/B,CAAC,EANC,wBAEI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAFjB,gBAAA,IAAI,CAAC,IAAI;aACb,mCAAmC,EAAE,CACf,CAKtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,KAAwB,EAAE,OAA0B;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;aAC9B,MAAM,CACL,CAAC,CAAC,EAAwC,EAAE,CAC1C,CAAC,CAAC,IAAI,KAAK,yBAAyB,CACvC;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAExB,OAAO,gBAAA,IAAI,CAAC,IAAI,CAAC,qCAAqC,CACpD,KAAK,EACL,OAAO,EACP,QAAe,CAChB,CAAA;IACH,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"}
@@ -7,4 +7,5 @@ export declare const splitDefinitions: <R, E>(definitions: D.InteractionDefiniti
7
7
  ModalSubmit: D.ModalSubmit<R, E>[];
8
8
  Autocomplete: D.Autocomplete<R, E>[];
9
9
  };
10
+ export declare function fromHex(hexString: string): Uint8Array;
10
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Interactions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAErC,eAAO,MAAM,gBAAgB;;;;;;;CAwC5B,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Interactions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAA;AAErC,eAAO,MAAM,gBAAgB;;;;;;;CAwC5B,CAAA;AA0BD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,cAYxC"}
@@ -21,4 +21,41 @@ export const splitDefinitions = (definitions) => {
21
21
  Commands,
22
22
  };
23
23
  };
24
+ const MAP_HEX = {
25
+ 0: 0,
26
+ 1: 1,
27
+ 2: 2,
28
+ 3: 3,
29
+ 4: 4,
30
+ 5: 5,
31
+ 6: 6,
32
+ 7: 7,
33
+ 8: 8,
34
+ 9: 9,
35
+ a: 10,
36
+ b: 11,
37
+ c: 12,
38
+ d: 13,
39
+ e: 14,
40
+ f: 15,
41
+ A: 10,
42
+ B: 11,
43
+ C: 12,
44
+ D: 13,
45
+ E: 14,
46
+ F: 15,
47
+ };
48
+ export function fromHex(hexString) {
49
+ const bytes = new Uint8Array(Math.floor((hexString || "").length / 2));
50
+ let i;
51
+ for (i = 0; i < bytes.length; i++) {
52
+ const a = MAP_HEX[hexString[i * 2]];
53
+ const b = MAP_HEX[hexString[i * 2 + 1]];
54
+ if (a === undefined || b === undefined) {
55
+ break;
56
+ }
57
+ bytes[i] = (a << 4) | b;
58
+ }
59
+ return i === bytes.length ? bytes : bytes.slice(0, i);
60
+ }
24
61
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Interactions/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAA4C,EAC5C,EAAE;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAMhC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,GAAG;QACN,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KACtC,CAAC,EACF;QACE,YAAY,EAAE,EAAE;QAChB,wBAAwB,EAAE,EAAE;QAC5B,uBAAuB,EAAE,EAAE;QAC3B,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,EAAE;KAChB,CACF,CAAA;IAED,MAAM,QAAQ,GAAG;QACf,GAAG,OAAO,CAAC,wBAAwB;QACnC,GAAG,OAAO,CAAC,uBAAuB;KACnC,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,GAAG;QACN,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;KACpB,CAAC,EACF,EAGC,CACF,CAAA;IAED,OAAO;QACL,GAAG,OAAO;QACV,QAAQ;KACT,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Interactions/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAA4C,EAC5C,EAAE;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAMhC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,GAAG;QACN,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KACtC,CAAC,EACF;QACE,YAAY,EAAE,EAAE;QAChB,wBAAwB,EAAE,EAAE;QAC5B,uBAAuB,EAAE,EAAE;QAC3B,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,EAAE;KAChB,CACF,CAAA;IAED,MAAM,QAAQ,GAAG;QACf,GAAG,OAAO,CAAC,wBAAwB;QACnC,GAAG,OAAO,CAAC,uBAAuB;KACnC,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,GAAG,GAAG;QACN,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;KACpB,CAAC,EACF,EAGC,CACF,CAAA;IAED,OAAO;QACL,GAAG,OAAO;QACV,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AACD,MAAM,OAAO,GAA2B;IACtC,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;CACN,CAAA;AAED,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACtE,IAAI,CAAC,CAAA;IACL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;YACtC,MAAK;SACN;QACD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;KACxB;IACD,OAAO,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC"}
@@ -4,12 +4,18 @@ export declare class BadWebhookSignature {
4
4
  readonly _tag = "BadWebhookSignature";
5
5
  }
6
6
  export type Headers = Record<string, string | string[] | undefined>;
7
- export interface WebhookConfig {
7
+ export interface MakeConfigOpts {
8
8
  applicationId: string;
9
9
  publicKey: string;
10
10
  }
11
+ declare const makeConfig: ({ applicationId, publicKey }: MakeConfigOpts) => {
12
+ applicationId: string;
13
+ publicKey: Uint8Array;
14
+ };
15
+ export interface WebhookConfig extends ReturnType<typeof makeConfig> {
16
+ }
11
17
  export declare const WebhookConfig: import("../common.js").Tag<WebhookConfig>;
12
- export declare const makeConfig: (a: WebhookConfig) => import("../common.js").Layer<never, never, WebhookConfig>;
18
+ export declare const makeConfigLayer: (a_0: MakeConfigOpts) => import("../common.js").Layer<never, never, WebhookConfig>;
13
19
  export declare class WebhookParseError {
14
20
  readonly reason: unknown;
15
21
  readonly _tag = "WebhookParseError";
@@ -23,4 +29,5 @@ export interface HandleWebhookOpts<E> {
23
29
  empty: Effect<never, never, void>;
24
30
  }
25
31
  export declare const makeHandler: <R, E>(ix: InteractionBuilder<R, E>) => ({ headers, body, success, empty, error, }: HandleWebhookOpts<BadWebhookSignature | WebhookParseError | E>) => import("../common.js").Effect<WebhookConfig | R, never, void>;
32
+ export {};
26
33
  //# sourceMappingURL=webhook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,yBAAwB;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;AAgBnE,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;AAuBD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,mBAAmB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACvE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAClD,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAClC;AAED,eAAO,MAAM,WAAW,sNAkBvB,CAAA"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAG/C,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,yBAAwB;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;AAqBnE,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AACD,QAAA,MAAM,UAAU,iCAAkC,cAAc;;;CAG9D,CAAA;AACF,MAAM,WAAW,aAAc,SAAQ,UAAU,CAAC,OAAO,UAAU,CAAC;CAAG;AACvE,eAAO,MAAM,aAAa,2CAAuB,CAAA;AACjD,eAAO,MAAM,eAAe,oFAAiD,CAAA;AAE7E,qBAAa,iBAAiB;IAEhB,QAAQ,CAAC,MAAM,EAAE,OAAO;IADpC,QAAQ,CAAC,IAAI,uBAAsB;gBACd,MAAM,EAAE,OAAO;CACrC;AAuBD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,mBAAmB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACvE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAClD,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAClC;AAED,eAAO,MAAM,WAAW,sNAkBvB,CAAA"}
@@ -2,18 +2,27 @@ import * as tsplus_module_1 from "@fp-ts/data/Option";
2
2
  import * as tsplus_module_2 from "@fp-ts/data/Either";
3
3
  import * as tsplus_module_3 from "dfx/common";
4
4
  import * as tsplus_module_4 from "@effect/io/Layer";
5
- import * as tsplus_module_5 from "@effect/io/Effect";
5
+ import * as tsplus_module_5 from "@fp-ts/data/Function";
6
+ import * as tsplus_module_6 from "@effect/io/Effect";
6
7
  import Nacl from "tweetnacl";
7
8
  import { handlers } from "./handlers.js";
9
+ import { fromHex } from "./utils.js";
8
10
  export class BadWebhookSignature {
9
11
  _tag = "BadWebhookSignature";
10
12
  }
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({
13
+ const checkSignature = (publicKey, headers, body) => tsplus_module_2.asUnit(tsplus_module_1.toEither(() => new BadWebhookSignature())(tsplus_module_1.filter((a) => {
14
+ const enc = new TextEncoder();
15
+ return Nacl.sign.detached.verify(enc.encode(a.timestamp + body), fromHex(`${a.signature}`), publicKey);
16
+ })(tsplus_module_1.struct({
12
17
  signature: tsplus_module_1.fromNullable(headers["x-signature-ed25519"]),
13
18
  timestamp: tsplus_module_1.fromNullable(headers["x-signature-timestamp"]),
14
19
  }))));
20
+ const makeConfig = ({ applicationId, publicKey }) => ({
21
+ applicationId,
22
+ publicKey: fromHex(publicKey),
23
+ });
15
24
  export const WebhookConfig = tsplus_module_3.Tag();
16
- export const makeConfig = (a) => tsplus_module_4.succeed(WebhookConfig)(a);
25
+ export const makeConfigLayer = tsplus_module_5.flow(makeConfig, tsplus_module_4.succeed(WebhookConfig));
17
26
  export class WebhookParseError {
18
27
  reason;
19
28
  _tag = "WebhookParseError";
@@ -21,13 +30,13 @@ export class WebhookParseError {
21
30
  this.reason = reason;
22
31
  }
23
32
  }
24
- const fromHeadersAndBody = (headers, body) => tsplus_module_5.flatMap(({ publicKey }) => tsplus_module_5.flatMap(() => tsplus_module_5.tryCatch(() => JSON.parse(body), (reason) => new WebhookParseError(reason)))(tsplus_module_5.fromEither(checkSignature(publicKey, headers, body))))(tsplus_module_5.service(WebhookConfig));
33
+ const fromHeadersAndBody = (headers, body) => tsplus_module_6.flatMap(({ publicKey }) => tsplus_module_6.flatMap(() => tsplus_module_6.tryCatch(() => JSON.parse(body), (reason) => new WebhookParseError(reason)))(tsplus_module_6.fromEither(checkSignature(publicKey, headers, body))))(tsplus_module_6.service(WebhookConfig));
25
34
  const run = (definitions) => {
26
35
  const handler = handlers(definitions);
27
- return (headers, body) => tsplus_module_5.flatMap(interaction => handler[interaction.type](interaction))(fromHeadersAndBody(headers, body));
36
+ return (headers, body) => tsplus_module_6.flatMap(interaction => handler[interaction.type](interaction))(fromHeadersAndBody(headers, body));
28
37
  };
29
38
  export const makeHandler = (ix) => {
30
39
  const handle = run(ix.definitions);
31
- return ({ headers, body, success, empty, error, }) => tsplus_module_5.catchAllCause(error)(tsplus_module_5.flatMap((o) => tsplus_module_1.match(() => empty, (a) => success(a))(o))(handle(headers, body)));
40
+ return ({ headers, body, success, empty, error, }) => tsplus_module_6.catchAllCause(error)(tsplus_module_6.flatMap((o) => tsplus_module_1.match(() => empty, (a) => success(a))(o))(handle(headers, body)));
32
41
  };
33
42
  //# sourceMappingURL=webhook.js.map
@@ -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;AAGxC,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,GAAG,GAAG,CAAO,WAA4C,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IACrC,OAAO,CAAC,OAAgB,EAAE,IAAY,EAAE,EAAE,yBAEhC,WAAW,IACR,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EADzB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAEvD,CAAA;AACN,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,EAA4B,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;IAElC,OAAO,CAAC,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,GAC0D,EAAE,EAAE,CACnE,8BAOiB,KAAK,EAPtB,wBACW,CAAC,CAAC,EAAE,EAAE,CACb,sBACE,GAAG,EAAE,CAAC,KAAK,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAFnB,CAAC,CAGA,EALL,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAMlB,CACoB,CAAA;AAC3B,CAAC,CAAA"}
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/Interactions/webhook.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,5 @@ export * as Perms from "./Helpers/permissions.js";
12
12
  export * as UI from "./Helpers/ui.js";
13
13
  export declare const LiveRateLimit: import("./common.js").Layer<import("./Log/index.js").Log, never, import("./RateLimitStore/index.js").RateLimitStore | import("./RateLimitStore/index.js").RateLimiter>;
14
14
  export declare const LiveREST: import("./common.js").Layer<import("./DiscordConfig/index.js").DiscordConfig | import("./Log/index.js").Log, never, import("./DiscordREST/index.js").DiscordREST | import("./RateLimitStore/index.js").RateLimitStore | import("./RateLimitStore/index.js").RateLimiter>;
15
- export declare const makeLayer: (config: Config.MakeOpts & Ix.WebhookConfig, debug?: boolean) => import("./common.js").Layer<never, never, import("./DiscordREST/index.js").DiscordREST | import("./DiscordConfig/index.js").DiscordConfig | import("./Log/index.js").Log | import("./RateLimitStore/index.js").RateLimitStore | import("./RateLimitStore/index.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
15
+ export declare const makeLayer: (config: Config.MakeOpts & Ix.MakeWebhookConfigOpts, debug?: boolean) => import("./common.js").Layer<never, never, import("./DiscordREST/index.js").DiscordREST | import("./DiscordConfig/index.js").DiscordConfig | import("./Log/index.js").Log | import("./RateLimitStore/index.js").RateLimitStore | import("./RateLimitStore/index.js").RateLimiter | import("./Interactions/webhook.js").WebhookConfig>;
16
16
  //# sourceMappingURL=webhooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAErC,eAAO,MAAM,aAAa,wKACgD,CAAA;AAE1E,eAAO,MAAM,QAAQ,0QAAuC,CAAA;AAE5D,eAAO,MAAM,SAAS,WACZ,OAAO,QAAQ,GAAG,GAAG,aAAa,0VAS3C,CAAA"}
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAErC,eAAO,MAAM,aAAa,wKACgD,CAAA;AAE1E,eAAO,MAAM,QAAQ,0QAAuC,CAAA;AAE5D,eAAO,MAAM,SAAS,WACZ,OAAO,QAAQ,GAAG,GAAG,qBAAqB,0VASnD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAErC,MAAM,CAAC,MAAM,aAAa,qCACkB,gBAAA,cAAc,CAAC,eAAe,EAAxE,gBAAA,cAAc,CAAC,wBAAwB,CAAiC,CAAA;AAE1E,MAAM,CAAC,MAAM,QAAQ,qCAAmB,gBAAA,IAAI,CAAC,eAAe,EAApC,aAAa,CAAuB,CAAA;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAA0C,EAC1C,KAAK,GAAG,KAAK,EACb,EAAE;IACF,MAAM,WAAW,GAAG,gBAAA,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,OAAO,CAAA;IACtD,MAAM,UAAU,GAAG,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,OAAO,qCAAwC,QAAQ,wBAAtB,WAAW,wBAAxB,UAAU,EAApB,OAAO,GAAsC,CAAA;IAE7D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAErC,MAAM,CAAC,MAAM,aAAa,qCACkB,gBAAA,cAAc,CAAC,eAAe,EAAxE,gBAAA,cAAc,CAAC,wBAAwB,CAAiC,CAAA;AAE1E,MAAM,CAAC,MAAM,QAAQ,qCAAmB,gBAAA,IAAI,CAAC,eAAe,EAApC,aAAa,CAAuB,CAAA;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAAkD,EAClD,KAAK,GAAG,KAAK,EACb,EAAE;IACF,MAAM,WAAW,GAAG,gBAAA,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAA,GAAG,CAAC,OAAO,CAAA;IACtD,MAAM,UAAU,GAAG,gBAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,OAAO,qCAAwC,QAAQ,wBAAtB,WAAW,wBAAxB,UAAU,EAApB,OAAO,GAAsC,CAAA;IAE7D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dfx",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -50,5 +50,5 @@
50
50
  "@fp-ts/data": "^0.0.20"
51
51
  }
52
52
  },
53
- "gitHead": "9b16eecbd76b957b5051a61a17f9836312c99a20"
53
+ "gitHead": "7b4807d4e97e8bdd5a4b6efb7679e81fa60401bf"
54
54
  }
@@ -13,8 +13,9 @@ export {
13
13
  } from "./definitions.js"
14
14
 
15
15
  export {
16
- makeConfig as makeWebhookConfig,
16
+ makeConfigLayer as makeWebhookConfig,
17
17
  makeHandler as makeWebhookHandler,
18
+ MakeConfigOpts as MakeWebhookConfigOpts,
18
19
  WebhookConfig,
19
20
  WebhookParseError,
20
21
  BadWebhookSignature,
@@ -41,3 +41,41 @@ export const splitDefinitions = <R, E>(
41
41
  Commands,
42
42
  }
43
43
  }
44
+ const MAP_HEX: Record<string, number> = {
45
+ 0: 0,
46
+ 1: 1,
47
+ 2: 2,
48
+ 3: 3,
49
+ 4: 4,
50
+ 5: 5,
51
+ 6: 6,
52
+ 7: 7,
53
+ 8: 8,
54
+ 9: 9,
55
+ a: 10,
56
+ b: 11,
57
+ c: 12,
58
+ d: 13,
59
+ e: 14,
60
+ f: 15,
61
+ A: 10,
62
+ B: 11,
63
+ C: 12,
64
+ D: 13,
65
+ E: 14,
66
+ F: 15,
67
+ }
68
+
69
+ export function fromHex(hexString: string) {
70
+ const bytes = new Uint8Array(Math.floor((hexString || "").length / 2))
71
+ let i
72
+ for (i = 0; i < bytes.length; i++) {
73
+ const a = MAP_HEX[hexString[i * 2]]
74
+ const b = MAP_HEX[hexString[i * 2 + 1]]
75
+ if (a === undefined || b === undefined) {
76
+ break
77
+ }
78
+ bytes[i] = (a << 4) | b
79
+ }
80
+ return i === bytes.length ? bytes : bytes.slice(0, i)
81
+ }
@@ -2,6 +2,7 @@ import Nacl from "tweetnacl"
2
2
  import * as D from "./definitions.js"
3
3
  import { handlers } from "./handlers.js"
4
4
  import { InteractionBuilder } from "./index.js"
5
+ import { fromHex } from "./utils.js"
5
6
 
6
7
  export class BadWebhookSignature {
7
8
  readonly _tag = "BadWebhookSignature"
@@ -9,26 +10,36 @@ export class BadWebhookSignature {
9
10
 
10
11
  export type Headers = Record<string, string | string[] | undefined>
11
12
 
12
- const checkSignature = (publicKey: string, headers: Headers, body: string) =>
13
+ const checkSignature = (
14
+ publicKey: Uint8Array,
15
+ headers: Headers,
16
+ body: string,
17
+ ) =>
13
18
  Maybe.struct({
14
19
  signature: Maybe.fromNullable(headers["x-signature-ed25519"]),
15
20
  timestamp: Maybe.fromNullable(headers["x-signature-timestamp"]),
16
21
  })
17
- .filter((a) =>
18
- Nacl.sign.detached.verify(
19
- Buffer.from(a.timestamp + body),
20
- Buffer.from(`${a.signature}`, "hex"),
21
- Buffer.from(publicKey, "hex"),
22
- ),
23
- )
22
+ .filter((a) => {
23
+ const enc = new TextEncoder()
24
+ return Nacl.sign.detached.verify(
25
+ enc.encode(a.timestamp + body),
26
+ fromHex(`${a.signature}`),
27
+ publicKey,
28
+ )
29
+ })
24
30
  .toEither(() => new BadWebhookSignature()).asUnit
25
31
 
26
- export interface WebhookConfig {
32
+ export interface MakeConfigOpts {
27
33
  applicationId: string
28
34
  publicKey: string
29
35
  }
36
+ const makeConfig = ({ applicationId, publicKey }: MakeConfigOpts) => ({
37
+ applicationId,
38
+ publicKey: fromHex(publicKey),
39
+ })
40
+ export interface WebhookConfig extends ReturnType<typeof makeConfig> {}
30
41
  export const WebhookConfig = Tag<WebhookConfig>()
31
- export const makeConfig = (a: WebhookConfig) => Layer.succeed(WebhookConfig)(a)
42
+ export const makeConfigLayer = flow(makeConfig, Layer.succeed(WebhookConfig))
32
43
 
33
44
  export class WebhookParseError {
34
45
  readonly _tag = "WebhookParseError"
package/src/webhooks.ts CHANGED
@@ -18,7 +18,7 @@ export const LiveRateLimit =
18
18
  export const LiveREST = LiveRateLimit > Rest.LiveDiscordREST
19
19
 
20
20
  export const makeLayer = (
21
- config: Config.MakeOpts & Ix.WebhookConfig,
21
+ config: Config.MakeOpts & Ix.MakeWebhookConfigOpts,
22
22
  debug = false,
23
23
  ) => {
24
24
  const LiveWebhook = Ix.makeWebhookConfig(config)