@sapphire/framework
Version:
Discord bot framework built for advanced and amazing bots.
59 lines (56 loc) • 2.23 kB
JavaScript
;
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