UNPKG

@sapphire/framework

Version:

Discord bot framework built for advanced and amazing bots.

59 lines (56 loc) 2.23 kB
'use strict'; var Enums_cjs = require('../types/Enums.cjs'); var symbols_cjs = require('./symbols.cjs'); var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var _PluginManager = class _PluginManager { 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, Enums_cjs.PluginHook.PreGenericsInitialization, name); } registerPreInitializationHook(hook, name) { return this.registerHook(hook, Enums_cjs.PluginHook.PreInitialization, name); } registerPostInitializationHook(hook, name) { return this.registerHook(hook, Enums_cjs.PluginHook.PostInitialization, name); } registerPreLoginHook(hook, name) { return this.registerHook(hook, Enums_cjs.PluginHook.PreLogin, name); } registerPostLoginHook(hook, name) { return this.registerHook(hook, Enums_cjs.PluginHook.PostLogin, name); } use(plugin) { const possibleSymbolHooks = [ [symbols_cjs.preGenericsInitialization, Enums_cjs.PluginHook.PreGenericsInitialization], [symbols_cjs.preInitialization, Enums_cjs.PluginHook.PreInitialization], [symbols_cjs.postInitialization, Enums_cjs.PluginHook.PostInitialization], [symbols_cjs.preLogin, Enums_cjs.PluginHook.PreLogin], [symbols_cjs.postLogin, Enums_cjs.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; } } }; __name(_PluginManager, "PluginManager"); var PluginManager = _PluginManager; exports.PluginManager = PluginManager; //# sourceMappingURL=PluginManager.cjs.map //# sourceMappingURL=PluginManager.cjs.map