source dump of claude code
at main 54 lines 2.1 kB view raw
1// highlight.js's type defs carry `/// <reference lib="dom" />`. SSETransport, 2// mcp/client, ssh, dumpPrompts use DOM types (TextDecodeOptions, RequestInfo) 3// that only typecheck because this file's `typeof import('highlight.js')` pulls 4// lib.dom in. tsconfig has lib: ["ESNext"] only — fixing the actual DOM-type 5// deps is a separate sweep; this ref preserves the status quo. 6/// <reference lib="dom" /> 7 8import { extname } from 'path' 9 10export type CliHighlight = { 11 highlight: typeof import('cli-highlight').highlight 12 supportsLanguage: typeof import('cli-highlight').supportsLanguage 13} 14 15// One promise shared by Fallback.tsx, markdown.ts, events.ts, getLanguageName. 16// The highlight.js import piggybacks: cli-highlight has already pulled it into 17// the module cache, so the second import() is a cache hit — no extra bytes 18// faulted in. 19let cliHighlightPromise: Promise<CliHighlight | null> | undefined 20 21let loadedGetLanguage: typeof import('highlight.js').getLanguage | undefined 22 23async function loadCliHighlight(): Promise<CliHighlight | null> { 24 try { 25 const cliHighlight = await import('cli-highlight') 26 // cache hit — cli-highlight already loaded highlight.js 27 const highlightJs = await import('highlight.js') 28 loadedGetLanguage = highlightJs.getLanguage 29 return { 30 highlight: cliHighlight.highlight, 31 supportsLanguage: cliHighlight.supportsLanguage, 32 } 33 } catch { 34 return null 35 } 36} 37 38export function getCliHighlightPromise(): Promise<CliHighlight | null> { 39 cliHighlightPromise ??= loadCliHighlight() 40 return cliHighlightPromise 41} 42 43/** 44 * eg. "foo/bar.ts" → "TypeScript". Awaits the shared cli-highlight load, 45 * then reads highlight.js's language registry. All callers are telemetry 46 * (OTel counter attributes, permission-dialog unary events) — none block 47 * on this, they fire-and-forget or the consumer already handles Promise<string>. 48 */ 49export async function getLanguageName(file_path: string): Promise<string> { 50 await getCliHighlightPromise() 51 const ext = extname(file_path).slice(1) 52 if (!ext) return 'unknown' 53 return loadedGetLanguage?.(ext)?.name ?? 'unknown' 54}