| import { | |
| ColorDiff, | |
| ColorFile, | |
| getSyntaxTheme as nativeGetSyntaxTheme, | |
| type SyntaxTheme, | |
| } from 'color-diff-napi' | |
| import { isEnvDefinedFalsy } from '../../utils/envUtils.js' | |
| export type ColorModuleUnavailableReason = 'env' | |
| /** | |
| * Returns a static reason why the color-diff module is unavailable, or null if available. | |
| * 'env' = disabled via CLAUDE_CODE_SYNTAX_HIGHLIGHT | |
| * | |
| * The TS port of color-diff works in all build modes, so the only way to | |
| * disable it is via the env var. | |
| */ | |
| export function getColorModuleUnavailableReason(): ColorModuleUnavailableReason | null { | |
| if (isEnvDefinedFalsy(process.env.CLAUDE_CODE_SYNTAX_HIGHLIGHT)) { | |
| return 'env' | |
| } | |
| return null | |
| } | |
| export function expectColorDiff(): typeof ColorDiff | null { | |
| return getColorModuleUnavailableReason() === null ? ColorDiff : null | |
| } | |
| export function expectColorFile(): typeof ColorFile | null { | |
| return getColorModuleUnavailableReason() === null ? ColorFile : null | |
| } | |
| export function getSyntaxTheme(themeName: string): SyntaxTheme | null { | |
| return getColorModuleUnavailableReason() === null | |
| ? nativeGetSyntaxTheme(themeName) | |
| : null | |
| } | |