dressed
Version:
A sleek, serverless-ready Discord bot framework.
64 lines • 2.51 kB
JavaScript
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