necord 2.0.0 → 2.0.1

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 (64) hide show
  1. package/README.md +2 -2
  2. package/dist/decorators/{necord-commands.decorator.d.ts → commands.decorator.d.ts} +0 -0
  3. package/dist/decorators/{necord-commands.decorator.js → commands.decorator.js} +0 -0
  4. package/dist/decorators/{necord-components.decorator.d.ts → components.decorator.d.ts} +0 -0
  5. package/dist/decorators/{necord-components.decorator.js → components.decorator.js} +0 -0
  6. package/dist/decorators/{necord-groups.decorator.d.ts → groups.decorator.d.ts} +0 -0
  7. package/dist/decorators/{necord-groups.decorator.js → groups.decorator.js} +0 -0
  8. package/dist/decorators/index.d.ts +6 -6
  9. package/dist/decorators/index.js +6 -6
  10. package/dist/decorators/{necord-listeners.decorator.d.ts → listeners.decorator.d.ts} +0 -0
  11. package/dist/decorators/{necord-listeners.decorator.js → listeners.decorator.js} +2 -2
  12. package/dist/decorators/{necord-options.decorator.d.ts → options.decorator.d.ts} +0 -0
  13. package/dist/decorators/{necord-options.decorator.js → options.decorator.js} +0 -0
  14. package/dist/decorators/{necord-params.decorator.d.ts → params.decorator.d.ts} +0 -0
  15. package/dist/decorators/{necord-params.decorator.js → params.decorator.js} +0 -0
  16. package/dist/index.d.ts +0 -1
  17. package/dist/index.js +0 -1
  18. package/dist/interfaces/command-metadata.interface.d.ts +5 -2
  19. package/dist/interfaces/component-metadata.interface.d.ts +1 -2
  20. package/dist/interfaces/index.d.ts +0 -1
  21. package/dist/interfaces/index.js +0 -1
  22. package/dist/interfaces/listener-metadata.interface.d.ts +2 -3
  23. package/dist/necord-client.d.ts +2 -4
  24. package/dist/necord-client.js +12 -13
  25. package/dist/necord.constants.d.ts +1 -0
  26. package/dist/necord.constants.js +2 -1
  27. package/dist/necord.module.js +15 -11
  28. package/dist/services/commands.service.d.ts +16 -0
  29. package/dist/services/{commands-explorer.service.js → commands.service.js} +25 -34
  30. package/dist/services/components.service.d.ts +13 -0
  31. package/dist/services/components.service.js +41 -0
  32. package/dist/services/explorer.service.d.ts +17 -0
  33. package/dist/services/explorer.service.js +54 -0
  34. package/dist/services/index.d.ts +4 -3
  35. package/dist/services/index.js +4 -3
  36. package/dist/services/listeners.service.d.ts +12 -0
  37. package/dist/services/listeners.service.js +47 -0
  38. package/dist/test/app.commands.d.ts +5 -9
  39. package/dist/test/app.commands.js +34 -107
  40. package/dist/test/app.module.js +3 -3
  41. package/dist/test/dtos/length.dto.d.ts +3 -0
  42. package/dist/test/dtos/length.dto.js +24 -0
  43. package/dist/utils/create-necord-listeners.util.d.ts +2 -1
  44. package/dist/utils/create-necord-listeners.util.js +2 -2
  45. package/package.json +36 -40
  46. package/dist/interfaces/method-metadata.interface.d.ts +0 -5
  47. package/dist/interfaces/method-metadata.interface.js +0 -2
  48. package/dist/providers/application-commands.provider.d.ts +0 -4
  49. package/dist/providers/application-commands.provider.js +0 -8
  50. package/dist/providers/index.d.ts +0 -3
  51. package/dist/providers/index.js +0 -15
  52. package/dist/providers/message-components.provider.d.ts +0 -4
  53. package/dist/providers/message-components.provider.js +0 -9
  54. package/dist/providers/module-options.provider.d.ts +0 -4
  55. package/dist/providers/module-options.provider.js +0 -9
  56. package/dist/services/base-explorer.service.d.ts +0 -15
  57. package/dist/services/base-explorer.service.js +0 -35
  58. package/dist/services/commands-explorer.service.d.ts +0 -19
  59. package/dist/services/components-explorer.service.d.ts +0 -16
  60. package/dist/services/components-explorer.service.js +0 -57
  61. package/dist/services/listeners-explorer.service.d.ts +0 -16
  62. package/dist/services/listeners-explorer.service.js +0 -54
  63. package/dist/test/dtos/register.dto.d.ts +0 -7
  64. package/dist/test/dtos/register.dto.js +0 -52
package/README.md CHANGED
@@ -27,7 +27,7 @@ This module provides fast and easy way for creating Discord bots and deep integr
27
27
 
28
28
  ## Getting started
29
29
 
30
- If you want to dive fully into Necord check out the [documentation site](https://necord.miko.bot).
30
+ If you want to dive fully into Necord check out the [documentation site](https://github.com/SocketSomeone/necord/wiki).
31
31
 
32
32
  ## Questions
33
33
 
@@ -37,7 +37,7 @@ exclusively for bug reports and feature requests.
37
37
  ## Stay in touch
38
38
 
39
39
  * Author - [Alexey Filippov](https://t.me/socketsomeone)
40
- * Documentation - https://necord.miko.bot
40
+ * Documentation - https://github.com/SocketSomeone/necord/wiki
41
41
  * Twitter - [@SocketSomeone](https://twitter.com/SocketSomeone)
42
42
 
43
43
  ## License
@@ -1,6 +1,6 @@
1
- export * from './necord-commands.decorator';
2
- export * from './necord-components.decorator';
3
- export * from './necord-groups.decorator';
4
- export * from './necord-listeners.decorator';
5
- export * from './necord-options.decorator';
6
- export * from './necord-params.decorator';
1
+ export * from './commands.decorator';
2
+ export * from './components.decorator';
3
+ export * from './groups.decorator';
4
+ export * from './listeners.decorator';
5
+ export * from './options.decorator';
6
+ export * from './params.decorator';
@@ -10,9 +10,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./necord-commands.decorator"), exports);
14
- __exportStar(require("./necord-components.decorator"), exports);
15
- __exportStar(require("./necord-groups.decorator"), exports);
16
- __exportStar(require("./necord-listeners.decorator"), exports);
17
- __exportStar(require("./necord-options.decorator"), exports);
18
- __exportStar(require("./necord-params.decorator"), exports);
13
+ __exportStar(require("./commands.decorator"), exports);
14
+ __exportStar(require("./components.decorator"), exports);
15
+ __exportStar(require("./groups.decorator"), exports);
16
+ __exportStar(require("./listeners.decorator"), exports);
17
+ __exportStar(require("./options.decorator"), exports);
18
+ __exportStar(require("./params.decorator"), exports);
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Once = exports.On = void 0;
4
4
  const utils_1 = require("../utils");
5
- exports.On = (0, utils_1.createNecordListenerDecorator)(false);
6
- exports.Once = (0, utils_1.createNecordListenerDecorator)(true);
5
+ exports.On = (0, utils_1.createNecordListenerDecorator)('on');
6
+ exports.Once = (0, utils_1.createNecordListenerDecorator)('once');
package/dist/index.d.ts CHANGED
@@ -2,5 +2,4 @@ export * from './necord.module';
2
2
  export * from './necord-client';
3
3
  export * from './context';
4
4
  export * from './decorators';
5
- export * from './providers';
6
5
  export * from './services';
package/dist/index.js CHANGED
@@ -14,5 +14,4 @@ __exportStar(require("./necord.module"), exports);
14
14
  __exportStar(require("./necord-client"), exports);
15
15
  __exportStar(require("./context"), exports);
16
16
  __exportStar(require("./decorators"), exports);
17
- __exportStar(require("./providers"), exports);
18
17
  __exportStar(require("./services"), exports);
@@ -1,3 +1,6 @@
1
1
  import { ApplicationCommandData } from 'discord.js';
2
- import { MethodMetadata } from './method-metadata.interface';
3
- export declare type ApplicationCommandMetadata = ApplicationCommandData & MethodMetadata;
2
+ export declare type ApplicationCommandMetadata = ApplicationCommandData & {
3
+ instance?: Record<string, any>;
4
+ prototype?: object;
5
+ method?: string;
6
+ };
@@ -1,6 +1,5 @@
1
1
  import { MessageComponentTypes } from 'discord.js/typings/enums';
2
- import { MethodMetadata } from './method-metadata.interface';
3
- export interface ComponentMetadata extends MethodMetadata {
2
+ export interface ComponentMetadata {
4
3
  type: MessageComponentTypes;
5
4
  customId: string;
6
5
  }
@@ -1,6 +1,5 @@
1
1
  export * from './command-metadata.interface';
2
2
  export * from './component-metadata.interface';
3
3
  export * from './listener-metadata.interface';
4
- export * from './method-metadata.interface';
5
4
  export * from './module-options.interface';
6
5
  export * from './option-metadata.interface';
@@ -13,6 +13,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./command-metadata.interface"), exports);
14
14
  __exportStar(require("./component-metadata.interface"), exports);
15
15
  __exportStar(require("./listener-metadata.interface"), exports);
16
- __exportStar(require("./method-metadata.interface"), exports);
17
16
  __exportStar(require("./module-options.interface"), exports);
18
17
  __exportStar(require("./option-metadata.interface"), exports);
@@ -1,6 +1,5 @@
1
1
  import { ClientEvents } from 'discord.js';
2
- import { MethodMetadata } from './method-metadata.interface';
3
- export interface ListenerMetadata<U extends keyof ClientEvents = keyof ClientEvents> extends MethodMetadata {
2
+ export interface ListenerMetadata<U extends keyof ClientEvents = keyof ClientEvents> {
4
3
  event: U;
5
- once: boolean;
4
+ type: 'once' | 'on';
6
5
  }
@@ -1,12 +1,10 @@
1
1
  import { OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
2
2
  import { NecordModuleOptions } from './interfaces';
3
- import { ApplicationCommandData, BaseMessageComponent, Client } from 'discord.js';
3
+ import { Client } from 'discord.js';
4
4
  export declare class NecordClient extends Client implements OnApplicationBootstrap, OnApplicationShutdown {
5
5
  readonly options: NecordModuleOptions;
6
- readonly applicationCommands: ApplicationCommandData[];
7
- readonly messageComponents: BaseMessageComponent[];
8
6
  private readonly logger;
9
- constructor(options: NecordModuleOptions, applicationCommands: ApplicationCommandData[], messageComponents: BaseMessageComponent[]);
7
+ constructor(options: NecordModuleOptions);
10
8
  onApplicationBootstrap: any;
11
9
  onApplicationShutdown: any;
12
10
  private onReadyRegistration;
@@ -25,14 +25,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.NecordClient = void 0;
26
26
  const common_1 = require("@nestjs/common");
27
27
  const discord_js_1 = require("discord.js");
28
- const providers_1 = require("./providers");
29
28
  const decorators_1 = require("./decorators");
29
+ const necord_constants_1 = require("./necord.constants");
30
30
  let NecordClient = NecordClient_1 = class NecordClient extends discord_js_1.Client {
31
- constructor(options, applicationCommands, messageComponents) {
31
+ constructor(options) {
32
32
  super(options);
33
33
  this.options = options;
34
- this.applicationCommands = applicationCommands;
35
- this.messageComponents = messageComponents;
36
34
  this.logger = new common_1.Logger(NecordClient_1.name);
37
35
  this.onApplicationBootstrap = this.login.bind(this, this.options.token);
38
36
  this.onApplicationShutdown = this.destroy.bind(this);
@@ -45,11 +43,14 @@ let NecordClient = NecordClient_1 = class NecordClient extends discord_js_1.Clie
45
43
  if (this.application.partial) {
46
44
  yield this.application.fetch();
47
45
  }
48
- this.logger.log(`Started refreshing application commands.`);
49
- yield this.application.commands.set(this.applicationCommands, typeof this.options.registerApplicationCommands === 'string'
50
- ? this.options.registerApplicationCommands
51
- : undefined);
52
- this.logger.log(`Successfully reloaded application commands.`);
46
+ // this.logger.log(`Started refreshing application commands.`);
47
+ // await this.application.commands.set(
48
+ // this.applicationCommands,
49
+ // typeof this.options.registerApplicationCommands === 'string'
50
+ // ? this.options.registerApplicationCommands
51
+ // : undefined
52
+ // );
53
+ // this.logger.log(`Successfully reloaded application commands.`);
53
54
  });
54
55
  }
55
56
  };
@@ -61,9 +62,7 @@ __decorate([
61
62
  ], NecordClient.prototype, "onReadyRegistration", null);
62
63
  NecordClient = NecordClient_1 = __decorate([
63
64
  (0, common_1.Injectable)(),
64
- __param(0, (0, common_1.Inject)(providers_1.MODULE_OPTIONS)),
65
- __param(1, (0, common_1.Inject)(providers_1.APPLICATION_COMMANDS)),
66
- __param(2, (0, common_1.Inject)(providers_1.MESSAGE_COMPONENTS)),
67
- __metadata("design:paramtypes", [Object, Array, Array])
65
+ __param(0, (0, common_1.Inject)(necord_constants_1.MODULE_OPTIONS)),
66
+ __metadata("design:paramtypes", [Object])
68
67
  ], NecordClient);
69
68
  exports.NecordClient = NecordClient;
@@ -1,3 +1,4 @@
1
+ export declare const MODULE_OPTIONS = "necord:module_options";
1
2
  export declare const PARAM_ARGS_METADATA = "__routeArguments__";
2
3
  export declare const APPLICATION_COMMAND_METADATA = "necord:application_command_meta";
3
4
  export declare const MESSAGE_COMPONENT_METADATA = "necord:message_component_meta";
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OPTIONS_METADATA = exports.SUBGROUP_METADATA = exports.GROUP_METADATA = exports.LISTENERS_METADATA = exports.MESSAGE_COMPONENT_METADATA = exports.APPLICATION_COMMAND_METADATA = exports.PARAM_ARGS_METADATA = void 0;
3
+ exports.OPTIONS_METADATA = exports.SUBGROUP_METADATA = exports.GROUP_METADATA = exports.LISTENERS_METADATA = exports.MESSAGE_COMPONENT_METADATA = exports.APPLICATION_COMMAND_METADATA = exports.PARAM_ARGS_METADATA = exports.MODULE_OPTIONS = void 0;
4
4
  const constants_1 = require("@nestjs/common/constants");
5
+ exports.MODULE_OPTIONS = 'necord:module_options';
5
6
  exports.PARAM_ARGS_METADATA = constants_1.ROUTE_ARGS_METADATA;
6
7
  exports.APPLICATION_COMMAND_METADATA = 'necord:application_command_meta';
7
8
  exports.MESSAGE_COMPONENT_METADATA = 'necord:message_component_meta';
@@ -20,13 +20,18 @@ exports.NecordModule = void 0;
20
20
  const common_1 = require("@nestjs/common");
21
21
  const core_1 = require("@nestjs/core");
22
22
  const necord_client_1 = require("./necord-client");
23
+ const necord_constants_1 = require("./necord.constants");
23
24
  const services_1 = require("./services");
24
- const providers_1 = require("./providers");
25
25
  let NecordModule = NecordModule_1 = class NecordModule {
26
26
  static forRoot(options) {
27
27
  return {
28
28
  module: NecordModule_1,
29
- providers: [(0, providers_1.createNecordModuleOptionsProvider)(options)]
29
+ providers: [
30
+ {
31
+ provide: necord_constants_1.MODULE_OPTIONS,
32
+ useValue: options
33
+ }
34
+ ]
30
35
  };
31
36
  }
32
37
  static forRootAsync(options) {
@@ -51,13 +56,13 @@ let NecordModule = NecordModule_1 = class NecordModule {
51
56
  static createAsyncOptionsProvider(options) {
52
57
  if (options.useFactory) {
53
58
  return {
54
- provide: providers_1.MODULE_OPTIONS,
59
+ provide: necord_constants_1.MODULE_OPTIONS,
55
60
  useFactory: (...args) => __awaiter(this, void 0, void 0, function* () { return yield options.useFactory(...args); }),
56
61
  inject: options.inject || []
57
62
  };
58
63
  }
59
64
  return {
60
- provide: providers_1.MODULE_OPTIONS,
65
+ provide: necord_constants_1.MODULE_OPTIONS,
61
66
  useFactory: (optionsFactory) => __awaiter(this, void 0, void 0, function* () { return yield optionsFactory.createNecordOptions(); }),
62
67
  inject: [options.useExisting || options.useClass]
63
68
  };
@@ -67,15 +72,14 @@ NecordModule = NecordModule_1 = __decorate([
67
72
  (0, common_1.Module)({
68
73
  imports: [core_1.DiscoveryModule],
69
74
  providers: [
75
+ services_1.CommandsService,
76
+ services_1.ComponentsService,
77
+ services_1.ListenersService,
78
+ services_1.ExplorerService,
70
79
  services_1.MetadataAccessorService,
71
- services_1.CommandsExplorerService,
72
- services_1.ComponentsExplorerService,
73
- services_1.ListenersExplorerService,
74
- necord_client_1.NecordClient,
75
- providers_1.applicationCommandsProvider,
76
- providers_1.messageComponentsProvider
80
+ necord_client_1.NecordClient
77
81
  ],
78
- exports: [necord_client_1.NecordClient, providers_1.applicationCommandsProvider, providers_1.messageComponentsProvider]
82
+ exports: [necord_client_1.NecordClient]
79
83
  })
80
84
  ], NecordModule);
81
85
  exports.NecordModule = NecordModule;
@@ -0,0 +1,16 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { ExplorerService } from './explorer.service';
3
+ import { ApplicationCommandMetadata } from '../interfaces';
4
+ import { MetadataAccessorService } from './metadata-accessor.service';
5
+ import { NecordClient } from '../necord-client';
6
+ export declare class CommandsService implements OnModuleInit {
7
+ private readonly explorerService;
8
+ private readonly metadataAccessor;
9
+ private readonly client;
10
+ private readonly commands;
11
+ constructor(explorerService: ExplorerService<ApplicationCommandMetadata>, metadataAccessor: MetadataAccessorService, client: NecordClient);
12
+ onModuleInit(): void;
13
+ private registerContextMenuHandler;
14
+ private registerSlashCommandHandler;
15
+ private static getCommandKey;
16
+ }
@@ -28,26 +28,22 @@ var __rest = (this && this.__rest) || function (s, e) {
28
28
  }
29
29
  return t;
30
30
  };
31
- var CommandsExplorerService_1;
31
+ var CommandsService_1;
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.CommandsExplorerService = void 0;
33
+ exports.CommandsService = void 0;
34
34
  const common_1 = require("@nestjs/common");
35
- const base_explorer_service_1 = require("./base-explorer.service");
36
- const external_context_creator_1 = require("@nestjs/core/helpers/external-context-creator");
37
- const core_1 = require("@nestjs/core");
35
+ const explorer_service_1 = require("./explorer.service");
38
36
  const metadata_accessor_service_1 = require("./metadata-accessor.service");
39
37
  const necord_client_1 = require("../necord-client");
40
- let CommandsExplorerService = CommandsExplorerService_1 = class CommandsExplorerService extends base_explorer_service_1.BaseExplorerService {
41
- constructor(externalContextCreator, discoveryService, metadataScanner, metadataAccessor, client) {
42
- super(externalContextCreator, discoveryService);
43
- this.externalContextCreator = externalContextCreator;
44
- this.discoveryService = discoveryService;
45
- this.metadataScanner = metadataScanner;
38
+ let CommandsService = CommandsService_1 = class CommandsService {
39
+ constructor(explorerService, metadataAccessor, client) {
40
+ this.explorerService = explorerService;
46
41
  this.metadataAccessor = metadataAccessor;
47
42
  this.client = client;
43
+ this.commands = [];
48
44
  }
49
- filter(instance, prototype) {
50
- return this.metadataScanner.scanFromPrototype(instance, prototype, method => {
45
+ onModuleInit() {
46
+ const commands = this.explorerService.explore((instance, prototype, method) => {
51
47
  const command = this.metadataAccessor.getApplicationCommandMetadata(instance, method);
52
48
  if (!command)
53
49
  return;
@@ -55,33 +51,30 @@ let CommandsExplorerService = CommandsExplorerService_1 = class CommandsExplorer
55
51
  prototype,
56
52
  method });
57
53
  });
58
- }
59
- register(applicationCommands) {
60
- for (let _a of applicationCommands) {
54
+ for (let _a of commands) {
61
55
  const { instance, prototype, method } = _a, command = __rest(_a, ["instance", "prototype", "method"]);
62
56
  const options = this.metadataAccessor.getOptionsMetadata(instance, method);
63
- const execute = this.createContextCallback(instance, prototype, method);
64
57
  let group = this.metadataAccessor.getCommandGroupMetadata(instance, method);
65
58
  let subGroup = this.metadataAccessor.getCommandSubGroupMetadata(instance, method);
66
59
  if (command.type !== 1 /* CHAT_INPUT */) {
67
- this.client.applicationCommands.push(command);
68
- this.registerContextMenuHandler(command, execute);
69
- continue;
60
+ this.commands.push(command);
61
+ this.registerContextMenuHandler(command, command.execute);
62
+ return;
70
63
  }
71
64
  else if (!group && subGroup) {
72
65
  subGroup = undefined;
73
66
  }
74
67
  command.options = Object.values(options);
75
- this.registerSlashCommandHandler(group === null || group === void 0 ? void 0 : group.name, subGroup === null || subGroup === void 0 ? void 0 : subGroup.name, command, options, execute);
68
+ this.registerSlashCommandHandler(group === null || group === void 0 ? void 0 : group.name, subGroup === null || subGroup === void 0 ? void 0 : subGroup.name, command, options, command.execute);
76
69
  if (!group && !subGroup) {
77
- this.client.applicationCommands.push(command);
78
- continue;
70
+ this.commands.push(command);
71
+ return;
79
72
  }
80
- const cachedGroup = this.client.applicationCommands.find(c => c.type === 1 /* CHAT_INPUT */ && c.name === group.name);
73
+ const cachedGroup = this.commands.find(c => c.type === 1 /* CHAT_INPUT */ && c.name === group.name);
81
74
  group = cachedGroup !== null && cachedGroup !== void 0 ? cachedGroup : group;
82
75
  if (!subGroup) {
83
76
  group.options.push(command);
84
- continue;
77
+ return;
85
78
  }
86
79
  else {
87
80
  const cachedSubGroup = group.options.find(s => s.type === 2 /* SUB_COMMAND_GROUP */ && s.name === (subGroup === null || subGroup === void 0 ? void 0 : subGroup.name));
@@ -89,7 +82,7 @@ let CommandsExplorerService = CommandsExplorerService_1 = class CommandsExplorer
89
82
  subGroup.options.push(command);
90
83
  !cachedSubGroup && group.options.push(subGroup);
91
84
  }
92
- !cachedGroup && this.client.applicationCommands.push(group);
85
+ !cachedGroup && this.commands.push(group);
93
86
  }
94
87
  }
95
88
  registerContextMenuHandler(command, execute) {
@@ -110,8 +103,8 @@ let CommandsExplorerService = CommandsExplorerService_1 = class CommandsExplorer
110
103
  const rootCommand = interaction.commandName;
111
104
  const groupCommand = interaction.options.getSubcommandGroup(false);
112
105
  const subCommandGroup = interaction.options.getSubcommand(false);
113
- if (CommandsExplorerService_1.getCommandKey(rootCommand, groupCommand, subCommandGroup) !==
114
- CommandsExplorerService_1.getCommandKey(group, subGroup, command.name))
106
+ if (CommandsService_1.getCommandKey(rootCommand, groupCommand, subCommandGroup) !==
107
+ CommandsService_1.getCommandKey(group, subGroup, command.name))
115
108
  return;
116
109
  const DTO = Object.entries(options).reduce((prev, [parameter, option]) => {
117
110
  const resolve = interaction.options[option.methodName];
@@ -137,12 +130,10 @@ let CommandsExplorerService = CommandsExplorerService_1 = class CommandsExplorer
137
130
  return commandKey;
138
131
  }
139
132
  };
140
- CommandsExplorerService = CommandsExplorerService_1 = __decorate([
133
+ CommandsService = CommandsService_1 = __decorate([
141
134
  (0, common_1.Injectable)(),
142
- __metadata("design:paramtypes", [external_context_creator_1.ExternalContextCreator,
143
- core_1.DiscoveryService,
144
- core_1.MetadataScanner,
135
+ __metadata("design:paramtypes", [explorer_service_1.ExplorerService,
145
136
  metadata_accessor_service_1.MetadataAccessorService,
146
137
  necord_client_1.NecordClient])
147
- ], CommandsExplorerService);
148
- exports.CommandsExplorerService = CommandsExplorerService;
138
+ ], CommandsService);
139
+ exports.CommandsService = CommandsService;
@@ -0,0 +1,13 @@
1
+ import { ExplorerService } from './explorer.service';
2
+ import { OnModuleInit } from '@nestjs/common';
3
+ import { MetadataAccessorService } from './metadata-accessor.service';
4
+ import { NecordClient } from '../necord-client';
5
+ import { ComponentMetadata } from '../interfaces';
6
+ export declare class ComponentsService implements OnModuleInit {
7
+ private readonly explorerService;
8
+ private readonly metadataAccessor;
9
+ private readonly client;
10
+ private readonly components;
11
+ constructor(explorerService: ExplorerService<ComponentMetadata>, metadataAccessor: MetadataAccessorService, client: NecordClient);
12
+ onModuleInit(): void;
13
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ComponentsService = void 0;
13
+ const explorer_service_1 = require("./explorer.service");
14
+ const common_1 = require("@nestjs/common");
15
+ const metadata_accessor_service_1 = require("./metadata-accessor.service");
16
+ const necord_client_1 = require("../necord-client");
17
+ const discord_js_1 = require("discord.js");
18
+ let ComponentsService = class ComponentsService {
19
+ constructor(explorerService, metadataAccessor, client) {
20
+ this.explorerService = explorerService;
21
+ this.metadataAccessor = metadataAccessor;
22
+ this.client = client;
23
+ this.components = new Map();
24
+ }
25
+ onModuleInit() {
26
+ const components = this.explorerService.explore((instance, prototype, method) => this.metadataAccessor.getMessageComponentMetadata(instance, method));
27
+ for (const component of components) {
28
+ this.client.on('interactionCreate', interaction => interaction.isMessageComponent() &&
29
+ interaction.componentType === discord_js_1.MessageComponentInteraction.resolveType(component.type) &&
30
+ interaction.customId === component.customId &&
31
+ component.execute(interaction));
32
+ }
33
+ }
34
+ };
35
+ ComponentsService = __decorate([
36
+ (0, common_1.Injectable)(),
37
+ __metadata("design:paramtypes", [explorer_service_1.ExplorerService,
38
+ metadata_accessor_service_1.MetadataAccessorService,
39
+ necord_client_1.NecordClient])
40
+ ], ComponentsService);
41
+ exports.ComponentsService = ComponentsService;
@@ -0,0 +1,17 @@
1
+ import { ExternalContextCreator } from '@nestjs/core/helpers/external-context-creator';
2
+ import { DiscoveryService, MetadataScanner } from '@nestjs/core';
3
+ declare type ExploreReturn<T> = T & {
4
+ execute: (...args: any[]) => any;
5
+ };
6
+ declare type ExploreFilter<T> = (instance: Record<string, any>, prototype: object, name: string) => T;
7
+ export declare class ExplorerService<T> {
8
+ private readonly discoveryService;
9
+ private readonly externalContextCreator;
10
+ private readonly metadataScanner;
11
+ private readonly necordParamsFactory;
12
+ private readonly wrappers;
13
+ constructor(discoveryService: DiscoveryService, externalContextCreator: ExternalContextCreator, metadataScanner: MetadataScanner);
14
+ explore(filter: ExploreFilter<T>): ExploreReturn<T>[];
15
+ protected createContextCallback<T extends Record<string, any>>(instance: T, prototype: any, methodName: string): (...args: any[]) => Promise<any>;
16
+ }
17
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ExplorerService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const context_1 = require("../context");
15
+ const necord_constants_1 = require("../necord.constants");
16
+ const external_context_creator_1 = require("@nestjs/core/helpers/external-context-creator");
17
+ const core_1 = require("@nestjs/core");
18
+ let ExplorerService = class ExplorerService {
19
+ constructor(discoveryService, externalContextCreator, metadataScanner) {
20
+ this.discoveryService = discoveryService;
21
+ this.externalContextCreator = externalContextCreator;
22
+ this.metadataScanner = metadataScanner;
23
+ this.necordParamsFactory = new context_1.NecordParamsFactory();
24
+ this.wrappers = this.discoveryService
25
+ .getProviders()
26
+ .filter(wrapper => wrapper.isDependencyTreeStatic());
27
+ }
28
+ explore(filter) {
29
+ return this.wrappers.reduce((acc, { instance }) => {
30
+ const prototype = instance ? Object.getPrototypeOf(instance) : null;
31
+ if (!instance || !prototype) {
32
+ return acc;
33
+ }
34
+ this.metadataScanner.scanFromPrototype(instance, prototype, name => {
35
+ const filtered = filter(instance, prototype, name);
36
+ filtered &&
37
+ acc.push(Object.assign(filtered, {
38
+ execute: this.createContextCallback(instance, prototype, name)
39
+ }));
40
+ });
41
+ return acc;
42
+ }, []);
43
+ }
44
+ createContextCallback(instance, prototype, methodName) {
45
+ return this.externalContextCreator.create(instance, prototype[methodName], methodName, necord_constants_1.PARAM_ARGS_METADATA, this.necordParamsFactory, undefined, undefined, { guards: true, filters: true, interceptors: true }, 'necord');
46
+ }
47
+ };
48
+ ExplorerService = __decorate([
49
+ (0, common_1.Injectable)(),
50
+ __metadata("design:paramtypes", [core_1.DiscoveryService,
51
+ external_context_creator_1.ExternalContextCreator,
52
+ core_1.MetadataScanner])
53
+ ], ExplorerService);
54
+ exports.ExplorerService = ExplorerService;
@@ -1,4 +1,5 @@
1
- export * from './commands-explorer.service';
2
- export * from './components-explorer.service';
3
- export * from './listeners-explorer.service';
1
+ export * from './commands.service';
2
+ export * from './components.service';
3
+ export * from './explorer.service';
4
+ export * from './listeners.service';
4
5
  export * from './metadata-accessor.service';
@@ -10,7 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./commands-explorer.service"), exports);
14
- __exportStar(require("./components-explorer.service"), exports);
15
- __exportStar(require("./listeners-explorer.service"), exports);
13
+ __exportStar(require("./commands.service"), exports);
14
+ __exportStar(require("./components.service"), exports);
15
+ __exportStar(require("./explorer.service"), exports);
16
+ __exportStar(require("./listeners.service"), exports);
16
17
  __exportStar(require("./metadata-accessor.service"), exports);
@@ -0,0 +1,12 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { ListenerMetadata } from '../interfaces';
3
+ import { MetadataAccessorService } from './metadata-accessor.service';
4
+ import { NecordClient } from '../necord-client';
5
+ import { ExplorerService } from './explorer.service';
6
+ export declare class ListenersService implements OnModuleInit {
7
+ private readonly explorerService;
8
+ private readonly metadataAccessor;
9
+ private readonly client;
10
+ constructor(explorerService: ExplorerService<ListenerMetadata>, metadataAccessor: MetadataAccessorService, client: NecordClient);
11
+ onModuleInit(): Promise<void>;
12
+ }