zumito-framework 1.10.0 → 1.11.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.
- package/dist/definitions/ErrorType.d.ts +3 -1
- package/dist/definitions/ErrorType.js +2 -0
- package/dist/definitions/Module.d.ts +2 -0
- package/dist/definitions/Module.js +8 -1
- package/dist/services/handlers/ErrorHandler.d.ts +11 -1
- package/dist/services/handlers/ErrorHandler.js +23 -0
- package/dist/services/handlers/InteractionHandler.js +3 -0
- package/dist/services/managers/ModuleManager.d.ts +4 -2
- package/dist/services/managers/ModuleManager.js +12 -5
- package/package.json +1 -1
|
@@ -5,4 +5,6 @@ export var ErrorType;
|
|
|
5
5
|
ErrorType[ErrorType["CommandRun"] = 3] = "CommandRun";
|
|
6
6
|
ErrorType[ErrorType["Api"] = 4] = "Api";
|
|
7
7
|
ErrorType[ErrorType["Other"] = 5] = "Other";
|
|
8
|
+
ErrorType[ErrorType["ModuleLoad"] = 6] = "ModuleLoad";
|
|
9
|
+
ErrorType[ErrorType["RouteLoad"] = 7] = "RouteLoad";
|
|
8
10
|
})(ErrorType || (ErrorType = {}));
|
|
@@ -3,6 +3,7 @@ import { Command } from './commands/Command.js';
|
|
|
3
3
|
import { FrameworkEvent } from './FrameworkEvent.js';
|
|
4
4
|
import { CommandManager } from '../services/managers/CommandManager.js';
|
|
5
5
|
import { ModuleParameters } from './parameters/ModuleParameters.js';
|
|
6
|
+
import { ErrorHandler } from '../services/handlers/ErrorHandler.js';
|
|
6
7
|
export type ModuleRequeriments = {
|
|
7
8
|
modules: Array<string>;
|
|
8
9
|
services: Array<string>;
|
|
@@ -16,6 +17,7 @@ export declare abstract class Module {
|
|
|
16
17
|
protected events: Map<string, FrameworkEvent>;
|
|
17
18
|
static requeriments: ModuleRequeriments;
|
|
18
19
|
protected commandManager: CommandManager;
|
|
20
|
+
protected errorHandler: ErrorHandler;
|
|
19
21
|
constructor(path: any, parameters?: ModuleParameters);
|
|
20
22
|
initialize(): Promise<void>;
|
|
21
23
|
registerCommands(): Promise<void>;
|
|
@@ -4,6 +4,8 @@ import path from 'path';
|
|
|
4
4
|
import { ButtonInteraction, CommandInteraction, ModalSubmitInteraction, StringSelectMenuInteraction, } from 'discord.js';
|
|
5
5
|
import { CommandManager } from '../services/managers/CommandManager.js';
|
|
6
6
|
import { ServiceContainer } from '../services/ServiceContainer.js';
|
|
7
|
+
import { ErrorHandler } from '../services/handlers/ErrorHandler.js';
|
|
8
|
+
import { ErrorType } from './ErrorType.js';
|
|
7
9
|
export class Module {
|
|
8
10
|
path;
|
|
9
11
|
parameters;
|
|
@@ -12,11 +14,13 @@ export class Module {
|
|
|
12
14
|
events = new Map();
|
|
13
15
|
static requeriments;
|
|
14
16
|
commandManager;
|
|
17
|
+
errorHandler;
|
|
15
18
|
constructor(path, parameters) {
|
|
16
19
|
this.path = path;
|
|
17
20
|
this.parameters = parameters;
|
|
18
21
|
this.framework = ServiceContainer.getService(ZumitoFramework);
|
|
19
22
|
this.commands = new CommandManager(this.framework);
|
|
23
|
+
this.errorHandler = ServiceContainer.getService(ErrorHandler);
|
|
20
24
|
}
|
|
21
25
|
async initialize() {
|
|
22
26
|
await this.registerCommands();
|
|
@@ -125,7 +129,10 @@ export class Module {
|
|
|
125
129
|
continue;
|
|
126
130
|
if (file.endsWith('.js') || file.endsWith('.ts')) {
|
|
127
131
|
let route = await import('file://' + path.join(folderPath, file)).catch((e) => {
|
|
128
|
-
|
|
132
|
+
this.errorHandler.handleError(e, {
|
|
133
|
+
type: ErrorType.RouteLoad,
|
|
134
|
+
moduleName: this.constructor.name,
|
|
135
|
+
});
|
|
129
136
|
});
|
|
130
137
|
route = Object.values(route)[0];
|
|
131
138
|
route = new route();
|
|
@@ -17,7 +17,17 @@ type ApiErrorOptions = BaseErrorOptions & {
|
|
|
17
17
|
type OtherErrorOptions = BaseErrorOptions & {
|
|
18
18
|
type: ErrorType.Other;
|
|
19
19
|
};
|
|
20
|
-
type
|
|
20
|
+
type ModuleLoadErrorOptions = BaseErrorOptions & {
|
|
21
|
+
type: ErrorType.ModuleLoad;
|
|
22
|
+
moduleName: string;
|
|
23
|
+
};
|
|
24
|
+
type RouteLoadErrorOptions = BaseErrorOptions & {
|
|
25
|
+
type: ErrorType.RouteLoad;
|
|
26
|
+
path?: string;
|
|
27
|
+
method?: string;
|
|
28
|
+
moduleName?: string;
|
|
29
|
+
};
|
|
30
|
+
type ErrorOptions = CommandErrorOptions | ApiErrorOptions | OtherErrorOptions | ModuleLoadErrorOptions | RouteLoadErrorOptions;
|
|
21
31
|
export declare class ErrorHandler {
|
|
22
32
|
framework: ZumitoFramework;
|
|
23
33
|
constructor(framework: ZumitoFramework);
|
|
@@ -29,6 +29,29 @@ export class ErrorHandler {
|
|
|
29
29
|
console.line('');
|
|
30
30
|
console.groupEnd();
|
|
31
31
|
}
|
|
32
|
+
else if (options?.type == ErrorType.ModuleLoad) {
|
|
33
|
+
console.group(`[❌] Error loading module ${options.moduleName}`);
|
|
34
|
+
console.line(chalk.red('Error:'));
|
|
35
|
+
console.line(error?.toString?.() || 'Unknown error');
|
|
36
|
+
console.line('');
|
|
37
|
+
console.groupEnd();
|
|
38
|
+
}
|
|
39
|
+
else if (options?.type == ErrorType.RouteLoad) {
|
|
40
|
+
console.group(`[❌] Error loading route ${options.path}`);
|
|
41
|
+
console.line(chalk.red('Error:'));
|
|
42
|
+
console.line(error?.toString?.() || 'Unknown error');
|
|
43
|
+
console.line('');
|
|
44
|
+
console.groupEnd();
|
|
45
|
+
if (options?.moduleName) {
|
|
46
|
+
console.line(chalk.blue('Module: ') + options.moduleName);
|
|
47
|
+
}
|
|
48
|
+
if (options?.method) {
|
|
49
|
+
console.line(chalk.blue('Method: ') + options.method);
|
|
50
|
+
}
|
|
51
|
+
if (options?.path) {
|
|
52
|
+
console.line(chalk.blue('Path: ') + options.path);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
32
55
|
else {
|
|
33
56
|
console.error(error?.toString?.() || 'Unknown error');
|
|
34
57
|
console.line('');
|
|
@@ -185,6 +185,9 @@ export class InteractionHandler {
|
|
|
185
185
|
if (!commandInstance) {
|
|
186
186
|
throw new Error(`Command ${path[0]} not found or modal id bad formatted`);
|
|
187
187
|
}
|
|
188
|
+
if (!guildSettings && interaction.guildId) {
|
|
189
|
+
guildSettings = await ServiceContainer.getService(GuildDataGetter).getGuildSettings(interaction.guildId);
|
|
190
|
+
}
|
|
188
191
|
const framework = ServiceContainer.getService(ZumitoFramework);
|
|
189
192
|
if (commandInstance.binds?.modalSubmit) {
|
|
190
193
|
const trans = this.translationManager.getShortHandMethod('command.' + commandInstance.name, guildSettings?.lang);
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ZumitoFramework } from "../../ZumitoFramework.js";
|
|
2
2
|
import { Module } from "../../definitions/Module.js";
|
|
3
|
+
import { ErrorHandler } from "../handlers/ErrorHandler.js";
|
|
3
4
|
import { ModuleParameters } from "../../definitions/parameters/ModuleParameters.js";
|
|
4
5
|
export declare class ModuleManager {
|
|
6
|
+
protected framework: ZumitoFramework;
|
|
7
|
+
protected errorHandler: ErrorHandler;
|
|
5
8
|
protected modules: Map<string, Module>;
|
|
6
9
|
protected pendingInstancePool: Array<{
|
|
7
10
|
module: any;
|
|
@@ -9,8 +12,7 @@ export declare class ModuleManager {
|
|
|
9
12
|
name?: string;
|
|
10
13
|
options?: ModuleParameters;
|
|
11
14
|
}>;
|
|
12
|
-
|
|
13
|
-
constructor(framework: ZumitoFramework);
|
|
15
|
+
constructor(framework?: ZumitoFramework, errorHandler?: ErrorHandler);
|
|
14
16
|
set(name: string, module: Module): void;
|
|
15
17
|
get(name: string): Module;
|
|
16
18
|
getAll(): Map<string, Module>;
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
import { ZumitoFramework } from "../../ZumitoFramework.js";
|
|
1
2
|
import { Module } from "../../definitions/Module.js";
|
|
2
3
|
import fs from 'fs';
|
|
3
4
|
import path from 'path';
|
|
5
|
+
import { ErrorHandler } from "../handlers/ErrorHandler.js";
|
|
4
6
|
import { ServiceContainer } from "../ServiceContainer.js";
|
|
7
|
+
import { ErrorType } from "../../definitions/ErrorType.js";
|
|
5
8
|
export class ModuleManager {
|
|
9
|
+
framework;
|
|
10
|
+
errorHandler;
|
|
6
11
|
modules;
|
|
7
12
|
pendingInstancePool = [];
|
|
8
|
-
framework
|
|
9
|
-
constructor(framework) {
|
|
10
|
-
this.modules = new Map();
|
|
13
|
+
constructor(framework = ServiceContainer.getService(ZumitoFramework), errorHandler = ServiceContainer.getService(ErrorHandler)) {
|
|
11
14
|
this.framework = framework;
|
|
15
|
+
this.errorHandler = errorHandler;
|
|
16
|
+
this.modules = new Map();
|
|
12
17
|
}
|
|
13
18
|
set(name, module) {
|
|
14
19
|
this.modules.set(name, module);
|
|
@@ -74,8 +79,10 @@ export class ModuleManager {
|
|
|
74
79
|
this.modules.set(name || moduleInstance.constructor.name, moduleInstance);
|
|
75
80
|
}
|
|
76
81
|
catch (err) {
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
this.errorHandler.handleError(err, {
|
|
83
|
+
type: ErrorType.ModuleLoad,
|
|
84
|
+
moduleName: name || moduleInstance?.constructor?.name
|
|
85
|
+
});
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
else {
|