@@ -11,7 +11,7 @@ import ready from './handlers/ready';
11
11
import { interactionHandler } from './handlers/interaction' ;
12
12
import { messageHandler } from './handlers/message'
13
13
import { presenceHandler } from './handlers/presence' ;
14
- import { UnpackedDependencies , Wrapper } from './types/utility' ;
14
+ import type { Payload , UnpackedDependencies , Wrapper } from './types/utility' ;
15
15
import type { Presence } from './core/presences' ;
16
16
import { registerTasks } from './handlers/tasks' ;
17
17
@@ -32,7 +32,6 @@ import { registerTasks } from './handlers/tasks';
32
32
export function init ( maybeWrapper : Wrapper = { commands : "./dist/commands" } ) {
33
33
const startTime = performance . now ( ) ;
34
34
const deps = useContainerRaw ( ) . deps < UnpackedDependencies > ( ) ;
35
-
36
35
if ( maybeWrapper . events !== undefined ) {
37
36
eventsHandler ( deps , maybeWrapper )
38
37
. then ( ( ) => {
@@ -42,6 +41,22 @@ export function init(maybeWrapper: Wrapper = { commands: "./dist/commands" }) {
42
41
deps [ '@sern/logger' ] ?. info ( { message : "No events registered" } ) ;
43
42
}
44
43
44
+ // autohandle errors that occur in modules.
45
+ // convenient for rapid iteration
46
+ if ( maybeWrapper . handleModuleErrors ) {
47
+ if ( ! deps [ '@sern/logger' ] ) {
48
+ throw Error ( 'A logger is required to handleModuleErrors.\n A default logger is already supplied!' ) ;
49
+ }
50
+ deps [ '@sern/logger' ] ?. info ( { 'message' : 'handleModuleErrors enabled' } )
51
+ deps [ '@sern/emitter' ] . addListener ( 'error' , ( payload : Payload ) => {
52
+ if ( payload . type === 'failure' ) {
53
+ deps [ '@sern/logger' ] ?. error ( { message : payload . reason } )
54
+ } else {
55
+ deps [ '@sern/logger' ] ?. warning ( { message : "error event should only have payloads of 'failure'" } ) ;
56
+ }
57
+ } )
58
+ }
59
+
45
60
const initCallsite = callsites ( ) [ 1 ] . getFileName ( ) ;
46
61
const presencePath = Files . shouldHandle ( initCallsite ! , "presence" ) ;
47
62
//Ready event: load all modules and when finished, time should be taken and logged
@@ -60,10 +75,6 @@ export function init(maybeWrapper: Wrapper = { commands: "./dist/commands" }) {
60
75
}
61
76
} )
62
77
. catch ( err => { throw err } ) ;
63
-
64
- //const messages$ = messageHandler(deps, maybeWrapper.defaultPrefix);
65
78
interactionHandler ( deps , maybeWrapper . defaultPrefix ) ;
66
79
messageHandler ( deps , maybeWrapper . defaultPrefix )
67
- // listening to the message stream and interaction stream
68
- //merge(messages$, interactions$).subscribe();
69
80
}
0 commit comments