@djs-nest/core
Version:
Djs Nest Core Module provides functionality for handling discord events
1 lines • 12.2 kB
Source Map (JSON)
{"version":3,"sources":["../src/djs.service.ts","../src/client/djs-client.ts","../src/client/djs-client.provider.ts","../src/events/decorators/listener.decorator.ts","../src/events/decorators/on.decorator.ts","../src/events/decorators/once.decorator.ts","../src/events/events.service.ts","../src/djs-core.module.ts","../src/ws/djs-ws.provider.ts"],"sourcesContent":["import { Client } from '@discordjs/core';\r\nimport { REST } from '@discordjs/rest';\r\nimport { WebSocketManager, WebSocketShardEvents } from '@discordjs/ws';\r\nimport { Injectable, Logger, OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';\r\nimport { DjsClient } from './client';\r\n\r\n@Injectable()\r\nexport class DjsService implements OnApplicationBootstrap, OnApplicationShutdown {\r\n private readonly logger = new Logger(DjsService.name);\r\n\r\n private readonly _client: DjsClient;\r\n\r\n constructor(rest: REST, private ws: WebSocketManager) {\r\n this._client = new Client({ rest, ws });\r\n this.ws.on(WebSocketShardEvents.Closed, ({ code }) => {\r\n this.logger.log(`WebSocket Closed with ${code} code`);\r\n });\r\n this.ws.on(WebSocketShardEvents.Resumed, () => {\r\n this.logger.log('WebSocket Resumed');\r\n });\r\n }\r\n\r\n get client(): DjsClient {\r\n return this._client;\r\n }\r\n\r\n async onApplicationBootstrap(): Promise<void> {\r\n try {\r\n await this.ws.connect();\r\n } catch (error) {\r\n this.logger.error('Failed to connect websocket', error);\r\n }\r\n }\r\n\r\n onApplicationShutdown(): void {\r\n this.ws.destroy();\r\n }\r\n}\r\n","import { ManagerShardEventsMap } from '@discordjs/core';\nimport { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';\n\nexport class DjsClient extends AsyncEventEmitter<ManagerShardEventsMap> {}\n","import { Provider } from '@nestjs/common';\nimport { DjsService } from '../djs.service';\nimport { DjsClient } from './djs-client';\n\nexport const DjsClientProvider: Provider<DjsClient> = {\n provide: DjsClient,\n useFactory: (djsService: DjsService) => {\n return djsService.client;\n },\n inject: [DjsService]\n};\n","import { DJS_EVENTS_METADATA, EventMeta, EventsDiscovery } from '@djs-nest/common';\nimport { SetMetadata } from '@nestjs/common';\n\nexport const Listener = (options: EventMeta) => SetMetadata<string, EventsDiscovery>(DJS_EVENTS_METADATA, new EventsDiscovery(options));\n","import { MappedEvents } from '@discordjs/core';\nimport { Listener } from './listener.decorator';\n\nexport const On = <K extends keyof MappedEvents>(event: K) => Listener({ type: 'on', event });\n","import { MappedEvents } from '@discordjs/core';\nimport { Listener } from './listener.decorator';\n\nexport const Once = <K extends keyof MappedEvents>(event: K) => Listener({ type: 'once', event });\n","import { WithIntrinsicProps } from '@discordjs/core';\nimport { DJS_EVENTS_METADATA, EventsDiscovery, ExplorerService } from '@djs-nest/common';\nimport { Injectable, Logger, OnModuleInit } from '@nestjs/common';\nimport { DjsService } from '../djs.service';\n\n@Injectable()\nexport class EventsService implements OnModuleInit {\n private readonly logger = new Logger(EventsService.name);\n\n constructor(private readonly djsService: DjsService, private readonly explorerService: ExplorerService<EventsDiscovery>) {}\n\n onModuleInit() {\n return this.explorerService.explore(DJS_EVENTS_METADATA).forEach(event => {\n this.logger.log(`Subscribe to event(${event.getType()}): ${event.getEvent()}`);\n this.djsService.client[event.getType()](event.getEvent(), (...args: [WithIntrinsicProps<any>]) => {\n event.execute([args[0].data, { api: args[0].api, shardId: args[0].shardId }]);\n });\n });\n }\n}\n","import {\n AsyncModuleConfig,\n createConfigurableDynamicRootModule,\n createModuleConfigProvider,\n DJS_CORE_MODULE_OPTIONS,\n DjsCommonModule\n} from '@djs-nest/common';\nimport { DjsRestModule } from '@djs-nest/rest';\nimport { DynamicModule } from '@nestjs/common';\nimport { DjsClientProvider } from './client';\nimport { DjsCoreModuleOptions } from './djs-core-options.interface';\nimport { DjsService } from './djs.service';\nimport { EventsService } from './events';\nimport { DjsWsProvider } from './ws';\n\nconst CoreModuleProperties = {\n imports: [DjsCommonModule, DjsRestModule.deferred()],\n providers: [DjsService, DjsClientProvider, DjsWsProvider, EventsService],\n exports: [DjsClientProvider, DjsWsProvider]\n};\n\nexport class DjsCoreModule extends createConfigurableDynamicRootModule() {\n static forRootAsync(asyncModuleConfig: AsyncModuleConfig<DjsCoreModuleOptions>): DynamicModule {\n const dynamicModule = {\n module: DjsCoreModule,\n imports: [...CoreModuleProperties.imports, DjsRestModule.forRootAsync(asyncModuleConfig)],\n exports: CoreModuleProperties.exports,\n providers: [...createModuleConfigProvider(DJS_CORE_MODULE_OPTIONS, asyncModuleConfig), ...CoreModuleProperties.providers]\n };\n\n DjsCoreModule.moduleSubject.next(dynamicModule);\n\n return dynamicModule;\n }\n\n static forRoot(moduleConfig: DjsCoreModuleOptions): DynamicModule {\n const dynamicModule: DynamicModule = {\n module: DjsCoreModule,\n imports: [...CoreModuleProperties.imports, DjsRestModule.forRoot(moduleConfig)],\n exports: CoreModuleProperties.exports,\n providers: [\n {\n provide: DJS_CORE_MODULE_OPTIONS,\n useValue: moduleConfig\n },\n ...CoreModuleProperties.providers\n ]\n };\n\n DjsCoreModule.moduleSubject.next(dynamicModule);\n\n return dynamicModule;\n }\n\n static forExistingRestAsync(asyncModuleConfig: AsyncModuleConfig<Exclude<DjsCoreModuleOptions, 'rest'>>): DynamicModule {\n const dynamicModule = {\n module: DjsCoreModule,\n imports: [...CoreModuleProperties.imports],\n exports: CoreModuleProperties.exports,\n providers: [...createModuleConfigProvider(DJS_CORE_MODULE_OPTIONS, asyncModuleConfig), ...CoreModuleProperties.providers]\n };\n\n DjsCoreModule.moduleSubject.next(dynamicModule);\n\n return dynamicModule;\n }\n\n static forExistingRest(moduleConfig: Exclude<DjsCoreModuleOptions, 'rest'>): DynamicModule {\n const dynamicModule: DynamicModule = {\n module: DjsCoreModule,\n imports: [...CoreModuleProperties.imports],\n exports: CoreModuleProperties.exports,\n providers: [\n {\n provide: DJS_CORE_MODULE_OPTIONS,\n useValue: moduleConfig\n },\n ...CoreModuleProperties.providers\n ]\n };\n\n DjsCoreModule.moduleSubject.next(dynamicModule);\n\n return dynamicModule;\n }\n}\n","import { REST } from '@discordjs/rest';\nimport { WebSocketManager } from '@discordjs/ws';\nimport { DJS_CORE_MODULE_OPTIONS } from '@djs-nest/common';\nimport { Provider } from '@nestjs/common';\nimport { DjsCoreModuleOptions } from '../djs-core-options.interface';\n\nexport const DjsWsProvider: Provider<WebSocketManager> = {\n provide: WebSocketManager,\n useFactory: (rest: REST, options: DjsCoreModuleOptions) =>\n new WebSocketManager({ rest, token: options.token, intents: options.intents, ...options.ws }),\n inject: [REST, DJS_CORE_MODULE_OPTIONS]\n};\n"],"mappings":"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","names":["Client","REST","WebSocketManager","WebSocketShardEvents","Injectable","Logger","DjsService","constructor","rest","ws","logger","Logger","name","_client","Client","on","WebSocketShardEvents","Closed","code","log","Resumed","client","onApplicationBootstrap","connect","error","onApplicationShutdown","destroy","Injectable","AsyncEventEmitter","DjsClient","AsyncEventEmitter","DjsClientProvider","provide","DjsClient","useFactory","djsService","client","inject","DjsService","DJS_EVENTS_METADATA","EventsDiscovery","SetMetadata","Listener","options","SetMetadata","DJS_EVENTS_METADATA","EventsDiscovery","On","event","Listener","type","Once","event","Listener","type","DJS_EVENTS_METADATA","ExplorerService","Injectable","Logger","EventsService","constructor","djsService","explorerService","logger","Logger","name","onModuleInit","explore","DJS_EVENTS_METADATA","forEach","event","log","getType","getEvent","client","args","execute","data","api","shardId","Injectable","createConfigurableDynamicRootModule","createModuleConfigProvider","DJS_CORE_MODULE_OPTIONS","DjsCommonModule","DjsRestModule","REST","WebSocketManager","DJS_CORE_MODULE_OPTIONS","DjsWsProvider","provide","useFactory","rest","options","token","intents","ws","inject","CoreModuleProperties","imports","DjsCommonModule","DjsRestModule","deferred","providers","DjsService","DjsClientProvider","DjsWsProvider","EventsService","exports","DjsCoreModule","createConfigurableDynamicRootModule","forRootAsync","asyncModuleConfig","dynamicModule","module","createModuleConfigProvider","DJS_CORE_MODULE_OPTIONS","moduleSubject","next","forRoot","moduleConfig","provide","useValue","forExistingRestAsync","forExistingRest"]}