UNPKG

dressed

Version:

A sleek, serverless-ready Discord bot framework.

54 lines 2.32 kB
import { relative } from "node:path"; import { errorSymbol, warnSymbol } from "../../../utils/log.js"; import logTree from "../log-tree.js"; export function createHandlerParser(options) { return (files, base) => { var _a; if (files.length === 0) return []; const tree = logTree(...options.colNames); let items = []; for (const [i, file] of Object.entries(files)) { let data; let itemMessages = options.itemMessages; if (typeof itemMessages === "function") { itemMessages = itemMessages(file); } try { tree.push(files.filter((f) => f.name === file.name).length > 1 ? `${file.name} \x1b[2m(${relative(base !== null && base !== void 0 ? base : "", file.path)})\x1b[22m` : file.name, ...((_a = itemMessages.cols) !== null && _a !== void 0 ? _a : [])); data = options.createData(file, tree); const hasConflict = items.some((item) => { var _a, _b; return (_b = (_a = options.uniqueKeys) === null || _a === void 0 ? void 0 : _a.every((k) => data[k] === item.data[k])) !== null && _b !== void 0 ? _b : item.name === file.name; }); if (hasConflict) { throw `${warnSymbol} ${itemMessages.confict}`; } if (typeof file.exports.default !== "function") { throw `${errorSymbol} Every handler must export a default function, skipping`; } } catch (e) { const prefix = Number(i) !== files.length - 1 ? "│" : " "; if (e && e instanceof Error) { tree.aside(`${prefix} ${errorSymbol} Failed to parse ${file.path}: ${e.message}`); tree.aside(e); } else if (typeof e === "string") { tree.aside(`${prefix} ${e}`); } tree.chop(); continue; } items.push({ ...file, data, }); } if (options.postMortem) { items = options.postMortem(items); } tree.log(); return items; }; } //# sourceMappingURL=index.js.map