UNPKG

@djs-nest/core

Version:

Djs Nest Core Module provides functionality for handling discord events

291 lines (280 loc) 9.44 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { DjsClient: () => DjsClient, DjsClientProvider: () => DjsClientProvider, DjsCoreModule: () => DjsCoreModule, EventsService: () => EventsService, Listener: () => Listener, On: () => On, Once: () => Once }); module.exports = __toCommonJS(src_exports); // src/djs.service.ts var import_core = require("@discordjs/core"); var import_rest = require("@discordjs/rest"); var import_ws = require("@discordjs/ws"); var import_common = require("@nestjs/common"); var __decorate = function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var DjsService = /* @__PURE__ */ __name(class DjsService2 { constructor(rest, ws) { this.ws = ws; this.logger = new import_common.Logger(DjsService2.name); this._client = new import_core.Client({ rest, ws }); this.ws.on(import_ws.WebSocketShardEvents.Closed, ({ code }) => { this.logger.log(`WebSocket Closed with ${code} code`); }); this.ws.on(import_ws.WebSocketShardEvents.Resumed, () => { this.logger.log("WebSocket Resumed"); }); } get client() { return this._client; } async onApplicationBootstrap() { try { await this.ws.connect(); } catch (error) { this.logger.error("Failed to connect websocket", error); } } onApplicationShutdown() { this.ws.destroy(); } }, "DjsService"); DjsService = __decorate([ (0, import_common.Injectable)(), __metadata("design:type", Function), __metadata("design:paramtypes", [ typeof import_rest.REST === "undefined" ? Object : import_rest.REST, typeof import_ws.WebSocketManager === "undefined" ? Object : import_ws.WebSocketManager ]) ], DjsService); // src/client/djs-client.ts var import_async_event_emitter = require("@vladfrangu/async_event_emitter"); var DjsClient = class extends import_async_event_emitter.AsyncEventEmitter { }; __name(DjsClient, "DjsClient"); // src/client/djs-client.provider.ts var DjsClientProvider = { provide: DjsClient, useFactory: (djsService) => { return djsService.client; }, inject: [ DjsService ] }; // src/events/decorators/listener.decorator.ts var import_common2 = require("@djs-nest/common"); var import_common3 = require("@nestjs/common"); var Listener = /* @__PURE__ */ __name((options) => (0, import_common3.SetMetadata)(import_common2.DJS_EVENTS_METADATA, new import_common2.EventsDiscovery(options)), "Listener"); // src/events/decorators/on.decorator.ts var On = /* @__PURE__ */ __name((event) => Listener({ type: "on", event }), "On"); // src/events/decorators/once.decorator.ts var Once = /* @__PURE__ */ __name((event) => Listener({ type: "once", event }), "Once"); // src/events/events.service.ts var import_common4 = require("@djs-nest/common"); var import_common5 = require("@nestjs/common"); var __decorate2 = function(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata2 = function(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var EventsService = /* @__PURE__ */ __name(class EventsService2 { constructor(djsService, explorerService) { this.djsService = djsService; this.explorerService = explorerService; this.logger = new import_common5.Logger(EventsService2.name); } onModuleInit() { return this.explorerService.explore(import_common4.DJS_EVENTS_METADATA).forEach((event) => { this.logger.log(`Subscribe to event(${event.getType()}): ${event.getEvent()}`); this.djsService.client[event.getType()](event.getEvent(), (...args) => { event.execute([ args[0].data, { api: args[0].api, shardId: args[0].shardId } ]); }); }); } }, "EventsService"); EventsService = __decorate2([ (0, import_common5.Injectable)(), __metadata2("design:type", Function), __metadata2("design:paramtypes", [ typeof DjsService === "undefined" ? Object : DjsService, typeof import_common4.ExplorerService === "undefined" ? Object : import_common4.ExplorerService ]) ], EventsService); // src/djs-core.module.ts var import_common7 = require("@djs-nest/common"); var import_rest3 = require("@djs-nest/rest"); // src/ws/djs-ws.provider.ts var import_rest2 = require("@discordjs/rest"); var import_ws2 = require("@discordjs/ws"); var import_common6 = require("@djs-nest/common"); var DjsWsProvider = { provide: import_ws2.WebSocketManager, useFactory: (rest, options) => new import_ws2.WebSocketManager({ rest, token: options.token, intents: options.intents, ...options.ws }), inject: [ import_rest2.REST, import_common6.DJS_CORE_MODULE_OPTIONS ] }; // src/djs-core.module.ts var CoreModuleProperties = { imports: [ import_common7.DjsCommonModule, import_rest3.DjsRestModule.deferred() ], providers: [ DjsService, DjsClientProvider, DjsWsProvider, EventsService ], exports: [ DjsClientProvider, DjsWsProvider ] }; var DjsCoreModule = class extends (0, import_common7.createConfigurableDynamicRootModule)() { static forRootAsync(asyncModuleConfig) { const dynamicModule = { module: DjsCoreModule, imports: [ ...CoreModuleProperties.imports, import_rest3.DjsRestModule.forRootAsync(asyncModuleConfig) ], exports: CoreModuleProperties.exports, providers: [ ...(0, import_common7.createModuleConfigProvider)(import_common7.DJS_CORE_MODULE_OPTIONS, asyncModuleConfig), ...CoreModuleProperties.providers ] }; DjsCoreModule.moduleSubject.next(dynamicModule); return dynamicModule; } static forRoot(moduleConfig) { const dynamicModule = { module: DjsCoreModule, imports: [ ...CoreModuleProperties.imports, import_rest3.DjsRestModule.forRoot(moduleConfig) ], exports: CoreModuleProperties.exports, providers: [ { provide: import_common7.DJS_CORE_MODULE_OPTIONS, useValue: moduleConfig }, ...CoreModuleProperties.providers ] }; DjsCoreModule.moduleSubject.next(dynamicModule); return dynamicModule; } static forExistingRestAsync(asyncModuleConfig) { const dynamicModule = { module: DjsCoreModule, imports: [ ...CoreModuleProperties.imports ], exports: CoreModuleProperties.exports, providers: [ ...(0, import_common7.createModuleConfigProvider)(import_common7.DJS_CORE_MODULE_OPTIONS, asyncModuleConfig), ...CoreModuleProperties.providers ] }; DjsCoreModule.moduleSubject.next(dynamicModule); return dynamicModule; } static forExistingRest(moduleConfig) { const dynamicModule = { module: DjsCoreModule, imports: [ ...CoreModuleProperties.imports ], exports: CoreModuleProperties.exports, providers: [ { provide: import_common7.DJS_CORE_MODULE_OPTIONS, useValue: moduleConfig }, ...CoreModuleProperties.providers ] }; DjsCoreModule.moduleSubject.next(dynamicModule); return dynamicModule; } }; __name(DjsCoreModule, "DjsCoreModule"); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { DjsClient, DjsClientProvider, DjsCoreModule, EventsService, Listener, On, Once }); //# sourceMappingURL=index.js.map