(opts: DetectOptions = {})
| 23 | } |
| 24 | |
| 25 | export async function detectTerminalTheme(opts: DetectOptions = {}): Promise<ResolvedTheme> { |
| 26 | if (!isInteractiveTerminal()) return "dark"; |
| 27 | if (isColorOptOut()) return "dark"; |
| 28 | |
| 29 | const fromOsc = await queryOsc11({ |
| 30 | timeoutMs: opts.timeoutMs ?? TERMINAL_THEME_DETECT_TIMEOUT_MS, |
| 31 | }); |
| 32 | if (fromOsc !== null) return fromOsc; |
| 33 | |
| 34 | const fromColorFgBg = parseColorFgBg(process.env["COLORFGBG"]); |
| 35 | if (fromColorFgBg !== null) return fromColorFgBg; |
| 36 | |
| 37 | return "dark"; |
| 38 | } |
| 39 | |
| 40 | function isInteractiveTerminal(): boolean { |
| 41 | return (process.stdin.isTTY ?? false) && (process.stdout.isTTY ?? false); |
no test coverage detected