@djs-nest/core
Version:
Djs Nest Core Module provides functionality for handling discord events
261 lines (251 loc) • 8.09 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/djs.service.ts
import { Client } from "@discordjs/core";
import { REST } from "@discordjs/rest";
import { WebSocketManager, WebSocketShardEvents } from "@discordjs/ws";
import { Injectable, Logger } from "@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 Logger(DjsService2.name);
this._client = new Client({
rest,
ws
});
this.ws.on(WebSocketShardEvents.Closed, ({ code }) => {
this.logger.log(`WebSocket Closed with ${code} code`);
});
this.ws.on(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([
Injectable(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [
typeof REST === "undefined" ? Object : REST,
typeof WebSocketManager === "undefined" ? Object : WebSocketManager
])
], DjsService);
// src/client/djs-client.ts
import { AsyncEventEmitter } from "@vladfrangu/async_event_emitter";
var DjsClient = class extends 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
import { DJS_EVENTS_METADATA, EventsDiscovery } from "@djs-nest/common";
import { SetMetadata } from "@nestjs/common";
var Listener = /* @__PURE__ */ __name((options) => SetMetadata(DJS_EVENTS_METADATA, new 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
import { DJS_EVENTS_METADATA as DJS_EVENTS_METADATA2, ExplorerService } from "@djs-nest/common";
import { Injectable as Injectable2, Logger as Logger2 } from "@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 Logger2(EventsService2.name);
}
onModuleInit() {
return this.explorerService.explore(DJS_EVENTS_METADATA2).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([
Injectable2(),
__metadata2("design:type", Function),
__metadata2("design:paramtypes", [
typeof DjsService === "undefined" ? Object : DjsService,
typeof ExplorerService === "undefined" ? Object : ExplorerService
])
], EventsService);
// src/djs-core.module.ts
import { createConfigurableDynamicRootModule, createModuleConfigProvider, DJS_CORE_MODULE_OPTIONS as DJS_CORE_MODULE_OPTIONS2, DjsCommonModule } from "@djs-nest/common";
import { DjsRestModule } from "@djs-nest/rest";
// src/ws/djs-ws.provider.ts
import { REST as REST2 } from "@discordjs/rest";
import { WebSocketManager as WebSocketManager2 } from "@discordjs/ws";
import { DJS_CORE_MODULE_OPTIONS } from "@djs-nest/common";
var DjsWsProvider = {
provide: WebSocketManager2,
useFactory: (rest, options) => new WebSocketManager2({
rest,
token: options.token,
intents: options.intents,
...options.ws
}),
inject: [
REST2,
DJS_CORE_MODULE_OPTIONS
]
};
// src/djs-core.module.ts
var CoreModuleProperties = {
imports: [
DjsCommonModule,
DjsRestModule.deferred()
],
providers: [
DjsService,
DjsClientProvider,
DjsWsProvider,
EventsService
],
exports: [
DjsClientProvider,
DjsWsProvider
]
};
var DjsCoreModule = class extends createConfigurableDynamicRootModule() {
static forRootAsync(asyncModuleConfig) {
const dynamicModule = {
module: DjsCoreModule,
imports: [
...CoreModuleProperties.imports,
DjsRestModule.forRootAsync(asyncModuleConfig)
],
exports: CoreModuleProperties.exports,
providers: [
...createModuleConfigProvider(DJS_CORE_MODULE_OPTIONS2, asyncModuleConfig),
...CoreModuleProperties.providers
]
};
DjsCoreModule.moduleSubject.next(dynamicModule);
return dynamicModule;
}
static forRoot(moduleConfig) {
const dynamicModule = {
module: DjsCoreModule,
imports: [
...CoreModuleProperties.imports,
DjsRestModule.forRoot(moduleConfig)
],
exports: CoreModuleProperties.exports,
providers: [
{
provide: DJS_CORE_MODULE_OPTIONS2,
useValue: moduleConfig
},
...CoreModuleProperties.providers
]
};
DjsCoreModule.moduleSubject.next(dynamicModule);
return dynamicModule;
}
static forExistingRestAsync(asyncModuleConfig) {
const dynamicModule = {
module: DjsCoreModule,
imports: [
...CoreModuleProperties.imports
],
exports: CoreModuleProperties.exports,
providers: [
...createModuleConfigProvider(DJS_CORE_MODULE_OPTIONS2, asyncModuleConfig),
...CoreModuleProperties.providers
]
};
DjsCoreModule.moduleSubject.next(dynamicModule);
return dynamicModule;
}
static forExistingRest(moduleConfig) {
const dynamicModule = {
module: DjsCoreModule,
imports: [
...CoreModuleProperties.imports
],
exports: CoreModuleProperties.exports,
providers: [
{
provide: DJS_CORE_MODULE_OPTIONS2,
useValue: moduleConfig
},
...CoreModuleProperties.providers
]
};
DjsCoreModule.moduleSubject.next(dynamicModule);
return dynamicModule;
}
};
__name(DjsCoreModule, "DjsCoreModule");
export {
DjsClient,
DjsClientProvider,
DjsCoreModule,
EventsService,
Listener,
On,
Once
};
//# sourceMappingURL=index.mjs.map