dfx 0.110.1 → 0.111.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.
- package/DiscordGateway/Shard.d.ts +1 -1
- package/DiscordGateway/Sharder.d.ts +1 -1
- package/Helpers/interactions.d.ts +4 -0
- package/Helpers/interactions.d.ts.map +1 -1
- package/Helpers/interactions.js +13 -2
- package/Helpers/interactions.js.map +1 -1
- package/Interactions/commandHelper.d.ts +99 -0
- package/Interactions/commandHelper.d.ts.map +1 -0
- package/Interactions/commandHelper.js +54 -0
- package/Interactions/commandHelper.js.map +1 -0
- package/Interactions/context.d.ts +4 -18
- package/Interactions/context.d.ts.map +1 -1
- package/Interactions/context.js +1 -19
- package/Interactions/context.js.map +1 -1
- package/Interactions/definitions.d.ts +2 -79
- package/Interactions/definitions.d.ts.map +1 -1
- package/Interactions/definitions.js.map +1 -1
- package/Interactions/utils.d.ts.map +1 -1
- package/Interactions/utils.js +2 -9
- package/Interactions/utils.js.map +1 -1
- package/mjs/Helpers/interactions.mjs +10 -0
- package/mjs/Helpers/interactions.mjs.map +1 -1
- package/mjs/Interactions/commandHelper.mjs +45 -0
- package/mjs/Interactions/commandHelper.mjs.map +1 -0
- package/mjs/Interactions/context.mjs +0 -14
- package/mjs/Interactions/context.mjs.map +1 -1
- package/mjs/Interactions/definitions.mjs.map +1 -1
- package/mjs/Interactions/utils.mjs +2 -9
- package/mjs/Interactions/utils.mjs.map +1 -1
- package/mjs/version.mjs +1 -1
- package/package.json +2 -2
- package/src/Helpers/interactions.ts +22 -0
- package/src/Interactions/commandHelper.ts +236 -0
- package/src/Interactions/context.ts +3 -72
- package/src/Interactions/definitions.ts +1 -166
- package/src/Interactions/utils.ts +2 -10
- package/src/version.ts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/Interactions/utils.js
CHANGED
|
@@ -6,20 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.splitDefinitions = exports.flattenDefinitions = void 0;
|
|
7
7
|
var Chunk = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Chunk"));
|
|
8
8
|
var Effect = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Effect"));
|
|
9
|
-
var Ctx = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("dfx/Interactions/context"));
|
|
10
9
|
var Array = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Array"));
|
|
10
|
+
var _commandHelper = /*#__PURE__*/require("./commandHelper");
|
|
11
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
-
const context = {
|
|
14
|
-
resolve: Ctx.resolved,
|
|
15
|
-
option: Ctx.option,
|
|
16
|
-
optionValue: Ctx.optionValue,
|
|
17
|
-
optionValueOptional: Ctx.optionValueOptional,
|
|
18
|
-
subCommands: Ctx.handleSubCommands
|
|
19
|
-
};
|
|
20
13
|
const flattenDefinitions = (definitions, handleResponse) => Array.map(Chunk.toReadonlyArray(definitions), ([definition, transform]) => ({
|
|
21
14
|
...definition,
|
|
22
|
-
handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(
|
|
15
|
+
handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(new _commandHelper.CommandHelper(i)), _ => handleResponse(i, _))))
|
|
23
16
|
}));
|
|
24
17
|
exports.flattenDefinitions = flattenDefinitions;
|
|
25
18
|
const splitDefinitions = definitions => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["Chunk","_interopRequireWildcard","require","Effect","
|
|
1
|
+
{"version":3,"file":"utils.js","names":["Chunk","_interopRequireWildcard","require","Effect","Array","_commandHelper","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","flattenDefinitions","definitions","handleResponse","map","toReadonlyArray","definition","transform","handle","isEffect","scoped","flatMap","_","CommandHelper","exports","splitDefinitions","grouped","reduce","Autocomplete","GlobalApplicationCommand","GuildApplicationCommand","MessageComponent","ModalSubmit","Commands","acc","d","_tag","push","command","name"],"sources":["../src/Interactions/utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,16 @@ import * as Option from "effect/Option";
|
|
|
7
7
|
* Option find a sub-command within the interaction options.
|
|
8
8
|
*/
|
|
9
9
|
export const allSubCommands = interaction => pipe(optionsWithNested(interaction), Arr.filter(o => o.type === Discord.ApplicationCommandOptionType.SUB_COMMAND));
|
|
10
|
+
/**
|
|
11
|
+
* Get the target for the application command data.
|
|
12
|
+
*/
|
|
13
|
+
export const target = interaction => targetTypes[interaction.type](interaction);
|
|
14
|
+
const targetTypes = {
|
|
15
|
+
[Discord.ApplicationCommandType.USER]: data => data.resolved.users[data.target_id],
|
|
16
|
+
[Discord.ApplicationCommandType.MESSAGE]: data => data.resolved.messages[data.target_id],
|
|
17
|
+
[Discord.ApplicationCommandType.CHAT_INPUT]: data => data,
|
|
18
|
+
[Discord.ApplicationCommandType.PRIMARY_ENTRY_POINT]: data => data
|
|
19
|
+
};
|
|
10
20
|
/**
|
|
11
21
|
* Option find a sub-command within the interaction options.
|
|
12
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.mjs","names":["Discord","Arr","identity","pipe","HashMap","Option","allSubCommands","interaction","optionsWithNested","filter","o","type","ApplicationCommandOptionType","SUB_COMMAND","findSubCommand","name","findFirst","isSubCommand","_","isSome","subCommandOptions","flatMapNullable","options","
|
|
1
|
+
{"version":3,"file":"interactions.mjs","names":["Discord","Arr","identity","pipe","HashMap","Option","allSubCommands","interaction","optionsWithNested","filter","o","type","ApplicationCommandOptionType","SUB_COMMAND","target","targetTypes","ApplicationCommandType","USER","data","resolved","users","target_id","MESSAGE","messages","CHAT_INPUT","PRIMARY_ENTRY_POINT","findSubCommand","name","findFirst","isSubCommand","_","isSome","subCommandOptions","flatMapNullable","options","optsFromOption","opt","fromNullable","map","opts","flatMap","match","onNone","onSome","getOrElse","transformOptions","reduce","option","set","value","empty","optionsMap","getOption","focusedOption","focused","optionValue","a","resolveOptionValue","f","Do","bind","id","r","resolveValues","values","getSomes","extractComponents","c","components","componentsWithValue","undefined","transformComponents","custom_id","componentsMap","getComponent","componentValue","response"],"sources":["../../src/Helpers/interactions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Option from "effect/Option";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { SubCommandContext, SubCommandNotFound } from "dfx/Interactions/context";
|
|
4
|
+
import * as Helpers from "dfx/Helpers/interactions";
|
|
5
|
+
import * as Arr from "effect/Array";
|
|
6
|
+
export class CommandHelper {
|
|
7
|
+
interaction;
|
|
8
|
+
constructor(interaction) {
|
|
9
|
+
this.interaction = interaction;
|
|
10
|
+
this.target = Helpers.target(interaction.data);
|
|
11
|
+
this.data = interaction.data;
|
|
12
|
+
}
|
|
13
|
+
data;
|
|
14
|
+
target;
|
|
15
|
+
resolve(name, f) {
|
|
16
|
+
return Helpers.resolveOptionValue(name, f)(this.interaction);
|
|
17
|
+
}
|
|
18
|
+
resolvedValues(f) {
|
|
19
|
+
return Helpers.resolveValues(f)(this.interaction);
|
|
20
|
+
}
|
|
21
|
+
option(name) {
|
|
22
|
+
return Helpers.getOption(name)(this.data);
|
|
23
|
+
}
|
|
24
|
+
optionValue(name) {
|
|
25
|
+
return Option.getOrThrow(this.optionValueOptional(name));
|
|
26
|
+
}
|
|
27
|
+
optionValueOptional(name) {
|
|
28
|
+
return Option.map(this.option(name), _ => _.value);
|
|
29
|
+
}
|
|
30
|
+
optionValueOrElse(name, orElse) {
|
|
31
|
+
return Option.getOrElse(this.option(name), orElse);
|
|
32
|
+
}
|
|
33
|
+
subCommands(commands) {
|
|
34
|
+
const commands_ = commands;
|
|
35
|
+
return Effect.mapError(Arr.findFirst(Helpers.allSubCommands(this.data), _ => !!commands_[_.name]), () => new SubCommandNotFound({
|
|
36
|
+
data: this.data
|
|
37
|
+
})).pipe(Effect.flatMap(command => Effect.provideService(commands_[command.name], SubCommandContext, {
|
|
38
|
+
command
|
|
39
|
+
})));
|
|
40
|
+
}
|
|
41
|
+
get optionsMap() {
|
|
42
|
+
return Helpers.optionsMap(this.data);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=commandHelper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandHelper.mjs","names":["Option","Effect","SubCommandContext","SubCommandNotFound","Helpers","Arr","CommandHelper","interaction","constructor","target","data","resolve","name","f","resolveOptionValue","resolvedValues","resolveValues","option","getOption","optionValue","getOrThrow","optionValueOptional","map","_","value","optionValueOrElse","orElse","getOrElse","subCommands","commands","commands_","mapError","findFirst","allSubCommands","pipe","flatMap","command","provideService","optionsMap"],"sources":["../../src/Interactions/commandHelper.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SACEC,iBAAiB,EACjBC,kBAAkB,QAGb,0BAA0B;AAEjC,OAAO,KAAKC,OAAO,MAAM,0BAA0B;AACnD,OAAO,KAAKC,GAAG,MAAM,cAAc;AAGnC,OAAM,MAAOC,aAAa;EACHC,WAAA;EAArBC,YAAqBD,WAAgC;IAAhC,KAAAA,WAAW,GAAXA,WAAW;IAC9B,IAAI,CAACE,MAAM,GAAGL,OAAO,CAACK,MAAM,CAACF,WAAW,CAACG,IAAW,CAAQ;IAC5D,IAAI,CAACA,IAAI,GAAGH,WAAW,CAACG,IAAW;EACrC;EACSA,IAAI;EACJD,MAAM;EAWfE,OAAOA,CACLC,IAA+B,EAC/BC,CAAwE;IAExE,OAAOT,OAAO,CAACU,kBAAkB,CAACF,IAAI,EAAEC,CAAC,CAAC,CAAC,IAAI,CAACN,WAAW,CAAC;EAC9D;EAEAQ,cAAcA,CACZF,CAAwE;IAExE,OAAOT,OAAO,CAACY,aAAa,CAACH,CAAC,CAAC,CAAC,IAAI,CAACN,WAAW,CAAC;EACnD;EAEAU,MAAMA,CACJL,IAAkC;IAElC,OAAOR,OAAO,CAACc,SAAS,CAACN,IAAI,CAAC,CAAC,IAAI,CAACF,IAAI,CAAC;EAC3C;EAEAS,WAAWA,CACTP,IAAO;IAEP,OAAOZ,MAAM,CAACoB,UAAU,CAAC,IAAI,CAACC,mBAAmB,CAACT,IAAI,CAAC,CAAC;EAC1D;EAEAS,mBAAmBA,CACjBT,IAAO;IAEP,OAAOZ,MAAM,CAACsB,GAAG,CAAC,IAAI,CAACL,MAAM,CAACL,IAAI,CAAC,EAAEW,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAQ;EAC3D;EAEAC,iBAAiBA,CACfb,IAAO,EACPc,MAAoB;IAEpB,OAAO1B,MAAM,CAAC2B,SAAS,CAAC,IAAI,CAACV,MAAM,CAACL,IAAI,CAAC,EAAEc,MAAM,CAAQ;EAC3D;EAEAE,WAAWA,CAQTC,QAAa;IAmBb,MAAMC,SAAS,GAAGD,QAA+B;IACjD,OAAO5B,MAAM,CAAC8B,QAAQ,CACpB1B,GAAG,CAAC2B,SAAS,CACX5B,OAAO,CAAC6B,cAAc,CAAC,IAAI,CAACvB,IAAI,CAAC,EACjCa,CAAC,IAAI,CAAC,CAACO,SAAS,CAACP,CAAC,CAACX,IAAI,CAAC,CACzB,EACD,MAAM,IAAIT,kBAAkB,CAAC;MAAEO,IAAI,EAAE,IAAI,CAACA;IAAI,CAAE,CAAC,CAClD,CAACwB,IAAI,CACJjC,MAAM,CAACkC,OAAO,CAACC,OAAO,IACpBnC,MAAM,CAACoC,cAAc,CAACP,SAAS,CAACM,OAAO,CAACxB,IAAI,CAAC,EAAEV,iBAAiB,EAAE;MAChEkC;KACD,CAAC,CACH,CACK;EACV;EAEA,IAAIE,UAAUA,CAAA;IACZ,OAAOlC,OAAO,CAACkC,UAAU,CAAC,IAAI,CAAC5B,IAAI,CAAC;EACtC","ignoreList":[]}
|
|
@@ -3,8 +3,6 @@ import * as IxHelpers from "dfx/Helpers/interactions";
|
|
|
3
3
|
import { InteractionsErrorTypeId } from "dfx/Interactions/error";
|
|
4
4
|
import { GenericTag } from "effect/Context";
|
|
5
5
|
import * as Effect from "effect/Effect";
|
|
6
|
-
import * as Option from "effect/Option";
|
|
7
|
-
import * as Arr from "effect/Array";
|
|
8
6
|
export const Interaction = /*#__PURE__*/GenericTag("dfx/Interactions/Interaction");
|
|
9
7
|
export const ApplicationCommand = /*#__PURE__*/GenericTag("dfx/Interactions/ApplicationCommand");
|
|
10
8
|
export const MessageComponentData = /*#__PURE__*/GenericTag("dfx/Interactions/MessageComponentData");
|
|
@@ -15,13 +13,7 @@ export const resolvedValues = f => Effect.flatMap(Interaction, ix => IxHelpers.r
|
|
|
15
13
|
export const resolved = (name, f) => Effect.flatMap(Interaction, ix => IxHelpers.resolveOptionValue(name, f)(ix));
|
|
16
14
|
export const focusedOptionValue = /*#__PURE__*/Effect.map(FocusedOptionContext, _ => _.value ?? "");
|
|
17
15
|
export class SubCommandNotFound extends /*#__PURE__*/TypeIdError(InteractionsErrorTypeId, "SubCommandNotFound") {}
|
|
18
|
-
export const handleSubCommands = commands => ApplicationCommand.pipe(Effect.flatMap(data => Effect.mapError(Arr.findFirst(IxHelpers.allSubCommands(data), _ => !!commands[_.name]), () => new SubCommandNotFound({
|
|
19
|
-
data
|
|
20
|
-
}))), Effect.flatMap(command => Effect.provideService(commands[command.name], SubCommandContext, {
|
|
21
|
-
command
|
|
22
|
-
})));
|
|
23
16
|
export const currentSubCommand = /*#__PURE__*/Effect.map(SubCommandContext, _ => _.command);
|
|
24
|
-
export const optionsMap = /*#__PURE__*/Effect.map(ApplicationCommand, IxHelpers.optionsMap);
|
|
25
17
|
export class RequiredOptionNotFound {
|
|
26
18
|
data;
|
|
27
19
|
name;
|
|
@@ -31,12 +23,6 @@ export class RequiredOptionNotFound {
|
|
|
31
23
|
this.name = name;
|
|
32
24
|
}
|
|
33
25
|
}
|
|
34
|
-
export const option = name => Effect.map(ApplicationCommand, IxHelpers.getOption(name));
|
|
35
|
-
export const optionValue = name => Effect.flatMap(option(name), _ => Option.match(Option.flatMapNullable(_, a => a.value), {
|
|
36
|
-
onNone: () => Effect.flatMap(ApplicationCommand, data => Effect.fail(new RequiredOptionNotFound(data, name))),
|
|
37
|
-
onSome: Effect.succeed
|
|
38
|
-
}));
|
|
39
|
-
export const optionValueOptional = name => Effect.map(option(name), Option.flatMapNullable(o => o.value));
|
|
40
26
|
export const modalValues = /*#__PURE__*/Effect.map(ModalSubmitData, IxHelpers.componentsMap);
|
|
41
27
|
export const modalValueOption = name => Effect.map(ModalSubmitData, IxHelpers.componentValue(name));
|
|
42
28
|
export const modalValue = name => Effect.flatMap(ModalSubmitData, data => IxHelpers.componentValue(name)(data));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.mjs","names":["TypeIdError","IxHelpers","InteractionsErrorTypeId","GenericTag","Effect","
|
|
1
|
+
{"version":3,"file":"context.mjs","names":["TypeIdError","IxHelpers","InteractionsErrorTypeId","GenericTag","Effect","Interaction","ApplicationCommand","MessageComponentData","ModalSubmitData","FocusedOptionContext","SubCommandContext","resolvedValues","f","flatMap","ix","resolveValues","resolved","name","resolveOptionValue","focusedOptionValue","map","_","value","SubCommandNotFound","currentSubCommand","command","RequiredOptionNotFound","data","_tag","constructor","modalValues","componentsMap","modalValueOption","componentValue","modalValue"],"sources":["../../src/Interactions/context.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAW,QAAQ,wBAAwB;AACpD,OAAO,KAAKC,SAAS,MAAM,0BAA0B;AACrD,SAASC,uBAAuB,QAAQ,wBAAwB;AAGhE,SAASC,UAAU,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAQvC,OAAO,MAAMC,WAAW,gBAAGF,UAAU,CACnC,8BAA8B,CAC/B;AAKD,OAAO,MAAMG,kBAAkB,gBAAGH,UAAU,CAG1C,qCAAqC,CAAC;AAKxC,OAAO,MAAMI,oBAAoB,gBAAGJ,UAAU,CAG5C,uCAAuC,CAAC;AAK1C,OAAO,MAAMK,eAAe,gBAAGL,UAAU,CAGvC,kCAAkC,CAAC;AAKrC,OAAO,MAAMM,oBAAoB,gBAAGN,UAAU,CAG5C,uCAAuC,CAAC;AAQ1C,OAAO,MAAMO,iBAAiB,gBAAGP,UAAU,CAGzC,oCAAoC,CAAC;AAEvC,OAAO,MAAMQ,cAAc,GACzBC,CAAwE,IAKrER,MAAM,CAACS,OAAO,CAACR,WAAW,EAAES,EAAE,IAAIb,SAAS,CAACc,aAAa,CAACH,CAAC,CAAC,CAACE,EAAE,CAAC,CAAC;AAEtE,OAAO,MAAME,QAAQ,GAAGA,CACtBC,IAAY,EACZL,CAAwE,KAExER,MAAM,CAACS,OAAO,CAACR,WAAW,EAAES,EAAE,IAAIb,SAAS,CAACiB,kBAAkB,CAACD,IAAI,EAAEL,CAAC,CAAC,CAACE,EAAE,CAAC,CAAC;AAE9E,OAAO,MAAMK,kBAAkB,gBAAGf,MAAM,CAACgB,GAAG,CAC1CX,oBAAoB,EACpBY,CAAC,IAAIA,CAAC,CAACC,KAAK,IAAI,EAAE,CACnB;AAED,OAAM,MAAOC,kBAAmB,sBAAQvB,WAAW,CACjDE,uBAAuB,EACvB,oBAAoB,CAGpB;AAEF,OAAO,MAAMsB,iBAAiB,gBAI1BpB,MAAM,CAACgB,GAAG,CAACV,iBAAiB,EAAEW,CAAC,IAAIA,CAAC,CAACI,OAAO,CAAC;AAEjD,OAAM,MAAOC,sBAAsB;EAGtBC,IAAA;EAGAV,IAAA;EALFW,IAAI,GAAG,wBAAwB;EACxCC,YACWF,IAE0C,EAC1CV,IAAY;IAHZ,KAAAU,IAAI,GAAJA,IAAI;IAGJ,KAAAV,IAAI,GAAJA,IAAI;EACZ;;AAGL,OAAO,MAAMa,WAAW,gBAAG1B,MAAM,CAACgB,GAAG,CAACZ,eAAe,EAAEP,SAAS,CAAC8B,aAAa,CAAC;AAE/E,OAAO,MAAMC,gBAAgB,GAAIf,IAAY,IAC3Cb,MAAM,CAACgB,GAAG,CAACZ,eAAe,EAAEP,SAAS,CAACgC,cAAc,CAAChB,IAAI,CAAC,CAAC;AAE7D,OAAO,MAAMiB,UAAU,GACrBjB,IAAY,IAEZb,MAAM,CAACS,OAAO,CAACL,eAAe,EAAEmB,IAAI,IAAI1B,SAAS,CAACgC,cAAc,CAAChB,IAAI,CAAC,CAACU,IAAI,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.mjs","names":["GlobalApplicationCommand","command","handle","_tag","constructor","global","GuildApplicationCommand","guild","MessageComponent","predicate","messageComponent","pred","ModalSubmit","modalSubmit","Autocomplete","autocomplete"],"sources":["../../src/Interactions/definitions.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"definitions.mjs","names":["GlobalApplicationCommand","command","handle","_tag","constructor","global","GuildApplicationCommand","guild","MessageComponent","predicate","messageComponent","pred","ModalSubmit","modalSubmit","Autocomplete","autocomplete"],"sources":["../../src/Interactions/definitions.ts"],"sourcesContent":[null],"mappings":"AAmBA,OAAM,MAAOA,wBAAwB;EAGxBC,OAAA;EACAC,MAAA;EAHFC,IAAI,GAAG,0BAA0B;EAC1CC,YACWH,OAAqD,EACrDC,MAA4B;IAD5B,KAAAD,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMG,MAAM,GAAGA,CAKpBJ,OAAU,EACVC,MAA+B,KAE/B,IAAIF,wBAAwB,CAG1BC,OAAc,EAAEC,MAAa,CAAC;AAElC,OAAM,MAAOI,uBAAuB;EAGvBL,OAAA;EACAC,MAAA;EAHFC,IAAI,GAAG,yBAAyB;EACzCC,YACWH,OAAoD,EACpDC,MAA4B;IAD5B,KAAAD,OAAO,GAAPA,OAAO;IACP,KAAAC,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMK,KAAK,GAAGA,CAKnBN,OAAU,EACVC,MAA+B,KAE/B,IAAII,uBAAuB,CAGzBL,OAAc,EAAEC,MAAa,CAAC;AAElC,OAAM,MAAOM,gBAAgB;EAGhBC,SAAA;EACAP,MAAA;EAHFC,IAAI,GAAG,kBAAkB;EAClCC,YACWK,SAAwC,EACxCP,MAAwD;IADxD,KAAAO,SAAS,GAATA,SAAS;IACT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMQ,gBAAgB,GAAGA,CAC9BC,IAAmC,EACnCT,MAAyD,KAEzD,IAAIM,gBAAgB,CAGlBG,IAAI,EAAET,MAAa,CAAC;AAExB,OAAM,MAAOU,WAAW;EAGXH,SAAA;EACAP,MAAA;EAHFC,IAAI,GAAG,aAAa;EAC7BC,YACWK,SAAwC,EACxCP,MAAwD;IADxD,KAAAO,SAAS,GAATA,SAAS;IACT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMW,WAAW,GAAGA,CACzBF,IAAmC,EACnCT,MAAwD,KAExD,IAAIU,WAAW,CAGbD,IAAI,EAAET,MAAa,CAAC;AAExB,OAAM,MAAOY,YAAY;EAGZL,SAAA;EAIAP,MAAA;EANFC,IAAI,GAAG,cAAc;EAC9BC,YACWK,SAGG,EACHP,MAAwD;IAJxD,KAAAO,SAAS,GAATA,SAAS;IAIT,KAAAP,MAAM,GAANA,MAAM;EACd;;AAGL,OAAO,MAAMa,YAAY,GAAGA,CAC1BJ,IAGY,EACZT,MAAwD,KAExD,IAAIY,YAAY,CASdH,IAAI,EAAET,MAAa,CAAC","ignoreList":[]}
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import * as Chunk from "effect/Chunk";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Ctx from "dfx/Interactions/context";
|
|
4
3
|
import * as Array from "effect/Array";
|
|
5
|
-
|
|
6
|
-
resolve: Ctx.resolved,
|
|
7
|
-
option: Ctx.option,
|
|
8
|
-
optionValue: Ctx.optionValue,
|
|
9
|
-
optionValueOptional: Ctx.optionValueOptional,
|
|
10
|
-
subCommands: Ctx.handleSubCommands
|
|
11
|
-
};
|
|
4
|
+
import { CommandHelper } from "./commandHelper";
|
|
12
5
|
export const flattenDefinitions = (definitions, handleResponse) => Array.map(Chunk.toReadonlyArray(definitions), ([definition, transform]) => ({
|
|
13
6
|
...definition,
|
|
14
|
-
handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(
|
|
7
|
+
handle: Effect.isEffect(definition.handle) ? i => Effect.scoped(transform(Effect.flatMap(definition.handle, _ => handleResponse(i, _)))) : i => Effect.scoped(transform(Effect.flatMap(definition.handle(new CommandHelper(i)), _ => handleResponse(i, _))))
|
|
15
8
|
}));
|
|
16
9
|
export const splitDefinitions = definitions => {
|
|
17
10
|
const grouped = Array.reduce(definitions, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":["Chunk","Effect","
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":["Chunk","Effect","Array","CommandHelper","flattenDefinitions","definitions","handleResponse","map","toReadonlyArray","definition","transform","handle","isEffect","i","scoped","flatMap","_","splitDefinitions","grouped","reduce","Autocomplete","GlobalApplicationCommand","GuildApplicationCommand","MessageComponent","ModalSubmit","Commands","acc","d","_tag","push","command","name"],"sources":["../../src/Interactions/utils.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAGvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,aAAa,QAAQ,iBAAiB;AAgB/C,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,WAKC,EACDC,cAG2B,KAE3BJ,KAAK,CAACK,GAAG,CAACP,KAAK,CAACQ,eAAe,CAACH,WAAW,CAAC,EAAE,CAAC,CAACI,UAAU,EAAEC,SAAS,CAAC,MAAM;EAC1E,GAAGD,UAAU;EACbE,MAAM,EAAEV,MAAM,CAACW,QAAQ,CAACH,UAAU,CAACE,MAAM,CAAC,GACrCE,CAAsB,IACrBZ,MAAM,CAACa,MAAM,CACXJ,SAAS,CACPT,MAAM,CAACc,OAAO,CACZN,UAAU,CAACE,MAAoD,EAC/DK,CAAC,IAAIV,cAAc,CAACO,CAAC,EAAEG,CAAC,CAAC,CAC1B,CACF,CACF,GACFH,CAAsB,IACrBZ,MAAM,CAACa,MAAM,CACXJ,SAAS,CACPT,MAAM,CAACc,OAAO,CAEVN,UAAU,CAACE,MAGZ,CAAC,IAAIR,aAAa,CAACU,CAAC,CAAC,CAAC,EACvBG,CAAC,IAAIV,cAAc,CAACO,CAAC,EAAEG,CAAC,CAAC,CAC1B,CACF;CAEV,CAAC,CAAC;AAEL,OAAO,MAAMC,gBAAgB,GAC3BZ,WAA4D,IAC1D;EACF,MAAMa,OAAO,GAAGhB,KAAK,CAACiB,MAAM,CAC1Bd,WAAW,EACX;IACEe,YAAY,EAAE,EAAE;IAChBC,wBAAwB,EAAE,EAAE;IAC5BC,uBAAuB,EAAE,EAAE;IAC3BC,gBAAgB,EAAE,EAAE;IACpBC,WAAW,EAAE,EAAE;IACfC,QAAQ,EAAE;GAOX,EACD,CAACC,GAAG,EAAEC,CAAC,KAAI;IACTD,GAAG,CAACC,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,CAACF,CAAQ,CAAC;IAC1B,IACEA,CAAC,CAACC,IAAI,KAAK,0BAA0B,IACrCD,CAAC,CAACC,IAAI,KAAK,yBAAyB,EACpC;MACAF,GAAG,CAACD,QAAQ,CAACE,CAAC,CAACG,OAAO,CAACC,IAAI,CAAC,GAAGJ,CAAQ;IACzC;IACA,OAAOD,GAAG;EACZ,CAAC,CACF;EAED,OAAOR,OAAO;AAChB,CAAC","ignoreList":[]}
|
package/mjs/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const LIB_VERSION = "0.
|
|
1
|
+
export const LIB_VERSION = "0.111.0";
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dfx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.111.0",
|
|
4
4
|
"description": "Effect-TS discord library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -41,6 +41,6 @@
|
|
|
41
41
|
"optionalDependencies": {
|
|
42
42
|
"discord-verify": "^1.2.0"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "e097ca2129cf44e65891f203a1299ed6a24cde31",
|
|
45
45
|
"main": "./index.js"
|
|
46
46
|
}
|
|
@@ -15,6 +15,28 @@ export const allSubCommands = (interaction: Discord.ApplicationCommandDatum) =>
|
|
|
15
15
|
),
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Get the target for the application command data.
|
|
20
|
+
*/
|
|
21
|
+
export const target = (
|
|
22
|
+
interaction: Discord.ApplicationCommandDatum,
|
|
23
|
+
): Discord.ApplicationCommandDatum | Discord.User | Discord.Message =>
|
|
24
|
+
targetTypes[interaction.type as Discord.ApplicationCommandType](interaction)
|
|
25
|
+
|
|
26
|
+
const targetTypes: Record<
|
|
27
|
+
Discord.ApplicationCommandType,
|
|
28
|
+
(
|
|
29
|
+
data: Discord.ApplicationCommandDatum,
|
|
30
|
+
) => Discord.User | Discord.Message | Discord.ApplicationCommandDatum
|
|
31
|
+
> = {
|
|
32
|
+
[Discord.ApplicationCommandType.USER]: data =>
|
|
33
|
+
data.resolved!.users![data.target_id!],
|
|
34
|
+
[Discord.ApplicationCommandType.MESSAGE]: data =>
|
|
35
|
+
data.resolved!.messages![data.target_id!],
|
|
36
|
+
[Discord.ApplicationCommandType.CHAT_INPUT]: data => data,
|
|
37
|
+
[Discord.ApplicationCommandType.PRIMARY_ENTRY_POINT]: data => data,
|
|
38
|
+
}
|
|
39
|
+
|
|
18
40
|
/**
|
|
19
41
|
* Option find a sub-command within the interaction options.
|
|
20
42
|
*/
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import * as Option from "effect/Option"
|
|
2
|
+
import * as Effect from "effect/Effect"
|
|
3
|
+
import {
|
|
4
|
+
SubCommandContext,
|
|
5
|
+
SubCommandNotFound,
|
|
6
|
+
type DiscordApplicationCommand,
|
|
7
|
+
type DiscordInteraction,
|
|
8
|
+
} from "dfx/Interactions/context"
|
|
9
|
+
import type * as Discord from "dfx/types"
|
|
10
|
+
import * as Helpers from "dfx/Helpers/interactions"
|
|
11
|
+
import * as Arr from "effect/Array"
|
|
12
|
+
import type { HashMap } from "effect/HashMap"
|
|
13
|
+
|
|
14
|
+
export class CommandHelper<A> {
|
|
15
|
+
constructor(readonly interaction: Discord.Interaction) {
|
|
16
|
+
this.target = Helpers.target(interaction.data as any) as any
|
|
17
|
+
this.data = interaction.data as any
|
|
18
|
+
}
|
|
19
|
+
readonly data: Discord.ApplicationCommandDatum
|
|
20
|
+
readonly target: CommandTypeMap<
|
|
21
|
+
A,
|
|
22
|
+
{
|
|
23
|
+
[Discord.ApplicationCommandType
|
|
24
|
+
.CHAT_INPUT]: Discord.ApplicationCommandDatum
|
|
25
|
+
[Discord.ApplicationCommandType.MESSAGE]: Discord.Message
|
|
26
|
+
[Discord.ApplicationCommandType.USER]: Discord.User
|
|
27
|
+
[Discord.ApplicationCommandType.PRIMARY_ENTRY_POINT]: undefined
|
|
28
|
+
}
|
|
29
|
+
>
|
|
30
|
+
|
|
31
|
+
resolve<T>(
|
|
32
|
+
name: AllResolvables<A>["name"],
|
|
33
|
+
f: (id: Discord.Snowflake, data: Discord.ResolvedDatum) => T | undefined,
|
|
34
|
+
): Option.Option<T> {
|
|
35
|
+
return Helpers.resolveOptionValue(name, f)(this.interaction)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
resolvedValues<T>(
|
|
39
|
+
f: (id: Discord.Snowflake, data: Discord.ResolvedDatum) => T | undefined,
|
|
40
|
+
): Option.Option<ReadonlyArray<T>> {
|
|
41
|
+
return Helpers.resolveValues(f)(this.interaction)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
option(
|
|
45
|
+
name: AllCommandOptions<A>["name"],
|
|
46
|
+
): Option.Option<Discord.ApplicationCommandInteractionDataOption> {
|
|
47
|
+
return Helpers.getOption(name)(this.data)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
optionValue<N extends AllRequiredCommandOptions<A>["name"]>(
|
|
51
|
+
name: N,
|
|
52
|
+
): CommandValue<A, N> {
|
|
53
|
+
return Option.getOrThrow(this.optionValueOptional(name))
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
optionValueOptional<N extends AllCommandOptions<A>["name"]>(
|
|
57
|
+
name: N,
|
|
58
|
+
): Option.Option<CommandValue<A, N>> {
|
|
59
|
+
return Option.map(this.option(name), _ => _.value) as any
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
optionValueOrElse<N extends AllCommandOptions<A>["name"], const OrElse>(
|
|
63
|
+
name: N,
|
|
64
|
+
orElse: () => OrElse,
|
|
65
|
+
): Option.Option<CommandValue<A, N>> {
|
|
66
|
+
return Option.getOrElse(this.option(name), orElse) as any
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
subCommands<
|
|
70
|
+
NER extends SubCommandNames<A> extends never
|
|
71
|
+
? never
|
|
72
|
+
: Record<
|
|
73
|
+
SubCommandNames<A>,
|
|
74
|
+
Effect.Effect<Discord.InteractionResponse, any, any>
|
|
75
|
+
>,
|
|
76
|
+
>(
|
|
77
|
+
commands: NER,
|
|
78
|
+
): Effect.Effect<
|
|
79
|
+
Discord.InteractionResponse,
|
|
80
|
+
[NER[keyof NER]] extends [
|
|
81
|
+
{ [Effect.EffectTypeId]: { _E: (_: never) => infer E } },
|
|
82
|
+
]
|
|
83
|
+
? E
|
|
84
|
+
: never,
|
|
85
|
+
| Exclude<
|
|
86
|
+
[NER[keyof NER]] extends [
|
|
87
|
+
{ [Effect.EffectTypeId]: { _R: (_: never) => infer R } },
|
|
88
|
+
]
|
|
89
|
+
? R
|
|
90
|
+
: never,
|
|
91
|
+
SubCommandContext
|
|
92
|
+
>
|
|
93
|
+
| DiscordInteraction
|
|
94
|
+
| DiscordApplicationCommand
|
|
95
|
+
> {
|
|
96
|
+
const commands_ = commands as Record<string, any>
|
|
97
|
+
return Effect.mapError(
|
|
98
|
+
Arr.findFirst(
|
|
99
|
+
Helpers.allSubCommands(this.data),
|
|
100
|
+
_ => !!commands_[_.name],
|
|
101
|
+
),
|
|
102
|
+
() => new SubCommandNotFound({ data: this.data }),
|
|
103
|
+
).pipe(
|
|
104
|
+
Effect.flatMap(command =>
|
|
105
|
+
Effect.provideService(commands_[command.name], SubCommandContext, {
|
|
106
|
+
command,
|
|
107
|
+
}),
|
|
108
|
+
),
|
|
109
|
+
) as any
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
get optionsMap(): HashMap<string, string | undefined> {
|
|
113
|
+
return Helpers.optionsMap(this.data)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export type CommandHandlerFn<R, E, A> = (
|
|
118
|
+
i: CommandHelper<A>,
|
|
119
|
+
) => Effect.Effect<Discord.InteractionResponse, E, R>
|
|
120
|
+
|
|
121
|
+
interface CommandOption {
|
|
122
|
+
readonly type: any
|
|
123
|
+
readonly name: string
|
|
124
|
+
readonly options?: ReadonlyArray<CommandOption>
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
type CommandTypeMap<
|
|
128
|
+
A,
|
|
129
|
+
Options extends Record<Discord.ApplicationCommandType, any>,
|
|
130
|
+
> = A extends { readonly type: infer T }
|
|
131
|
+
? T extends keyof Options
|
|
132
|
+
? Options[T]
|
|
133
|
+
: never
|
|
134
|
+
: Options[Discord.ApplicationCommandType.CHAT_INPUT]
|
|
135
|
+
|
|
136
|
+
// == Sub commands
|
|
137
|
+
type SubCommands<A> = A extends {
|
|
138
|
+
readonly type: Discord.ApplicationCommandOptionType.SUB_COMMAND
|
|
139
|
+
readonly options?: ReadonlyArray<CommandOption>
|
|
140
|
+
}
|
|
141
|
+
? A
|
|
142
|
+
: A extends { readonly options: ReadonlyArray<CommandOption> }
|
|
143
|
+
? SubCommands<A["options"][number]>
|
|
144
|
+
: never
|
|
145
|
+
|
|
146
|
+
type SubCommandNames<A> = Option<SubCommands<A>>["name"]
|
|
147
|
+
|
|
148
|
+
// == Command options
|
|
149
|
+
type CommandOptionType = Exclude<
|
|
150
|
+
Discord.ApplicationCommandOptionType,
|
|
151
|
+
| Discord.ApplicationCommandOptionType.SUB_COMMAND
|
|
152
|
+
| Discord.ApplicationCommandOptionType.SUB_COMMAND_GROUP
|
|
153
|
+
>
|
|
154
|
+
|
|
155
|
+
type CommandOptions<A> = OptionsWithLiteral<
|
|
156
|
+
A,
|
|
157
|
+
{
|
|
158
|
+
readonly type: CommandOptionType
|
|
159
|
+
}
|
|
160
|
+
>
|
|
161
|
+
|
|
162
|
+
type SubCommandOptions<A> = Extract<
|
|
163
|
+
Option<Exclude<SubCommands<A>["options"], undefined>[number]>,
|
|
164
|
+
{
|
|
165
|
+
readonly type: CommandOptionType
|
|
166
|
+
}
|
|
167
|
+
>
|
|
168
|
+
|
|
169
|
+
type AllCommandOptions<A> = CommandOptions<A> | SubCommandOptions<A>
|
|
170
|
+
|
|
171
|
+
type CommandWithName<A, N> = Extract<AllCommandOptions<A>, { readonly name: N }>
|
|
172
|
+
|
|
173
|
+
type OptionTypeValue = {
|
|
174
|
+
[Discord.ApplicationCommandOptionType.BOOLEAN]: boolean
|
|
175
|
+
[Discord.ApplicationCommandOptionType.INTEGER]: number
|
|
176
|
+
[Discord.ApplicationCommandOptionType.NUMBER]: number
|
|
177
|
+
}
|
|
178
|
+
type CommandValue<A, N> = CommandWithName<
|
|
179
|
+
A,
|
|
180
|
+
N
|
|
181
|
+
>["type"] extends keyof OptionTypeValue
|
|
182
|
+
? OptionTypeValue[CommandWithName<A, N>["type"]]
|
|
183
|
+
: string
|
|
184
|
+
|
|
185
|
+
// == Required options
|
|
186
|
+
type RequiredCommandOptions<A> = OptionsWithLiteral<
|
|
187
|
+
A,
|
|
188
|
+
{
|
|
189
|
+
readonly type: CommandOptionType
|
|
190
|
+
readonly required: true
|
|
191
|
+
}
|
|
192
|
+
>
|
|
193
|
+
|
|
194
|
+
type RequiredSubCommandOptions<A> = Extract<
|
|
195
|
+
SubCommandOptions<A>,
|
|
196
|
+
{ readonly required: true }
|
|
197
|
+
>
|
|
198
|
+
|
|
199
|
+
type AllRequiredCommandOptions<A> =
|
|
200
|
+
| RequiredCommandOptions<A>
|
|
201
|
+
| RequiredSubCommandOptions<A>
|
|
202
|
+
|
|
203
|
+
// == Resolveables
|
|
204
|
+
type ResolvableType =
|
|
205
|
+
| Discord.ApplicationCommandOptionType.ROLE
|
|
206
|
+
| Discord.ApplicationCommandOptionType.USER
|
|
207
|
+
| Discord.ApplicationCommandOptionType.MENTIONABLE
|
|
208
|
+
| Discord.ApplicationCommandOptionType.CHANNEL
|
|
209
|
+
|
|
210
|
+
type Resolvables<A> = OptionsWithLiteral<A, { readonly type: ResolvableType }>
|
|
211
|
+
type SubCommandResolvables<A> = Extract<
|
|
212
|
+
Option<Exclude<SubCommands<A>["options"], undefined>[number]>,
|
|
213
|
+
{
|
|
214
|
+
readonly type: ResolvableType
|
|
215
|
+
}
|
|
216
|
+
>
|
|
217
|
+
type AllResolvables<A> = Resolvables<A> | SubCommandResolvables<A>
|
|
218
|
+
|
|
219
|
+
// == Utilities
|
|
220
|
+
type StringLiteral<T> = T extends string
|
|
221
|
+
? string extends T
|
|
222
|
+
? never
|
|
223
|
+
: T
|
|
224
|
+
: never
|
|
225
|
+
|
|
226
|
+
type Option<A> = A extends { readonly name: infer N }
|
|
227
|
+
? N extends StringLiteral<N>
|
|
228
|
+
? A
|
|
229
|
+
: never
|
|
230
|
+
: never
|
|
231
|
+
|
|
232
|
+
type OptionsWithLiteral<A, T> = A extends {
|
|
233
|
+
readonly options: ReadonlyArray<CommandOption>
|
|
234
|
+
}
|
|
235
|
+
? Extract<A["options"][number], Option<A["options"][number]> & T>
|
|
236
|
+
: never
|
|
@@ -5,9 +5,9 @@ import type * as Discord from "dfx/types"
|
|
|
5
5
|
import type { NoSuchElementException } from "effect/Cause"
|
|
6
6
|
import { GenericTag } from "effect/Context"
|
|
7
7
|
import * as Effect from "effect/Effect"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import * as
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
import * as Types from "effect/Types"
|
|
11
11
|
|
|
12
12
|
export interface DiscordInteraction {
|
|
13
13
|
readonly _: unique symbol
|
|
@@ -85,58 +85,12 @@ export class SubCommandNotFound extends TypeIdError(
|
|
|
85
85
|
data: Discord.ApplicationCommandDatum
|
|
86
86
|
}> {}
|
|
87
87
|
|
|
88
|
-
export const handleSubCommands = <
|
|
89
|
-
NER extends Record<
|
|
90
|
-
string,
|
|
91
|
-
Effect.Effect<Discord.InteractionResponse, any, any>
|
|
92
|
-
>,
|
|
93
|
-
>(
|
|
94
|
-
commands: NER,
|
|
95
|
-
): Effect.Effect<
|
|
96
|
-
Discord.InteractionResponse,
|
|
97
|
-
| ([NER[keyof NER]] extends [
|
|
98
|
-
{ [Effect.EffectTypeId]: { _E: (_: never) => infer E } },
|
|
99
|
-
]
|
|
100
|
-
? E
|
|
101
|
-
: never)
|
|
102
|
-
| SubCommandNotFound,
|
|
103
|
-
| Exclude<
|
|
104
|
-
[NER[keyof NER]] extends [
|
|
105
|
-
{ [Effect.EffectTypeId]: { _R: (_: never) => infer R } },
|
|
106
|
-
]
|
|
107
|
-
? R
|
|
108
|
-
: never,
|
|
109
|
-
SubCommandContext
|
|
110
|
-
>
|
|
111
|
-
| Discord.Interaction
|
|
112
|
-
| Discord.ApplicationCommandDatum
|
|
113
|
-
> =>
|
|
114
|
-
ApplicationCommand.pipe(
|
|
115
|
-
Effect.flatMap(data =>
|
|
116
|
-
Effect.mapError(
|
|
117
|
-
Arr.findFirst(IxHelpers.allSubCommands(data), _ => !!commands[_.name]),
|
|
118
|
-
() => new SubCommandNotFound({ data }),
|
|
119
|
-
),
|
|
120
|
-
),
|
|
121
|
-
Effect.flatMap(command =>
|
|
122
|
-
Effect.provideService(commands[command.name], SubCommandContext, {
|
|
123
|
-
command,
|
|
124
|
-
}),
|
|
125
|
-
),
|
|
126
|
-
)
|
|
127
|
-
|
|
128
88
|
export const currentSubCommand: Effect.Effect<
|
|
129
89
|
Discord.ApplicationCommandInteractionDataOption,
|
|
130
90
|
never,
|
|
131
91
|
DiscordSubCommand
|
|
132
92
|
> = Effect.map(SubCommandContext, _ => _.command)
|
|
133
93
|
|
|
134
|
-
export const optionsMap: Effect.Effect<
|
|
135
|
-
HashMap.HashMap<string, string | undefined>,
|
|
136
|
-
never,
|
|
137
|
-
DiscordApplicationCommand
|
|
138
|
-
> = Effect.map(ApplicationCommand, IxHelpers.optionsMap)
|
|
139
|
-
|
|
140
94
|
export class RequiredOptionNotFound {
|
|
141
95
|
readonly _tag = "RequiredOptionNotFound"
|
|
142
96
|
constructor(
|
|
@@ -147,29 +101,6 @@ export class RequiredOptionNotFound {
|
|
|
147
101
|
) {}
|
|
148
102
|
}
|
|
149
103
|
|
|
150
|
-
export const option = (name: string) =>
|
|
151
|
-
Effect.map(ApplicationCommand, IxHelpers.getOption(name))
|
|
152
|
-
|
|
153
|
-
export const optionValue = (name: string) =>
|
|
154
|
-
Effect.flatMap(option(name), _ =>
|
|
155
|
-
Option.match(
|
|
156
|
-
Option.flatMapNullable(_, a => a.value),
|
|
157
|
-
{
|
|
158
|
-
onNone: () =>
|
|
159
|
-
Effect.flatMap(ApplicationCommand, data =>
|
|
160
|
-
Effect.fail(new RequiredOptionNotFound(data, name)),
|
|
161
|
-
),
|
|
162
|
-
onSome: Effect.succeed,
|
|
163
|
-
},
|
|
164
|
-
),
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
export const optionValueOptional = (name: string) =>
|
|
168
|
-
Effect.map(
|
|
169
|
-
option(name),
|
|
170
|
-
Option.flatMapNullable(o => o.value),
|
|
171
|
-
)
|
|
172
|
-
|
|
173
104
|
export const modalValues = Effect.map(ModalSubmitData, IxHelpers.componentsMap)
|
|
174
105
|
|
|
175
106
|
export const modalValueOption = (name: string) =>
|