@jadl/cmd
Version:
A command handler for JADL
43 lines (42 loc) • 1.66 kB
JavaScript
;
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;