// index.ts function parseColorTokens(message) { const tokens = []; if (message) { let inColorStart = false; let inColorEnd = false; let chars = []; const messageLength = message.length; for (let i = 0; i < messageLength; i++) { const c = message.charAt(i); const nextC = i + 1 < messageLength ? message.charAt(i + 1) : null; switch (c) { case "\\": if (nextC === null) { chars.push(c); } else { chars.push(nextC); i++; } break; case "[": if (inColorStart || inColorEnd) { break; } else if (nextC == "/") { inColorEnd = true; i++; } else { inColorStart = true; } if (chars.length > 0) { tokens.push({ type: "text", content: chars.join("") }); chars = []; } break; case "]": if (inColorStart || inColorEnd) { if (chars.length > 0) { tokens.push({ type: "color", colorStart: inColorStart, color: chars.join("") }); chars = []; } inColorStart = false; inColorEnd = false; } else { chars.push(c); } break; default: chars.push(c); break; } } const inColor = inColorStart || inColorEnd; if (chars.length > 0 && !inColor) { tokens.push({ type: "text", content: chars.join("") }); } } return tokens; } var COLOR_MAP = { blink: "5", bold: "1", under: "4", red: "31", green: "32", yellow: "33", blue: "34", pink: "35", cyan: "36" }; function renderColorTokens(tokens) { const text = []; const colorMapStack = /* @__PURE__ */ new Map(); for (const token of tokens) { if (token.type === "color") { const color = token.color; if (color) { const colorCode = COLOR_MAP[color]; if (!colorCode) { text.push(`[${token.colorStart ? "" : "/"}${color}]`); continue; } const colorStack = colorMapStack.get(color) ?? []; if (colorStack.length == 0) { colorMapStack.set(color, colorStack); } if (token.colorStart) { colorStack.push(1); } else { colorStack.pop(); text.push("\x1B[0m"); } const colors = []; for (const [color2, colorStack2] of colorMapStack) { if (colorStack2.length > 0) { colors.push(colorCode); } } if (colors.length > 0) { text.push(`\x1B[${colors.join(";")}m`); } } } else { if (token.content) { text.push(token.content); } } } text.push("\x1B[0m"); return text.join(""); } function renderColor(message) { return renderColorTokens(parseColorTokens(message)); } export { renderColor };