dressed
Version:
A sleek, serverless-ready Discord bot framework.
48 lines • 1.65 kB
JavaScript
import ora from "ora";
import { stdout } from "node:process";
export function createHandlerSetup(options) {
return (items) => async (data, middleware, key = "default") => {
var _a;
const [item, props] = (_a = options.findItem(data, items)) !== null && _a !== void 0 ? _a : [];
let itemMessages = options.itemMessages;
if (typeof itemMessages === "function") {
itemMessages = itemMessages(data);
}
if (!item || !Array.isArray(props)) {
ora(itemMessages.noItem).warn();
return;
}
const loader = ora({
stream: stdout,
text: itemMessages.pending(item, props),
}).start();
try {
let handler;
if (key && item.exports) {
handler = item.exports[key];
if (!handler) {
throw new Error(`Unable to find '${String(key)}' in exports`);
}
}
else {
handler = item.run;
}
if (!handler)
throw new Error("Unable to find a handler to execute");
const args = middleware ? await middleware(...props) : props;
await handler(...args);
loader.succeed();
}
catch (e) {
const text = loader.text.replace("Running", "Failed to run");
if (e instanceof Error) {
loader.fail(`${text} - ${e.message}`);
}
else {
loader.fail(text);
console.error(e);
}
}
};
}
//# sourceMappingURL=index.js.map