UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

59 lines (57 loc) 2.2 kB
"use strict"; const require_lib_types_Enums = require('../types/Enums.cjs'); const require_lib_plugins_symbols = require('./symbols.cjs'); //#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, require_lib_types_Enums.PluginHook.PreGenericsInitialization, name); } registerPreInitializationHook(hook, name) { return this.registerHook(hook, require_lib_types_Enums.PluginHook.PreInitialization, name); } registerPostInitializationHook(hook, name) { return this.registerHook(hook, require_lib_types_Enums.PluginHook.PostInitialization, name); } registerPreLoginHook(hook, name) { return this.registerHook(hook, require_lib_types_Enums.PluginHook.PreLogin, name); } registerPostLoginHook(hook, name) { return this.registerHook(hook, require_lib_types_Enums.PluginHook.PostLogin, name); } use(plugin) { const possibleSymbolHooks = [ [require_lib_plugins_symbols.preGenericsInitialization, require_lib_types_Enums.PluginHook.PreGenericsInitialization], [require_lib_plugins_symbols.preInitialization, require_lib_types_Enums.PluginHook.PreInitialization], [require_lib_plugins_symbols.postInitialization, require_lib_types_Enums.PluginHook.PostInitialization], [require_lib_plugins_symbols.preLogin, require_lib_types_Enums.PluginHook.PreLogin], [require_lib_plugins_symbols.postLogin, require_lib_types_Enums.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 exports.PluginManager = PluginManager; //# sourceMappingURL=PluginManager.cjs.map