{"version":3,"file":"ansi.mjs","names":[],"sources":["../../src/formatters/ansi.ts"],"sourcesContent":["import type { Diagnostic } from '../diagnostics'\nimport type { Formatter } from '../format'\nimport { formatTag } from '../format'\n\nexport interface Colors {\n  red: (s: string) => string\n  yellow: (s: string) => string\n  cyan: (s: string) => string\n  gray: (s: string) => string\n  bold: (s: string) => string\n  dim: (s: string) => string\n}\n\nfunction levelColor(colors: Colors, level: string): (s: string) => string {\n  switch (level) {\n    case 'error':\n      return colors.red\n    case 'warn':\n    case 'deprecation':\n      return colors.yellow\n    case 'suggestion':\n      return colors.cyan\n    default:\n      return s => s\n  }\n}\n\nexport function ansiFormatter(colors: Colors): Formatter {\n  return (d: Diagnostic): string => {\n    const colorize = levelColor(colors, d.level)\n    const tag = colors.bold(colorize(formatTag(d)))\n    const header = `${tag} ${d.message}`\n\n    const details: string[] = []\n    if (d.why)\n      details.push(`${colors.dim('why:')} ${d.why}`)\n    if (d.fix)\n      details.push(`${colors.dim('fix:')} ${d.fix}`)\n    if (d.hint)\n      details.push(`${colors.dim('hint:')} ${colors.gray(d.hint)}`)\n    if (d.docs)\n      details.push(`${colors.dim('see:')} ${colors.cyan(d.docs)}`)\n\n    if (details.length === 0)\n      return header\n\n    const lines = details.map((detail, i) => {\n      const connector = i < details.length - 1\n        ? colors.dim('├▶')\n        : colors.dim('╰▶')\n      return `${connector} ${detail}`\n    })\n\n    return [header, ...lines].join('\\n')\n  }\n}\n"],"mappings":";;AAaA,SAAS,WAAW,QAAgB,OAAsC;AACxE,SAAQ,OAAR;EACE,KAAK,QACH,QAAO,OAAO;EAChB,KAAK;EACL,KAAK,cACH,QAAO,OAAO;EAChB,KAAK,aACH,QAAO,OAAO;EAChB,QACE,SAAO,MAAK;;;AAIlB,SAAgB,cAAc,QAA2B;AACvD,SAAQ,MAA0B;EAChC,MAAM,WAAW,WAAW,QAAQ,EAAE,MAAM;EAE5C,MAAM,SAAS,GADH,OAAO,KAAK,SAAS,UAAU,EAAE,CAAC,CAAC,CACzB,GAAG,EAAE;EAE3B,MAAM,UAAoB,EAAE;AAC5B,MAAI,EAAE,IACJ,SAAQ,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM;AAChD,MAAI,EAAE,IACJ,SAAQ,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM;AAChD,MAAI,EAAE,KACJ,SAAQ,KAAK,GAAG,OAAO,IAAI,QAAQ,CAAC,GAAG,OAAO,KAAK,EAAE,KAAK,GAAG;AAC/D,MAAI,EAAE,KACJ,SAAQ,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,OAAO,KAAK,EAAE,KAAK,GAAG;AAE9D,MAAI,QAAQ,WAAW,EACrB,QAAO;AAST,SAAO,CAAC,QAAQ,GAPF,QAAQ,KAAK,QAAQ,MAAM;AAIvC,UAAO,GAHW,IAAI,QAAQ,SAAS,IACnC,OAAO,IAAI,KAAK,GAChB,OAAO,IAAI,KAAK,CACA,GAAG;IACvB,CAEuB,CAAC,KAAK,KAAK"}