UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

58 lines (56 loc) 1.84 kB
import { PluginHook } from "../types/Enums.mjs"; import { postInitialization, postLogin, preGenericsInitialization, preInitialization, preLogin } from "./symbols.mjs"; //#region src/lib/plugins/PluginManager.ts var PluginManager = class { constructor() { this.registry = /* @__PURE__ */ new Set(); } registerHook(hook, type, name) { if (typeof hook !== "function") throw new TypeError(`The provided hook ${name ? `(${name}) ` : ""}is not a function`); this.registry.add({ hook, type, name }); return this; } registerPreGenericsInitializationHook(hook, name) { return this.registerHook(hook, PluginHook.PreGenericsInitialization, name); } registerPreInitializationHook(hook, name) { return this.registerHook(hook, PluginHook.PreInitialization, name); } registerPostInitializationHook(hook, name) { return this.registerHook(hook, PluginHook.PostInitialization, name); } registerPreLoginHook(hook, name) { return this.registerHook(hook, PluginHook.PreLogin, name); } registerPostLoginHook(hook, name) { return this.registerHook(hook, PluginHook.PostLogin, name); } use(plugin) { const possibleSymbolHooks = [ [preGenericsInitialization, PluginHook.PreGenericsInitialization], [preInitialization, PluginHook.PreInitialization], [postInitialization, PluginHook.PostInitialization], [preLogin, PluginHook.PreLogin], [postLogin, PluginHook.PostLogin] ]; for (const [hookSymbol, hookType] of possibleSymbolHooks) { const hook = Reflect.get(plugin, hookSymbol); if (typeof hook !== "function") continue; this.registerHook(hook, hookType); } return this; } *values(hook) { for (const plugin of this.registry) { if (hook && plugin.type !== hook) continue; yield plugin; } } }; //#endregion export { PluginManager }; //# sourceMappingURL=PluginManager.mjs.map