UNPKG

@jadl/cmd

Version:
43 lines (42 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandFactory = void 0; const Symbols_1 = require("../Symbols"); class CommandFactory { constructor(commands) { this.commands = []; commands.forEach((Command) => { const cmd = new Command(); Object.getOwnPropertySymbols(Command) .concat(Object.getOwnPropertySymbols(cmd)) .forEach((symbol) => { if (cmd[symbol]) cmd[symbol] = Object.assign(cmd[symbol], Command[symbol]); else cmd[symbol] = Command[symbol]; }); this.commands.push(cmd); }); } // eslint-disable-next-line @typescript-eslint/explicit-function-return-type static commandToJson(cmd) { const json = { name: cmd[Symbols_1.Symbols.commandName], aliases: cmd[Symbols_1.Symbols.aliases], interaction: cmd[Symbols_1.Symbols.interaction], commands: cmd[Symbols_1.Symbols.commands].map((x) => ({ ...x, name: x.name === Symbols_1.Symbols.baseCommand ? 'baseCommand' : x.name, canRun: x.canRun.map((fn) => fn.name) })) }; Object.getOwnPropertySymbols(cmd).forEach((sym) => { json[sym] = cmd[sym]; }); return json; } findCommand(name) { return this.commands.find((cmd) => cmd[Symbols_1.Symbols.commandName] === name || cmd[Symbols_1.Symbols.aliases].includes(name)); } } exports.CommandFactory = CommandFactory;