@sapphire/plugin-subcommands 2.2.3-next.dfba037.0 → 3.0.0-next.15d7f9b.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +66 -22
  3. package/dist/index.d.ts +3 -10
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +3 -5
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +3 -5
  8. package/dist/lib/Subcommand.d.ts +25 -0
  9. package/dist/lib/Subcommand.d.ts.map +1 -0
  10. package/dist/lib/Subcommand.js +185 -0
  11. package/dist/lib/Subcommand.js.map +1 -0
  12. package/dist/lib/SubcommandMappings.d.ts +90 -0
  13. package/dist/lib/SubcommandMappings.d.ts.map +1 -0
  14. package/dist/lib/SubcommandMappings.js +3 -0
  15. package/dist/lib/SubcommandMappings.js.map +1 -0
  16. package/dist/lib/types/Events.d.ts +100 -0
  17. package/dist/lib/types/Events.d.ts.map +1 -0
  18. package/dist/lib/types/Events.js +22 -0
  19. package/dist/lib/types/Events.js.map +1 -0
  20. package/package.json +2 -2
  21. package/dist/lib/SubCommandEntry.d.ts +0 -44
  22. package/dist/lib/SubCommandEntry.d.ts.map +0 -1
  23. package/dist/lib/SubCommandEntry.js +0 -38
  24. package/dist/lib/SubCommandEntry.js.map +0 -1
  25. package/dist/lib/SubCommandEntryCommand.d.ts +0 -17
  26. package/dist/lib/SubCommandEntryCommand.d.ts.map +0 -1
  27. package/dist/lib/SubCommandEntryCommand.js +0 -26
  28. package/dist/lib/SubCommandEntryCommand.js.map +0 -1
  29. package/dist/lib/SubCommandEntryMethod.d.ts +0 -31
  30. package/dist/lib/SubCommandEntryMethod.d.ts.map +0 -1
  31. package/dist/lib/SubCommandEntryMethod.js +0 -39
  32. package/dist/lib/SubCommandEntryMethod.js.map +0 -1
  33. package/dist/lib/SubCommandManager.d.ts +0 -20
  34. package/dist/lib/SubCommandManager.d.ts.map +0 -1
  35. package/dist/lib/SubCommandManager.js +0 -68
  36. package/dist/lib/SubCommandManager.js.map +0 -1
  37. package/dist/lib/SubCommandPluginCommand.d.ts +0 -26
  38. package/dist/lib/SubCommandPluginCommand.d.ts.map +0 -1
  39. package/dist/lib/SubCommandPluginCommand.js +0 -24
  40. package/dist/lib/SubCommandPluginCommand.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ # [@sapphire/plugin-subcommands@2.2.2](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-subcommands@2.2.0...@sapphire/plugin-subcommands@2.2.2) - (2022-07-11)
6
+
7
+ ## 🐛 Bug Fixes
8
+
9
+ - Manually set version ([117d5a6](https://github.com/sapphiredev/plugins/commit/117d5a6256af7e01b420b28f95abec36f3feb0af))
10
+
11
+ ## 📝 Documentation
12
+
13
+ - Update typedoc setup ([5c855bd](https://github.com/sapphiredev/plugins/commit/5c855bd8341f155a41c9b85738541f1f47ac837a))
14
+
5
15
  # [2.2.0](https://github.com/sapphiredev/plugins/compare/@sapphire/plugin-subcommands@2.1.3...@sapphire/plugin-subcommands@2.2.0) (2022-03-06)
6
16
 
7
17
  ### Features
package/README.md CHANGED
@@ -45,57 +45,93 @@ npm install @sapphire/plugin-subcommands @sapphire/framework @sapphire/utilities
45
45
  _With TypeScript:_
46
46
 
47
47
  ```typescript
48
- import { SubCommandPluginCommand } from '@sapphire/plugin-subcommands';
48
+ import { Subcommand } from '@sapphire/plugin-subcommands';
49
49
  import { ApplyOptions } from '@sapphire/decorators';
50
50
  import type { Args } from '@sapphire/framework';
51
- import type { Message } from 'discord.js';
51
+ import type { Message, CommandInteraction } from 'discord.js';
52
52
 
53
53
  // Using ApplyOptions decorator makes it easy to configure
54
- @ApplyOptions<SubCommandPluginCommand.Options>({
55
- subCommands: ['add', 'remove', 'list', 'reset', { input: 'show', default: true }]
54
+ @ApplyOptions<Subcommand.Options>({
55
+ subcommands: [
56
+ {
57
+ name: 'add',
58
+ messageRun: 'messageAdd',
59
+ chatInputRun: 'chatInputAdd'
60
+ },
61
+ {
62
+ name: 'remove',
63
+ messageRun: 'messageRemove',
64
+ chatInputRun: 'chatInputRemove'
65
+ },
66
+ {
67
+ name: 'list',
68
+ messageRun: 'messageList',
69
+ chatInputRun: 'chatInputList'
70
+ }
71
+ ]
56
72
  })
57
- // Extend `SubCommandPluginCommand` instead of `Command`
58
- export class UserCommand extends SubCommandPluginCommand {
59
- // Do not include a `messageRun` method, each method name should match with the subcommand names
60
- public async add(message: Message, args: Args) {}
73
+ // Extend `Subcommand` instead of `Command`
74
+ export class UserCommand extends Subcommand {
75
+ public async messageAdd(message: Message, args: Args) {}
61
76
 
62
- public async remove(message: Message, args: Args) {}
77
+ public async messageRemove(message: Message, args: Args) {}
63
78
 
64
- public async list(message: Message, args: Args) {}
79
+ public async messageList(message: Message, args: Args) {}
65
80
 
66
- public async reset(message: Message, args: Args) {}
81
+ public async chatInputAdd(interaction: Subcommand.ChatInputInteraction) {}
67
82
 
68
- public async show(message: Message, args: Args) {}
83
+ public async chatInputRemove(interaction: Subcommand.ChatInputInteraction) {}
84
+
85
+ public async chatInputList(interaction: Subcommand.ChatInputInteraction) {}
69
86
  }
70
87
  ```
71
88
 
72
89
  _With JavaScript:_
73
90
 
74
91
  ```javascript
75
- const { SubCommandPluginCommand } = require('@sapphire/plugin-subcommands');
92
+ const { Subcommand } = require('@sapphire/plugin-subcommands');
76
93
 
77
- // Extend `SubCommandPluginCommand` instead of `Command`
78
- module.exports = class UserCommand extends SubCommandPluginCommand {
94
+ // Extend `Subcommand` instead of `Command`
95
+ module.exports = class UserCommand extends Subcommand {
79
96
  constructor(context, options) {
80
97
  super(context, {
81
98
  ...options,
82
- subCommands: ['add', 'remove', 'list', 'reset', { input: 'show', default: true }]
99
+ subcommands: [
100
+ {
101
+ name: 'add',
102
+ messageRun: 'messageAdd',
103
+ chatInputRun: 'chatInputAdd'
104
+ },
105
+ {
106
+ name: 'remove',
107
+ messageRun: 'messageRemove',
108
+ chatInputRun: 'chatInputRemove'
109
+ },
110
+ {
111
+ name: 'list',
112
+ messageRun: 'messageList',
113
+ chatInputRun: 'chatInputList'
114
+ }
115
+ ]
83
116
  });
84
117
  }
85
118
 
86
- // Do not include a `messageRun` method, each method name should match with the subcommand names
87
- async add(message, args) {}
119
+ async messageAdd(message, args) {}
120
+
121
+ async messageRemove(message, args) {}
88
122
 
89
- async remove(message, args) {}
123
+ async messageList(message, args) {}
90
124
 
91
- async list(message, args) {}
125
+ async chatInputAdd(interaction) {}
92
126
 
93
- async reset(message, args) {}
127
+ async chatInputRemove(interaction) {}
94
128
 
95
- async show(message, args) {}
129
+ async chatInputList(interaction) {}
96
130
  };
97
131
  ```
98
132
 
133
+ For more documentation please refer to [guide](https://www.sapphirejs.dev/docs/Guide/plugins/Subcommands/getting-started)
134
+
99
135
  ## Buy us some doughnuts
100
136
 
101
137
  Sapphire Community is and always will be open source, even if we don't get donations. That being said, we know there are amazing people who may still want to donate just to show their appreciation. Thank you very much in advance!
@@ -147,6 +183,14 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
147
183
  <tr>
148
184
  <td align="center"><a href="https://github.com/Suyashtnt"><img src="https://avatars.githubusercontent.com/u/45307955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Just a Badly Drawn TABS Dude</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=Suyashtnt" title="Code">💻</a></td>
149
185
  <td align="center"><a href="https://newtt.me/"><img src="https://avatars.githubusercontent.com/u/19301186?v=4?s=100" width="100px;" alt=""/><br /><sub><b>newt :D</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=newtykins" title="Code">💻</a></td>
186
+ <td align="center"><a href="https://linktr.ee/mzato0001"><img src="https://avatars.githubusercontent.com/u/62367547?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mzato</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=Mzato0001" title="Code">💻</a></td>
187
+ <td align="center"><a href="https://github.com/MajesticString"><img src="https://avatars.githubusercontent.com/u/66224939?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Harry Allen</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=MajesticString" title="Code">💻</a></td>
188
+ <td align="center"><a href="https://github.com/jczstudios"><img src="https://avatars.githubusercontent.com/u/17862924?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Julian</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=jczstudios" title="Code">💻</a></td>
189
+ <td align="center"><a href="https://github.com/KrishAgarwal2811"><img src="https://avatars.githubusercontent.com/u/68506145?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Krish</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=KrishAgarwal2811" title="Code">💻</a></td>
190
+ <td align="center"><a href="https://github.com/imranbarbhuiya"><img src="https://avatars.githubusercontent.com/u/74945038?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Parbez</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=imranbarbhuiya" title="Code">💻</a></td>
191
+ </tr>
192
+ <tr>
193
+ <td align="center"><a href="https://github.com/ricardooow"><img src="https://avatars.githubusercontent.com/u/28981399?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ricardooow</b></sub></a><br /><a href="https://github.com/sapphiredev/plugins/commits?author=ricardooow" title="Code">💻</a></td>
150
194
  </tr>
151
195
  </table>
152
196
 
package/dist/index.d.ts CHANGED
@@ -1,11 +1,4 @@
1
- export * from './lib/SubCommandEntry';
2
- export * from './lib/SubCommandEntryCommand';
3
- export * from './lib/SubCommandEntryMethod';
4
- export * from './lib/SubCommandManager';
5
- export * from './lib/SubCommandPluginCommand';
6
- declare module '@sapphire/framework' {
7
- const enum Identifiers {
8
- SubCommandNoMatch = "subCommandNoMatch"
9
- }
10
- }
1
+ export * from './lib/Subcommand';
2
+ export * from './lib/SubcommandMappings';
3
+ export * from './lib/types/Events';
11
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAE9C,OAAO,QAAQ,qBAAqB,CAAC;IACpC,WAAW,WAAW;QACrB,iBAAiB,sBAAsB;KACvC;CACD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./lib/SubCommandEntry"), exports);
5
- tslib_1.__exportStar(require("./lib/SubCommandEntryCommand"), exports);
6
- tslib_1.__exportStar(require("./lib/SubCommandEntryMethod"), exports);
7
- tslib_1.__exportStar(require("./lib/SubCommandManager"), exports);
8
- tslib_1.__exportStar(require("./lib/SubCommandPluginCommand"), exports);
4
+ tslib_1.__exportStar(require("./lib/Subcommand"), exports);
5
+ tslib_1.__exportStar(require("./lib/SubcommandMappings"), exports);
6
+ tslib_1.__exportStar(require("./lib/types/Events"), exports);
9
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,uEAA6C;AAC7C,sEAA4C;AAC5C,kEAAwC;AACxC,wEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,mEAAyC;AACzC,6DAAmC"}
package/dist/index.mjs CHANGED
@@ -1,8 +1,6 @@
1
1
  import mod from "./index.js";
2
2
 
3
3
  export default mod;
4
- export const SubCommandEntry = mod.SubCommandEntry;
5
- export const SubCommandEntryCommand = mod.SubCommandEntryCommand;
6
- export const SubCommandEntryMethod = mod.SubCommandEntryMethod;
7
- export const SubCommandManager = mod.SubCommandManager;
8
- export const SubCommandPluginCommand = mod.SubCommandPluginCommand;
4
+ export const Subcommand = mod.Subcommand;
5
+ export const SubcommandPluginEvents = mod.SubcommandPluginEvents;
6
+ export const SubcommandPluginIdentifiers = mod.SubcommandPluginIdentifiers;
@@ -0,0 +1,25 @@
1
+ import { Command, type Args, type ChatInputCommand, type MessageCommand, type PieceContext } from '@sapphire/framework';
2
+ import type { CacheType, Message } from 'discord.js';
3
+ import type { SubcommandMappingArray } from './SubcommandMappings';
4
+ export declare class Subcommand<PreParseReturn extends Args = Args, O extends Subcommand.Options = Subcommand.Options> extends Command<PreParseReturn, O> {
5
+ #private;
6
+ parsedSubcommandMappings: SubcommandMappingArray;
7
+ constructor(context: PieceContext, options: O);
8
+ onLoad(): void;
9
+ messageRun(message: Message, args: PreParseReturn, context: MessageCommand.RunContext): Promise<void>;
10
+ chatInputRun(interaction: ChatInputCommand.Interaction, context: ChatInputCommand.RunContext): Promise<void>;
11
+ }
12
+ export interface SubcommandOptions extends Command.Options {
13
+ subcommands?: SubcommandMappingArray;
14
+ }
15
+ export declare namespace Subcommand {
16
+ type Options = SubcommandOptions;
17
+ type JSON = Command.JSON;
18
+ type Context = Command.Context;
19
+ type RunInTypes = Command.RunInTypes;
20
+ type ChatInputInteraction<Cached extends CacheType = CacheType> = Command.ChatInputInteraction<Cached>;
21
+ type ContextMenuInteraction<Cached extends CacheType = CacheType> = Command.ContextMenuInteraction<Cached>;
22
+ type AutocompleteInteraction<Cached extends CacheType = CacheType> = Command.AutocompleteInteraction<Cached>;
23
+ type Registry = Command.Registry;
24
+ }
25
+ //# sourceMappingURL=Subcommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subcommand.d.ts","sourceRoot":"","sources":["../../src/lib/Subcommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqB,KAAK,IAAI,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3I,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAGX,sBAAsB,EAEtB,MAAM,sBAAsB,CAAC;AAQ9B,qBAAa,UAAU,CAAC,cAAc,SAAS,IAAI,GAAG,IAAI,EAAE,CAAC,SAAS,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAE,SAAQ,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;;IACzI,wBAAwB,EAAE,sBAAsB,CAAC;gBAErC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IAK7C,MAAM;IAWA,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,UAAU;IAkFrF,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,UAAU;CAgHzG;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,OAAO;IACzD,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,yBAAiB,UAAU,CAAC;IAC3B,KAAY,OAAO,GAAG,iBAAiB,CAAC;IACxC,KAAY,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAChC,KAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACtC,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC5C,KAAY,oBAAoB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9G,KAAY,sBAAsB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAClH,KAAY,uBAAuB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACpH,KAAY,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;CACxC"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var _Subcommand_instances, _Subcommand_handleMessageRun, _Subcommand_handleChatInputInteractionRun, _Subcommand_findSubcommand;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Subcommand = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const framework_1 = require("@sapphire/framework");
7
+ const Events_1 = require("./types/Events");
8
+ class Subcommand extends framework_1.Command {
9
+ constructor(context, options) {
10
+ super(context, options);
11
+ _Subcommand_instances.add(this);
12
+ Object.defineProperty(this, "parsedSubcommandMappings", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ this.parsedSubcommandMappings = options.subcommands ?? [];
19
+ }
20
+ onLoad() {
21
+ super.onLoad();
22
+ const externalMapping = Reflect.get(this, 'subcommandMappings');
23
+ if (externalMapping) {
24
+ const subcommands = Array.isArray(externalMapping) ? externalMapping : [];
25
+ this.parsedSubcommandMappings = subcommands;
26
+ this.options.subcommands = subcommands;
27
+ }
28
+ }
29
+ async messageRun(message, args, context) {
30
+ args.save();
31
+ const subcommandOrGroup = args.nextMaybe();
32
+ const subcommandName = args.nextMaybe();
33
+ let defaultCommand = null;
34
+ let actualSubcommandToRun = null;
35
+ for (const mapping of this.parsedSubcommandMappings) {
36
+ mapping.type ?? (mapping.type = 'method');
37
+ if (mapping.type === 'method') {
38
+ if (mapping.default) {
39
+ defaultCommand = mapping;
40
+ }
41
+ if (subcommandOrGroup.isSomeAnd((value) => mapping.name === value)) {
42
+ actualSubcommandToRun = mapping;
43
+ // Exit early
44
+ break;
45
+ }
46
+ }
47
+ // We expect a group mapping
48
+ if (mapping.type === 'group' && subcommandName.isSome()) {
49
+ const value = subcommandName.unwrap();
50
+ // We know a group was passed in here
51
+ if (mapping.name === value) {
52
+ // Find the actual subcommand to run
53
+ const findResult = tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_findSubcommand).call(this, mapping.entries, value);
54
+ if (findResult.defaultMatch) {
55
+ defaultCommand = findResult.mapping;
56
+ }
57
+ else {
58
+ actualSubcommandToRun = findResult.mapping;
59
+ // Exit early
60
+ break;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ // Preemptively restore the args state, to provide a correct args result for users
66
+ args.restore();
67
+ if (actualSubcommandToRun) {
68
+ // Skip over the subcommandOrGroup
69
+ args.next();
70
+ // We might've matched a group subcommand
71
+ if (subcommandOrGroup.isSomeAnd((value) => actualSubcommandToRun.name === value)) {
72
+ args.next();
73
+ }
74
+ return tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_handleMessageRun).call(this, message, args, context, actualSubcommandToRun);
75
+ }
76
+ // No subcommand matched, let's try to run default, if any:
77
+ if (defaultCommand) {
78
+ if (subcommandOrGroup.isSome()) {
79
+ args.next();
80
+ }
81
+ // We might've ran `!example group subcm` but the default subcommand is `subcmd` instead, we should strip that out
82
+ if (subcommandName.isSome()) {
83
+ args.next();
84
+ }
85
+ return tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_handleMessageRun).call(this, message, args, context, defaultCommand);
86
+ }
87
+ // No match and no subcommand, return an err:
88
+ throw new framework_1.UserError({
89
+ identifier: Events_1.SubcommandPluginIdentifiers.MessageSubcommandNoMatch,
90
+ context: {
91
+ ...context,
92
+ possibleSubcommandName: subcommandName.unwrapOr(null),
93
+ possibleSubcommandGroupOrName: subcommandOrGroup.unwrapOr(null)
94
+ }
95
+ });
96
+ }
97
+ async chatInputRun(interaction, context) {
98
+ const subcommandName = interaction.options.getSubcommand(false);
99
+ const subcommandGroupName = interaction.options.getSubcommandGroup(false);
100
+ for (const mapping of this.parsedSubcommandMappings) {
101
+ mapping.type ?? (mapping.type = 'method');
102
+ // If we have a group, we know we also have a subcommand and we should find and run it
103
+ if (subcommandGroupName && subcommandName) {
104
+ if (mapping.type !== 'group')
105
+ continue;
106
+ if (mapping.name !== subcommandGroupName)
107
+ continue;
108
+ const foundSubcommand = tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_findSubcommand).call(this, mapping.entries, subcommandName);
109
+ // Only run if its not the "default" found command mapping, as interactions don't have that
110
+ if (!foundSubcommand.defaultMatch) {
111
+ return tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_handleChatInputInteractionRun).call(this, interaction, context, foundSubcommand.mapping);
112
+ }
113
+ // Skip to the next entry
114
+ continue;
115
+ }
116
+ // If we have a direct subcommand, and no group, then run the mapping
117
+ if (mapping.type === 'method' && mapping.name === subcommandName) {
118
+ return tslib_1.__classPrivateFieldGet(this, _Subcommand_instances, "m", _Subcommand_handleChatInputInteractionRun).call(this, interaction, context, mapping);
119
+ }
120
+ }
121
+ // No match and no subcommand, return an err:
122
+ throw new framework_1.UserError({ identifier: Events_1.SubcommandPluginIdentifiers.ChatInputSubcommandNoMatch, context });
123
+ }
124
+ }
125
+ exports.Subcommand = Subcommand;
126
+ _Subcommand_instances = new WeakSet(), _Subcommand_handleMessageRun = async function _Subcommand_handleMessageRun(message, args, context, subcommand) {
127
+ const payload = { message, command: this, context };
128
+ const result = await framework_1.Result.fromAsync(async () => {
129
+ if (subcommand.messageRun) {
130
+ const casted = subcommand;
131
+ this.container.client.emit(Events_1.SubcommandPluginEvents.MessageSubcommandRun, message, casted, payload);
132
+ let result;
133
+ if (typeof subcommand.messageRun === 'string') {
134
+ const method = Reflect.get(this, subcommand.messageRun);
135
+ if (!method)
136
+ throw new framework_1.UserError({ identifier: Events_1.SubcommandPluginIdentifiers.SubcommandNotFound, context: { ...payload } });
137
+ result = await Reflect.apply(method, this, [message, args, context]);
138
+ }
139
+ else {
140
+ result = await subcommand.messageRun(message, args, context);
141
+ }
142
+ this.container.client.emit(Events_1.SubcommandPluginEvents.MessageSubcommandSuccess, message, casted, { ...payload, result });
143
+ }
144
+ else {
145
+ this.container.client.emit(Events_1.SubcommandPluginEvents.SubcommandMappingIsMissingMessageCommandHandler, message, subcommand, payload);
146
+ }
147
+ });
148
+ result.inspectErr((error) => this.container.client.emit(Events_1.SubcommandPluginEvents.MessageSubcommandError, error, payload));
149
+ }, _Subcommand_handleChatInputInteractionRun = async function _Subcommand_handleChatInputInteractionRun(interaction, context, subcommand) {
150
+ const payload = { command: this, context, interaction };
151
+ const result = await framework_1.Result.fromAsync(async () => {
152
+ if (subcommand.chatInputRun) {
153
+ const casted = subcommand;
154
+ this.container.client.emit(Events_1.SubcommandPluginEvents.ChatInputSubcommandRun, interaction, casted, payload);
155
+ let result;
156
+ if (typeof subcommand.chatInputRun === 'string') {
157
+ const method = Reflect.get(this, subcommand.chatInputRun);
158
+ if (!method)
159
+ throw new framework_1.UserError({ identifier: Events_1.SubcommandPluginIdentifiers.SubcommandNotFound, context: { ...payload } });
160
+ result = await Reflect.apply(method, this, [interaction, context]);
161
+ }
162
+ else {
163
+ result = await subcommand.chatInputRun(interaction, context);
164
+ }
165
+ this.container.client.emit(Events_1.SubcommandPluginEvents.ChatInputSubcommandSuccess, interaction, casted, { ...payload, result });
166
+ }
167
+ else {
168
+ this.container.client.emit(Events_1.SubcommandPluginEvents.SubcommandMappingIsMissingChatInputCommandHandler, interaction, subcommand, payload);
169
+ }
170
+ });
171
+ result.inspectErr((error) => this.container.client.emit(Events_1.SubcommandPluginEvents.ChatInputSubcommandError, error, payload));
172
+ }, _Subcommand_findSubcommand = function _Subcommand_findSubcommand(mappings, expectedName) {
173
+ let foundDefault = null;
174
+ for (const mapping of mappings) {
175
+ mapping.type ?? (mapping.type = 'method');
176
+ if (mapping.default) {
177
+ foundDefault = mapping;
178
+ }
179
+ if (mapping.name === expectedName) {
180
+ return { mapping, defaultMatch: false };
181
+ }
182
+ }
183
+ return { mapping: foundDefault, defaultMatch: true };
184
+ };
185
+ //# sourceMappingURL=Subcommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subcommand.js","sourceRoot":"","sources":["../../src/lib/Subcommand.ts"],"names":[],"mappings":";;;;;AAAA,mDAA2I;AAQ3I,2CAKwB;AAExB,MAAa,UAAkG,SAAQ,mBAA0B;IAGhJ,YAAmB,OAAqB,EAAE,OAAU;QACnD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;QAHzB;;;;;WAAwD;QAIvD,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC3D,CAAC;IAEM,MAAM;QACZ,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,MAAM,eAAe,GAAuC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QACpG,IAAI,eAAe,EAAE;YACpB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,wBAAwB,GAAG,WAAW,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;SACvC;IACF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,IAAoB,EAAE,OAAkC;QACjG,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,cAAc,GAAmC,IAAI,CAAC;QAC1D,IAAI,qBAAqB,GAAmC,IAAI,CAAC;QAEjE,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACpD,OAAO,CAAC,IAAI,KAAZ,OAAO,CAAC,IAAI,GAAK,QAAQ,EAAC;YAE1B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC9B,IAAI,OAAO,CAAC,OAAO,EAAE;oBACpB,cAAc,GAAG,OAAO,CAAC;iBACzB;gBAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;oBACnE,qBAAqB,GAAG,OAAO,CAAC;oBAChC,aAAa;oBACb,MAAM;iBACN;aACD;YAED,4BAA4B;YAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE;gBACxD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;gBAEtC,qCAAqC;gBACrC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;oBAC3B,oCAAoC;oBACpC,MAAM,UAAU,GAAG,+BAAA,IAAI,yDAAgB,MAApB,IAAI,EAAiB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAEhE,IAAI,UAAU,CAAC,YAAY,EAAE;wBAC5B,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC;qBACpC;yBAAM;wBACN,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC;wBAC3C,aAAa;wBACb,MAAM;qBACN;iBACD;aACD;SACD;QAED,kFAAkF;QAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,qBAAqB,EAAE;YAC1B,kCAAkC;YAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YAEZ,yCAAyC;YACzC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAsB,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;gBAClF,IAAI,CAAC,IAAI,EAAE,CAAC;aACZ;YAED,OAAO,+BAAA,IAAI,2DAAkB,MAAtB,IAAI,EAAmB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;SAC7E;QAED,2DAA2D;QAC3D,IAAI,cAAc,EAAE;YACnB,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE;gBAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;aACZ;YAED,kHAAkH;YAClH,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;aACZ;YAED,OAAO,+BAAA,IAAI,2DAAkB,MAAtB,IAAI,EAAmB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;SACtE;QAED,6CAA6C;QAC7C,MAAM,IAAI,qBAAS,CAAC;YACnB,UAAU,EAAE,oCAA2B,CAAC,wBAAwB;YAChE,OAAO,EAAE;gBACR,GAAG,OAAO;gBACV,sBAAsB,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACrD,6BAA6B,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;aAC/D;SACD,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,WAAyC,EAAE,OAAoC;QACxG,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE1E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACpD,OAAO,CAAC,IAAI,KAAZ,OAAO,CAAC,IAAI,GAAK,QAAQ,EAAC;YAE1B,sFAAsF;YACtF,IAAI,mBAAmB,IAAI,cAAc,EAAE;gBAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;oBAAE,SAAS;gBACvC,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB;oBAAE,SAAS;gBAEnD,MAAM,eAAe,GAAG,+BAAA,IAAI,yDAAgB,MAApB,IAAI,EAAiB,OAAO,CAAC,OAAO,EAAE,cAAe,CAAC,CAAC;gBAE/E,2FAA2F;gBAC3F,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;oBAClC,OAAO,+BAAA,IAAI,wEAA+B,MAAnC,IAAI,EAAgC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;iBAC1F;gBAED,yBAAyB;gBACzB,SAAS;aACT;YAED,qEAAqE;YACrE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE;gBACjE,OAAO,+BAAA,IAAI,wEAA+B,MAAnC,IAAI,EAAgC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;aAC1E;SACD;QAED,6CAA6C;QAC7C,MAAM,IAAI,qBAAS,CAAC,EAAE,UAAU,EAAE,oCAA2B,CAAC,0BAA0B,EAAE,OAAO,EAAE,CAAC,CAAC;IACtG,CAAC;CAiFD;AArND,gCAqNC;sEA/EA,KAAK,uCAAmB,OAAgB,EAAE,IAAU,EAAE,OAAkC,EAAE,UAAmC;IAC5H,MAAM,OAAO,GAAqC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACtF,MAAM,MAAM,GAAG,MAAM,kBAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAChD,IAAI,UAAU,CAAC,UAAU,EAAE;YAC1B,MAAM,MAAM,GAAG,UAA4C,CAAC;YAE5D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClG,IAAI,MAAe,CAAC;YAEpB,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE;gBAC9C,MAAM,MAAM,GAAmC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBACxF,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,qBAAS,CAAC,EAAE,UAAU,EAAE,oCAA2B,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;gBAE1H,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aACrE;iBAAM;gBACN,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aAC7D;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,wBAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;SACrH;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,+CAA+C,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SACjI;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACzH,CAAC,8CAED,KAAK,oDACJ,WAAyC,EACzC,OAAoC,EACpC,UAAmC;IAEnC,MAAM,OAAO,GAAuC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAM,kBAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAChD,IAAI,UAAU,CAAC,YAAY,EAAE;YAC5B,MAAM,MAAM,GAAG,UAAqD,CAAC;YAErE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,sBAAsB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACxG,IAAI,MAAe,CAAC;YAEpB,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,EAAE;gBAChD,MAAM,MAAM,GAAqC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC5F,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,qBAAS,CAAC,EAAE,UAAU,EAAE,oCAA2B,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC1H,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;aACnE;iBAAM;gBACN,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;aAC7D;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,0BAA0B,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;SAC3H;aAAM;YACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CACzB,+BAAsB,CAAC,iDAAiD,EACxE,WAAW,EACX,UAAU,EACV,OAAO,CACP,CAAC;SACF;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,+BAAsB,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3H,CAAC,mEAEe,QAAmC,EAAE,YAAoB;IACxE,IAAI,YAAY,GAAmC,IAAI,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC/B,OAAO,CAAC,IAAI,KAAZ,OAAO,CAAC,IAAI,GAAK,QAAQ,EAAC;QAE1B,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,YAAY,GAAG,OAAO,CAAC;SACvB;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;YAClC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAW,CAAC;SACjD;KACD;IAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAW,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,90 @@
1
+ import type { Command } from '@sapphire/framework';
2
+ export declare type SubcommandMapping = SubcommandMappingMethod | SubcommandMappingGroup;
3
+ export declare type SubcommandMappingArray = SubcommandMapping[];
4
+ /**
5
+ * Describes the mapping of all the subcommands to their respective implementations for this command.
6
+ */
7
+ interface SubcommandMappingBase {
8
+ /**
9
+ * The name of this subcommand, or subcommand group
10
+ */
11
+ name: string;
12
+ /**
13
+ * Whether this subcommand mapping describes a `'method'` or `'group'`
14
+ * @default 'method'
15
+ */
16
+ type?: 'group' | 'method';
17
+ }
18
+ /**
19
+ * Describes how a subcommand method maps to the actual implementation of that subcommand.
20
+ */
21
+ export interface SubcommandMappingMethod extends SubcommandMappingBase {
22
+ /**
23
+ * This subcommand mapping describes a subcommand method and can therefore only ever be `'method'`
24
+ */
25
+ type?: 'method';
26
+ /**
27
+ * Whether this is the default subcommand when none is provided.
28
+ *
29
+ * Note that this is effectively only used for Message based subcommand
30
+ * (those implementing {@link SubcommandMappingMethod.messageRun})
31
+ * because the subcommand is always provided for chat input commands.
32
+ */
33
+ default?: boolean;
34
+ /**
35
+ * The class method to call when invoking this subcommand through a **message command**,
36
+ * or a callback implementation of the subcommand.
37
+ *
38
+ * Note that when providing a string you have to first define the method that will be called within your function
39
+ * before this will allow any values. This is to ensure that the property is strictly typed to the context of the
40
+ * class.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * chatInputRun: 'runAdminConfig'
45
+ * ```
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * chatInputRun(interaction: Subcommand.Interaction) {
50
+ * return interaction.reply(`${interaction.user} has been granted admin`);
51
+ * }
52
+ * ```
53
+ */
54
+ messageRun?: string | Command['messageRun'];
55
+ /**
56
+ * The class method to call when invoking this subcommand through a **chat input command**,
57
+ * or a callback implementation of the subcommand.
58
+ *
59
+ * Note that when providing a string you have to first define the method that will be called within your function
60
+ * before this will allow any values. This is to ensure that the property is strictly typed to the context of the
61
+ * class.
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * chatInputRun: 'runModeratorConfig'
66
+ * ```
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * chatInputRun(interaction: Subcommand.Interaction) {
71
+ * return interaction.reply(`${interaction.user} has been granted moderator`);
72
+ * }
73
+ * ```
74
+ */
75
+ chatInputRun?: string | Command['chatInputRun'];
76
+ }
77
+ export interface SubcommandMappingGroup extends SubcommandMappingBase {
78
+ /**
79
+ * This subcommand mapping describes a subcommand group and can therefore only ever be `'group'`
80
+ */
81
+ type: 'group';
82
+ /**
83
+ * The {@link SubcommandMappingMethod}s that are contained within this subcommand group.
84
+ */
85
+ entries: SubcommandMappingMethod[];
86
+ }
87
+ export declare type MessageSubcommandMappingMethod = Omit<SubcommandMappingMethod, 'messageRun'> & Required<Pick<SubcommandMappingMethod, 'messageRun'>>;
88
+ export declare type ChatInputCommandSubcommandMappingMethod = Omit<SubcommandMappingMethod, 'chatInputRun'> & Required<Pick<SubcommandMappingMethod, 'chatInputRun'>>;
89
+ export {};
90
+ //# sourceMappingURL=SubcommandMappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubcommandMappings.d.ts","sourceRoot":"","sources":["../../src/lib/SubcommandMappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,oBAAY,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAEjF,oBAAY,sBAAsB,GAAG,iBAAiB,EAAE,CAAC;AAEzD;;GAEG;AACH,UAAU,qBAAqB;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACrE;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACpE;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAGD,oBAAY,8BAA8B,GAAG,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC,CAAC;AAEjJ,oBAAY,uCAAuC,GAAG,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,GAClG,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=SubcommandMappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubcommandMappings.js","sourceRoot":"","sources":["../../src/lib/SubcommandMappings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ import type { ChatInputCommand, MessageCommand } from '@sapphire/framework';
2
+ import type { Message } from 'discord.js';
3
+ import type { Subcommand } from '../Subcommand';
4
+ import type { ChatInputCommandSubcommandMappingMethod, MessageSubcommandMappingMethod, SubcommandMappingMethod } from '../SubcommandMappings';
5
+ export declare const SubcommandPluginEvents: {
6
+ ChatInputSubcommandRun: "chatInputSubcommandRun";
7
+ ChatInputSubcommandSuccess: "chatInputSubcommandSuccess";
8
+ ChatInputSubcommandNotFound: "chatInputSubcommandNotFound";
9
+ ChatInputSubcommandError: "chatInputSubcommandError";
10
+ MessageSubcommandRun: "messageSubcommandRun";
11
+ MessageSubcommandSuccess: "messageSubcommandSuccess";
12
+ MessageSubcommandNotFound: "messageSubcommandNotFound";
13
+ MessageSubcommandError: "messageSubcommandError";
14
+ SubcommandMappingIsMissingMessageCommandHandler: "subcommandMappingIsMissingMessageCommandHandler";
15
+ SubcommandMappingIsMissingChatInputCommandHandler: "subcommandMappingIsMissingChatInputCommandHandler";
16
+ };
17
+ export declare enum SubcommandPluginIdentifiers {
18
+ MessageSubcommandNoMatch = "messageSubcommandNoMatch",
19
+ ChatInputSubcommandNoMatch = "chatInputSubcommandNoMatch",
20
+ SubcommandNotFound = "subcommandNotFound"
21
+ }
22
+ export interface MessageSubcommandNoMatchContext extends MessageCommand.RunContext {
23
+ possibleSubcommandName: string | null;
24
+ possibleSubcommandGroupOrName: string | null;
25
+ }
26
+ export interface IMessageSubcommandPayload {
27
+ message: Message;
28
+ command: Subcommand;
29
+ }
30
+ export interface MessageSubcommandAcceptedPayload extends IMessageSubcommandPayload {
31
+ context: MessageCommand.RunContext;
32
+ }
33
+ export interface MessageSubcommandRunPayload extends MessageSubcommandAcceptedPayload {
34
+ }
35
+ export interface MessageSubcommandErrorPayload extends MessageSubcommandRunPayload {
36
+ }
37
+ export interface MessageSubcommandSuccessPayload extends MessageSubcommandRunPayload {
38
+ result: unknown;
39
+ }
40
+ export interface IChatInputSubcommandPayload {
41
+ interaction: ChatInputCommand.Interaction;
42
+ command: Subcommand;
43
+ }
44
+ export interface ChatInputSubcommandAcceptedPayload extends IChatInputSubcommandPayload {
45
+ context: ChatInputCommand.RunContext;
46
+ }
47
+ export interface ChatInputSubcommandRunPayload extends ChatInputSubcommandAcceptedPayload {
48
+ }
49
+ export interface ChatInputSubcommandErrorPayload extends ChatInputSubcommandRunPayload {
50
+ }
51
+ export interface ChatInputSubcommandSuccessPayload extends ChatInputSubcommandRunPayload {
52
+ result: unknown;
53
+ }
54
+ declare module 'discord.js' {
55
+ interface ClientEvents {
56
+ [SubcommandPluginEvents.ChatInputSubcommandRun]: [
57
+ interaction: ChatInputCommand.Interaction,
58
+ subcommand: ChatInputCommandSubcommandMappingMethod,
59
+ payload: ChatInputSubcommandRunPayload
60
+ ];
61
+ [SubcommandPluginEvents.ChatInputSubcommandSuccess]: [
62
+ interaction: ChatInputCommand.Interaction,
63
+ subcommand: ChatInputCommandSubcommandMappingMethod,
64
+ payload: ChatInputSubcommandSuccessPayload
65
+ ];
66
+ [SubcommandPluginEvents.ChatInputSubcommandNotFound]: [
67
+ interaction: ChatInputCommand.Interaction,
68
+ subcommand: ChatInputCommandSubcommandMappingMethod,
69
+ context: ChatInputCommand.Context
70
+ ];
71
+ [SubcommandPluginEvents.ChatInputSubcommandError]: [error: unknown, payload: ChatInputSubcommandErrorPayload];
72
+ [SubcommandPluginEvents.MessageSubcommandRun]: [
73
+ message: Message,
74
+ subcommand: MessageSubcommandMappingMethod,
75
+ payload: MessageSubcommandRunPayload
76
+ ];
77
+ [SubcommandPluginEvents.MessageSubcommandSuccess]: [
78
+ message: Message,
79
+ subcommand: MessageSubcommandMappingMethod,
80
+ payload: MessageSubcommandSuccessPayload
81
+ ];
82
+ [SubcommandPluginEvents.MessageSubcommandNotFound]: [
83
+ message: Message,
84
+ subcommand: MessageSubcommandMappingMethod,
85
+ context: ChatInputCommand.Context
86
+ ];
87
+ [SubcommandPluginEvents.MessageSubcommandError]: [error: unknown, payload: MessageSubcommandErrorPayload];
88
+ [SubcommandPluginEvents.SubcommandMappingIsMissingMessageCommandHandler]: [
89
+ message: Message,
90
+ subcommand: SubcommandMappingMethod,
91
+ payload: MessageSubcommandAcceptedPayload
92
+ ];
93
+ [SubcommandPluginEvents.SubcommandMappingIsMissingChatInputCommandHandler]: [
94
+ message: ChatInputCommand.Interaction,
95
+ subcommand: SubcommandMappingMethod,
96
+ payload: ChatInputSubcommandAcceptedPayload
97
+ ];
98
+ }
99
+ }
100
+ //# sourceMappingURL=Events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../src/lib/types/Events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubcommandPluginIdentifiers = exports.SubcommandPluginEvents = void 0;
4
+ exports.SubcommandPluginEvents = {
5
+ ChatInputSubcommandRun: 'chatInputSubcommandRun',
6
+ ChatInputSubcommandSuccess: 'chatInputSubcommandSuccess',
7
+ ChatInputSubcommandNotFound: 'chatInputSubcommandNotFound',
8
+ ChatInputSubcommandError: 'chatInputSubcommandError',
9
+ MessageSubcommandRun: 'messageSubcommandRun',
10
+ MessageSubcommandSuccess: 'messageSubcommandSuccess',
11
+ MessageSubcommandNotFound: 'messageSubcommandNotFound',
12
+ MessageSubcommandError: 'messageSubcommandError',
13
+ SubcommandMappingIsMissingMessageCommandHandler: 'subcommandMappingIsMissingMessageCommandHandler',
14
+ SubcommandMappingIsMissingChatInputCommandHandler: 'subcommandMappingIsMissingChatInputCommandHandler'
15
+ };
16
+ var SubcommandPluginIdentifiers;
17
+ (function (SubcommandPluginIdentifiers) {
18
+ SubcommandPluginIdentifiers["MessageSubcommandNoMatch"] = "messageSubcommandNoMatch";
19
+ SubcommandPluginIdentifiers["ChatInputSubcommandNoMatch"] = "chatInputSubcommandNoMatch";
20
+ SubcommandPluginIdentifiers["SubcommandNotFound"] = "subcommandNotFound";
21
+ })(SubcommandPluginIdentifiers = exports.SubcommandPluginIdentifiers || (exports.SubcommandPluginIdentifiers = {}));
22
+ //# sourceMappingURL=Events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/lib/types/Events.ts"],"names":[],"mappings":";;;AAKa,QAAA,sBAAsB,GAAG;IACrC,sBAAsB,EAAE,wBAAiC;IACzD,0BAA0B,EAAE,4BAAqC;IACjE,2BAA2B,EAAE,6BAAsC;IACnE,wBAAwB,EAAE,0BAAmC;IAE7D,oBAAoB,EAAE,sBAA+B;IACrD,wBAAwB,EAAE,0BAAmC;IAC7D,yBAAyB,EAAE,2BAAoC;IAC/D,sBAAsB,EAAE,wBAAiC;IAEzD,+CAA+C,EAAE,iDAA0D;IAC3G,iDAAiD,EAAE,mDAA4D;CAC/G,CAAC;AAEF,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACtC,oFAAqD,CAAA;IACrD,wFAAyD,CAAA;IACzD,wEAAyC,CAAA;AAC1C,CAAC,EAJW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAItC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapphire/plugin-subcommands",
3
- "version": "2.2.3-next.dfba037.0",
3
+ "version": "3.0.0-next.15d7f9b.0",
4
4
  "description": "Plugin for @sapphire/framework that adds support for subcommands.",
5
5
  "author": "@sapphire",
6
6
  "license": "MIT",
@@ -59,7 +59,7 @@
59
59
  "access": "public"
60
60
  },
61
61
  "devDependencies": {
62
- "@favware/cliff-jumper": "^1.8.5",
62
+ "@favware/cliff-jumper": "^1.8.6",
63
63
  "gen-esm-wrapper": "^1.1.3",
64
64
  "typescript": "^4.7.4"
65
65
  }
@@ -1,44 +0,0 @@
1
- import { Args, Awaitable, Command } from '@sapphire/framework';
2
- import type { Message } from 'discord.js';
3
- /**
4
- * @since 1.0.0
5
- * SubCommandEntry represents a basic subcommand entry. Methods and command names are supported in core.
6
- * @see {@link SubCommandEntryCommand}
7
- * @see {@link SubCommandEntryMethod}
8
- */
9
- export declare abstract class SubCommandEntry<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> {
10
- readonly input: string | ((context: SubCommandEntry.MessageRunContext<ArgType, CommandType>) => Awaitable<string>);
11
- readonly output: string;
12
- constructor(options: SubCommandEntry.Options<ArgType, CommandType>);
13
- match(value: string, context: SubCommandEntry.MessageRunContext<ArgType, CommandType>): Promise<boolean>;
14
- abstract messageRun(context: SubCommandEntry.MessageRunContext<ArgType, CommandType>): unknown;
15
- }
16
- export declare namespace SubCommandEntry {
17
- /**
18
- * The options for a SubCommandEntry.
19
- * @property input Input represents the subcommand that the user will type in.
20
- * @property output Output represents the method/command called for the subcommand.
21
- * @example
22
- * ```typescript
23
- * subCommands: [{
24
- * input: ({ message }) => message.resolveKey('subcommands:set'),
25
- * output: 'set'
26
- * }]
27
- * ```
28
- */
29
- interface Options<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> {
30
- input: string | ((context: MessageRunContext<ArgType, CommandType>) => Awaitable<string>);
31
- output?: string;
32
- }
33
- /**
34
- * MessageRunContext is passed to SubCommandManager.messageRun() and to input (if it is a function)
35
- * @see {@link SubCommandEntry.Options}
36
- */
37
- interface MessageRunContext<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> {
38
- command: CommandType;
39
- message: Message;
40
- args: ArgType;
41
- context: Command.RunContext;
42
- }
43
- }
44
- //# sourceMappingURL=SubCommandEntry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntry.d.ts","sourceRoot":"","sources":["../../src/lib/SubCommandEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAa,MAAM,qBAAqB,CAAC;AAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;GAKG;AACH,8BAAsB,eAAe,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IACzH,SAAgB,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1H,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IAM5D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;aAMrG,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,OAAO;CACrG;AAED,yBAAiB,eAAe,CAAC;IAChC;;;;;;;;;;;OAWG;IACH,UAAiB,OAAO,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5G,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB;IAED;;;OAGG;IACH,UAAiB,iBAAiB,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QACtH,OAAO,EAAE,WAAW,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;KAC5B;CACD"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubCommandEntry = void 0;
4
- const framework_1 = require("@sapphire/framework");
5
- const utilities_1 = require("@sapphire/utilities");
6
- /**
7
- * @since 1.0.0
8
- * SubCommandEntry represents a basic subcommand entry. Methods and command names are supported in core.
9
- * @see {@link SubCommandEntryCommand}
10
- * @see {@link SubCommandEntryMethod}
11
- */
12
- class SubCommandEntry {
13
- constructor(options) {
14
- Object.defineProperty(this, "input", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
- Object.defineProperty(this, "output", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: void 0
25
- });
26
- this.input = options.input;
27
- if (!options.output && typeof options.input !== 'string')
28
- throw new ReferenceError('No output provided.');
29
- this.output = options.output ?? options.input;
30
- }
31
- async match(value, context) {
32
- const input = (0, utilities_1.isFunction)(this.input) ? await this.input(context) : this.input;
33
- const caseInsensitive = framework_1.container.client.options.caseInsensitiveCommands;
34
- return caseInsensitive ? input.toLowerCase() === value.toLowerCase() : input === value;
35
- }
36
- }
37
- exports.SubCommandEntry = SubCommandEntry;
38
- //# sourceMappingURL=SubCommandEntry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntry.js","sourceRoot":"","sources":["../../src/lib/SubCommandEntry.ts"],"names":[],"mappings":";;;AAAA,mDAA0E;AAC1E,mDAAiD;AAGjD;;;;;GAKG;AACH,MAAsB,eAAe;IAIpC,YAAmB,OAAsD;QAHzE;;;;;WAA0H;QAC1H;;;;;WAA+B;QAG9B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAC1G,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAK,OAAO,CAAC,KAAgB,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,OAAgE;QACjG,MAAM,KAAK,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9E,MAAM,eAAe,GAAG,qBAAS,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;QACzE,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IACxF,CAAC;CAGD;AAjBD,0CAiBC"}
@@ -1,17 +0,0 @@
1
- import { Args, Command } from '@sapphire/framework';
2
- import { SubCommandEntry } from './SubCommandEntry';
3
- /**
4
- * SubCommandEntryCommand uses other commands as the caller function for subcommands.
5
- * @example
6
- * ```typescript
7
- * // here, using `command set` would call the command `modify-settings`.
8
- * subCommands: [{
9
- * input: 'set',
10
- * output: 'modify-settings'
11
- * }]
12
- * ```
13
- */
14
- export declare class SubCommandEntryCommand<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> extends SubCommandEntry<ArgType, CommandType> {
15
- messageRun(context: SubCommandEntry.MessageRunContext<ArgType, CommandType>): unknown;
16
- }
17
- //# sourceMappingURL=SubCommandEntryCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntryCommand.d.ts","sourceRoot":"","sources":["../../src/lib/SubCommandEntryCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAgC,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAE,SAAQ,eAAe,CAChJ,OAAO,EACP,WAAW,CACX;IACO,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,OAAO;CAK5F"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubCommandEntryCommand = void 0;
4
- const framework_1 = require("@sapphire/framework");
5
- const SubCommandEntry_1 = require("./SubCommandEntry");
6
- /**
7
- * SubCommandEntryCommand uses other commands as the caller function for subcommands.
8
- * @example
9
- * ```typescript
10
- * // here, using `command set` would call the command `modify-settings`.
11
- * subCommands: [{
12
- * input: 'set',
13
- * output: 'modify-settings'
14
- * }]
15
- * ```
16
- */
17
- class SubCommandEntryCommand extends SubCommandEntry_1.SubCommandEntry {
18
- messageRun(context) {
19
- const command = framework_1.container.stores.get('commands').get(this.output);
20
- if (command)
21
- return command.messageRun(context.message, context.args, context.context);
22
- throw new ReferenceError(`The command '${this.input}' does not exist.`);
23
- }
24
- }
25
- exports.SubCommandEntryCommand = SubCommandEntryCommand;
26
- //# sourceMappingURL=SubCommandEntryCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntryCommand.js","sourceRoot":"","sources":["../../src/lib/SubCommandEntryCommand.ts"],"names":[],"mappings":";;;AAAA,mDAAkF;AAClF,uDAAoD;AAEpD;;;;;;;;;;GAUG;AACH,MAAa,sBAA6G,SAAQ,iCAGjI;IACO,UAAU,CAAC,OAAgE;QACjF,MAAM,OAAO,GAAI,qBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/F,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvF,MAAM,IAAI,cAAc,CAAC,gBAAgB,IAAI,CAAC,KAAK,mBAAmB,CAAC,CAAC;IACzE,CAAC;CACD;AATD,wDASC"}
@@ -1,31 +0,0 @@
1
- import type { Args, Command } from '@sapphire/framework';
2
- import { SubCommandEntry } from './SubCommandEntry';
3
- /**
4
- * SubCommandEntryMethods support method names as subcommand functions. All methods must be on the **same** class.
5
- * For splitting sub-commands into different commands, see {@link SubCommandEntryCommand}
6
- * @example
7
- * ```typescript
8
- * export class extends SubCommandPluginCommand {
9
- * public constructor(context: PieceContext) {
10
- * super(context, {
11
- * name: 'conf',
12
- * // by default, outputs default to inputs
13
- * subCommands: ['set', { input: 'list', default: true }]
14
- * })
15
- * }
16
- *
17
- * public async set(message: Message, args: Args) {
18
- * // !conf set is called here.
19
- * }
20
- *
21
- * public async list(message: Message, args: Args) {
22
- * // !conf list is called here.
23
- * // !conf is also called here. (see SubCommandEntry.default)
24
- * }
25
- * }
26
- * ```
27
- */
28
- export declare class SubCommandEntryMethod<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> extends SubCommandEntry<ArgType, CommandType> {
29
- messageRun(context: SubCommandEntry.MessageRunContext<ArgType, CommandType>): unknown;
30
- }
31
- //# sourceMappingURL=SubCommandEntryMethod.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntryMethod.d.ts","sourceRoot":"","sources":["../../src/lib/SubCommandEntryMethod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,qBAAqB,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAE,SAAQ,eAAe,CAC/I,OAAO,EACP,WAAW,CACX;IACO,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,OAAO;CAK5F"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubCommandEntryMethod = void 0;
4
- const SubCommandEntry_1 = require("./SubCommandEntry");
5
- /**
6
- * SubCommandEntryMethods support method names as subcommand functions. All methods must be on the **same** class.
7
- * For splitting sub-commands into different commands, see {@link SubCommandEntryCommand}
8
- * @example
9
- * ```typescript
10
- * export class extends SubCommandPluginCommand {
11
- * public constructor(context: PieceContext) {
12
- * super(context, {
13
- * name: 'conf',
14
- * // by default, outputs default to inputs
15
- * subCommands: ['set', { input: 'list', default: true }]
16
- * })
17
- * }
18
- *
19
- * public async set(message: Message, args: Args) {
20
- * // !conf set is called here.
21
- * }
22
- *
23
- * public async list(message: Message, args: Args) {
24
- * // !conf list is called here.
25
- * // !conf is also called here. (see SubCommandEntry.default)
26
- * }
27
- * }
28
- * ```
29
- */
30
- class SubCommandEntryMethod extends SubCommandEntry_1.SubCommandEntry {
31
- messageRun(context) {
32
- const method = Reflect.get(context.command, this.output);
33
- if (method)
34
- return Reflect.apply(method, context.command, [context.message, context.args, context.context]);
35
- throw new ReferenceError(`The method '${this.input}' does not exist for the command '${context.command.name}'.`);
36
- }
37
- }
38
- exports.SubCommandEntryMethod = SubCommandEntryMethod;
39
- //# sourceMappingURL=SubCommandEntryMethod.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandEntryMethod.js","sourceRoot":"","sources":["../../src/lib/SubCommandEntryMethod.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,qBAA4G,SAAQ,iCAGhI;IACO,UAAU,CAAC,OAAgE;QACjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,MAAM;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5G,MAAM,IAAI,cAAc,CAAC,eAAe,IAAI,CAAC,KAAK,qCAAqC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAClH,CAAC;CACD;AATD,sDASC"}
@@ -1,20 +0,0 @@
1
- import { Args, Command } from '@sapphire/framework';
2
- import type { SubCommandEntry } from './SubCommandEntry';
3
- import { SubCommandEntryCommand } from './SubCommandEntryCommand';
4
- export declare class SubCommandManager<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> {
5
- private readonly entries;
6
- private readonly default;
7
- constructor(entries: SubCommandManager.RawEntries<ArgType, CommandType>);
8
- messageRun(context: SubCommandEntry.MessageRunContext<ArgType, CommandType>): Promise<unknown>;
9
- protected resolve(value: string | SubCommandManager.Entry<ArgType, CommandType>): SubCommandManager.Entry<ArgType, CommandType>;
10
- static readonly handlers: Map<string, typeof SubCommandEntryCommand>;
11
- }
12
- export declare namespace SubCommandManager {
13
- type Type = 'command' | 'method';
14
- interface Entry<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> extends SubCommandEntry.Options<ArgType, CommandType> {
15
- type?: Type;
16
- default?: boolean;
17
- }
18
- type RawEntries<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> = readonly (string | Entry<ArgType, CommandType>)[];
19
- }
20
- //# sourceMappingURL=SubCommandManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandManager.d.ts","sourceRoot":"","sources":["../../src/lib/SubCommandManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA+B,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,qBAAa,iBAAiB,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAClH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsD;gBAE3D,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC;IAgBjE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;IAmBxF,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;IAK/H,gBAAuB,QAAQ,6CAG5B;CACH;AAED,yBAAiB,iBAAiB,CAAC;IAClC,KAAY,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC,UAAiB,KAAK,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAC1G,SAAQ,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;QACrD,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB;IAED,KAAY,UAAU,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,CACrH,MAAM,GACN,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAC7B,EAAE,CAAC;CACJ"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubCommandManager = void 0;
4
- const framework_1 = require("@sapphire/framework");
5
- const SubCommandEntryCommand_1 = require("./SubCommandEntryCommand");
6
- const SubCommandEntryMethod_1 = require("./SubCommandEntryMethod");
7
- class SubCommandManager {
8
- constructor(entries) {
9
- Object.defineProperty(this, "entries", {
10
- enumerable: true,
11
- configurable: true,
12
- writable: true,
13
- value: []
14
- });
15
- Object.defineProperty(this, "default", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: null
20
- });
21
- for (const data of entries) {
22
- const value = this.resolve(data);
23
- const Ctor = SubCommandManager.handlers.get(value.type ?? 'method');
24
- if (!Ctor)
25
- throw new ReferenceError(`There is no sub command handler named '${value.type}' in 'SubCommandManager.handlers'.`);
26
- const entry = new Ctor(value);
27
- if (value.default) {
28
- if (this.default)
29
- throw new Error(`There was already a default of '${this.default.input}', cannot add '${value.input}'.`);
30
- this.default = entry;
31
- }
32
- this.entries.push(entry);
33
- }
34
- }
35
- async messageRun(context) {
36
- // Pick one argument, then try to match a subcommand:
37
- context.args.save();
38
- const value = context.args.nextMaybe();
39
- if (value.exists) {
40
- for (const entry of this.entries) {
41
- if (await entry.match(value.value, context))
42
- return entry.messageRun(context);
43
- }
44
- }
45
- // No subcommand matched, let's restore and try to run default, if any:
46
- context.args.restore();
47
- if (this.default)
48
- return this.default.messageRun(context);
49
- // No match and no subcommand, return an err:
50
- return (0, framework_1.err)(new framework_1.UserError({ identifier: "subCommandNoMatch" /* Identifiers.SubCommandNoMatch */, context }));
51
- }
52
- resolve(value) {
53
- if (typeof value !== 'string')
54
- return value;
55
- return { input: value, output: value, type: 'method' };
56
- }
57
- }
58
- exports.SubCommandManager = SubCommandManager;
59
- Object.defineProperty(SubCommandManager, "handlers", {
60
- enumerable: true,
61
- configurable: true,
62
- writable: true,
63
- value: new Map([
64
- ['command', SubCommandEntryCommand_1.SubCommandEntryCommand],
65
- ['method', SubCommandEntryMethod_1.SubCommandEntryMethod]
66
- ])
67
- });
68
- //# sourceMappingURL=SubCommandManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandManager.js","sourceRoot":"","sources":["../../src/lib/SubCommandManager.ts"],"names":[],"mappings":";;;AAAA,mDAAiF;AAEjF,qEAAkE;AAClE,mEAAgE;AAEhE,MAAa,iBAAiB;IAI7B,YAAmB,OAA2D;QAH9E;;;;mBAAoE,EAAE;WAAC;QACvE;;;;mBAAyE,IAAI;WAAC;QAG7E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,cAAc,CAAC,0CAA0C,KAAK,CAAC,IAAI,oCAAoC,CAAC,CAAC;YAE9H,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;gBAClB,IAAI,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC1H,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACrB;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;IACF,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgE;QACvF,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvC,IAAI,KAAK,CAAC,MAAM,EAAE;YACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aAC9E;SACD;QAED,uEAAuE;QACvE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1D,6CAA6C;QAC7C,OAAO,IAAA,eAAG,EAAC,IAAI,qBAAS,CAAC,EAAE,UAAU,yDAA+B,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAES,OAAO,CAAC,KAA6D;QAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;;AA1CF,8CAgDC;AAJA;;;;WAAkC,IAAI,GAAG,CAAC;QACzC,CAAC,SAAS,EAAE,+CAAsB,CAAC;QACnC,CAAC,QAAQ,EAAE,6CAAqB,CAAC;KACjC,CAAC;GAAC"}
@@ -1,26 +0,0 @@
1
- import { Args, Awaitable, Command, PieceContext } from '@sapphire/framework';
2
- import type { Message } from 'discord.js';
3
- import { SubCommandManager } from './SubCommandManager';
4
- export declare class SubCommandPluginCommand<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> extends Command<ArgType> {
5
- readonly subCommands: SubCommandManager<ArgType, CommandType> | null;
6
- constructor(context: PieceContext, options: SubCommandPluginCommandOptions<ArgType>);
7
- messageRun(message: Message, args: ArgType, context: Command.RunContext): Awaitable<unknown>;
8
- }
9
- export interface SubCommandPluginCommandOptions<ArgType extends Args = Args, CommandType extends Command<ArgType> = Command<ArgType>> extends Command.Options {
10
- subCommands?: SubCommandManager.RawEntries<ArgType, CommandType>;
11
- }
12
- export declare namespace SubCommandPluginCommand {
13
- /** Re-export of {@link Command.Context} */
14
- type Context = Command.Context;
15
- /** Re-export of {@link Command.RunContext} */
16
- type RunContext = Command.RunContext;
17
- /** Re-export of {@link Command.JSON} */
18
- type JSON = Command.JSON;
19
- /** Re-export of {@link Command.RunInTypes} */
20
- type RunInTypes = Command.RunInTypes;
21
- /**
22
- * The SubCommandPluginCommand Options
23
- */
24
- type Options = SubCommandPluginCommandOptions;
25
- }
26
- //# sourceMappingURL=SubCommandPluginCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandPluginCommand.d.ts","sourceRoot":"","sources":["../../src/lib/SubCommandPluginCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,uBAAuB,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAE,SAAQ,OAAO,CAAC,OAAO,CAAC;IAClJ,SAAgB,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;gBAEzD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,8BAA8B,CAAC,OAAO,CAAC;IAMnF,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;CAInG;AAED,MAAM,WAAW,8BAA8B,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI,EAAE,WAAW,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CACnI,SAAQ,OAAO,CAAC,OAAO;IACvB,WAAW,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;CACjE;AAED,yBAAiB,uBAAuB,CAAC;IACxC,2CAA2C;IAC3C,KAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEtC,8CAA8C;IAC9C,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAE5C,wCAAwC;IACxC,KAAY,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhC,8CAA8C;IAC9C,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAE5C;;OAEG;IACH,KAAY,OAAO,GAAG,8BAA8B,CAAC;CACrD"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubCommandPluginCommand = void 0;
4
- const framework_1 = require("@sapphire/framework");
5
- const SubCommandManager_1 = require("./SubCommandManager");
6
- class SubCommandPluginCommand extends framework_1.Command {
7
- constructor(context, options) {
8
- super(context, options);
9
- Object.defineProperty(this, "subCommands", {
10
- enumerable: true,
11
- configurable: true,
12
- writable: true,
13
- value: void 0
14
- });
15
- this.subCommands = options.subCommands ? new SubCommandManager_1.SubCommandManager(options.subCommands) : null;
16
- }
17
- messageRun(message, args, context) {
18
- if (!this.subCommands)
19
- throw new Error(`The command ${this.name} does not have a 'messageRun' method and does not support sub-commands.`);
20
- return this.subCommands.messageRun({ message, args, context, command: this });
21
- }
22
- }
23
- exports.SubCommandPluginCommand = SubCommandPluginCommand;
24
- //# sourceMappingURL=SubCommandPluginCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubCommandPluginCommand.js","sourceRoot":"","sources":["../../src/lib/SubCommandPluginCommand.ts"],"names":[],"mappings":";;;AAAA,mDAA6E;AAE7E,2DAAwD;AAExD,MAAa,uBAA8G,SAAQ,mBAAgB;IAGlJ,YAAmB,OAAqB,EAAE,OAAgD;QACzF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAHzB;;;;;WAA4E;QAK3E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,qCAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,CAAC;IAEM,UAAU,CAAC,OAAgB,EAAE,IAAa,EAAE,OAA2B;QAC7E,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,IAAI,yEAAyE,CAAC,CAAC;QAC1I,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAA8B,EAAE,CAAC,CAAC;IACzG,CAAC;CACD;AAbD,0DAaC"}