UNPKG

dressed

Version:

A sleek, serverless-ready Discord bot framework.

64 lines 2.51 kB
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) { if (typeof path === "string" && /^\.\.?\//.test(path)) { return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); }); } return path; }; import { sep } from "node:path"; import ora from "ora"; import { patternToRegex, scorePattern } from "@dressed/matcher"; import { createHandlerParser } from "./index.js"; const validComponentCategories = ["buttons", "modals", "selects"]; export const parseComponents = createHandlerParser({ col1Name: "Component", col2Name: "Category", messages: { pending: "Generating components", generated: "Generated components", noItems: "No components found", }, uniqueKeys: ["category"], itemMessages({ name, path }) { const category = getCategory(path); return { confict: `"${name}" conflicts with another ${category === null || category === void 0 ? void 0 : category.slice(0, -1)}, skipping the duplicate`, col2: category !== null && category !== void 0 ? category : "unknown", }; }, async createData({ name, path, originalPath }) { const { pattern = name } = await import(__rewriteRelativeImportExtension(path)); const category = getCategory(originalPath); if (!category) { ora(`Category for "${name}" could not be determined, skipping`).warn(); throw null; } return { category, ...(pattern instanceof RegExp ? { regex: pattern.source, score: scorePattern(pattern.source), } : { regex: patternToRegex(pattern).source, score: scorePattern(pattern), }), }; }, postMortem: (c) => c.sort((a, b) => b.data.score - a.data.score), }); function getCategory(path) { const parts = path.split(sep); const compIndex = parts.lastIndexOf("components"); if (compIndex === -1) return null; for (let i = parts.length - 2; i > compIndex; i--) { if (validComponentCategories.includes(parts[i])) { return parts[i]; } } return null; } //# sourceMappingURL=components.js.map