UNPKG

pr-desc-cli

Version:
83 lines (82 loc) 2.59 kB
export function maskApiKey(apiKey, visibleChars = 4) { if (apiKey.length <= visibleChars * 2) { return apiKey; } const maskedPart = "*".repeat(apiKey.length - visibleChars * 2); const startVisible = apiKey.slice(0, visibleChars); const endVisible = apiKey.slice(-visibleChars); return `${startVisible}${maskedPart}${endVisible}`; } export function formatCommitMessage(message) { return message .split(/\r?\n/)[0] .trim() .replace(/^['"`]|['"`]$/g, ""); } export function ensureConventionalCommit(message, typeHint) { const validTypes = [ "feat", "fix", "docs", "style", "refactor", "perf", "test", "chore", "build", "ci", ]; const clean = message.trim().replace(/\.$/, ""); const conventionalRegex = new RegExp(`^(${validTypes.join("|")})(\([^)]*\))?:\\s+.+`, "i"); if (conventionalRegex.test(clean)) { const parts = clean.split(/:\s+/); const header = parts.shift() ?? ""; let summary = parts.join(": ") || ""; if (summary.length > 72) { if (summary.includes("Here's a suggested commit message")) { summary = summary .replace("Here's a suggested commit message", "") .trim(); } } summary = summary.slice(0, 72).trim(); return `${header}: ${summary}`; } const hint = typeHint && validTypes.includes(typeHint) ? typeHint : "chore"; let summary = clean .replace(/^[^a-zA-Z0-9]+/, "") .replace(new RegExp(`^(${validTypes.join("|")})[:\s-]+`, "i"), "") .trim(); summary = summary.replace(/^[A-Z]/, (c) => c.toLowerCase()); if (!summary) summary = "update"; if (summary.length > 72) summary = summary.slice(0, 72).trim(); return `${hint}: ${summary}`; } export const mapTypeToLabel = (t) => { switch ((t || "").toLowerCase()) { case "feat": return "Feature"; case "fix": return "Bugfix"; case "chore": return "Chore"; case "docs": return "Docs"; case "refactor": return "Refactor"; case "perf": return "Performance"; case "test": return "Tests"; case "style": return "Style"; case "ci": return "CI"; case "build": return "Build"; default: return t ? t.charAt(0).toUpperCase() + t.slice(1) : "Unknown"; } };