feat: 4.2.0 load multiple directories & handleModuleErrors (#378)

* error-handling-draft

* feat: array based module loading (#379)

Co-authored-by: Jacob Nguyen <76754747+jacoobes@users.noreply.github.com>

* Update utility.ts

* Update sern.ts

* describesemanticsbetter

---------

Co-authored-by: Duro <davidwright13503@gmail.com>
This commit is contained in:
Jacob Nguyen
2025-01-18 11:47:51 -06:00
committed by GitHub
parent 52e145600d
commit f9e7eaf92d
6 changed files with 115 additions and 50 deletions

View File

@@ -26,9 +26,65 @@ export type UnpackedDependencies = {
export type ReplyOptions = string | Omit<InteractionReplyOptions, 'fetchReply'> | MessageReplyOptions;
/**
* @interface Wrapper
* @description Configuration interface for the sern framework. This interface defines
* the structure for configuring essential framework features including command handling,
* event management, and task scheduling.
*/
export interface Wrapper {
commands: string;
/**
* @property {string|string[]} commands
* @description Specifies the directory path where command modules are located.
* This is a required property that tells sern where to find and load command files.
* The path should be relative to the project root. If given an array, each directory is loaded in order
* they were declared. Order of modules in each directory is not guaranteed
*
* @example
* commands: ["./dist/commands"]
*/
commands: string | string[];
/**
* @property {boolean} [handleModuleErrors]
* @description Optional flag to enable automatic error handling for modules.
* When enabled, sern will automatically catch and handle errors that occur
* during module execution, preventing crashes and providing error logging.
*
* @default false
*/
handleModuleErrors?: boolean;
/**
* @property {string} [defaultPrefix]
* @description Optional prefix for text commands. This prefix will be used
* to identify text commands in messages. If not specified, text commands {@link CommandType.Text}
* will be disabled.
*
* @example
* defaultPrefix: "?"
*/
defaultPrefix?: string;
events?: string;
tasks?: string;
/**
* @property {string|string[]} [events]
* @description Optional directory path where event modules are located.
* If provided, Sern will automatically register and handle events from
* modules in this directory. The path should be relative to the project root.
* If given an array, each directory is loaded in order they were declared.
* Order of modules in each directory is not guaranteed.
*
* @example
* events: ["./dist/events"]
*/
events?: string | string[];
/**
* @property {string|string[]} [tasks]
* @description Optional directory path where scheduled task modules are located.
* If provided, Sern will automatically register and handle scheduled tasks
* from modules in this directory. The path should be relative to the project root.
* If given an array, each directory is loaded in order they were declared.
* Order of modules in each directory is not guaranteed.
*
* @example
* tasks: ["./dist/tasks"]
*/
tasks?: string | string[];
}