/** File-extension -> language name used for the Level 0 language histogram. */ const EXTENSION_TO_LANGUAGE: Record = { ".ts": "TypeScript", ".tsx": "TypeScript", ".mts": "TypeScript", ".cts": "TypeScript", ".js": "JavaScript", ".jsx": "JavaScript", ".mjs": "JavaScript", ".cjs": "JavaScript", ".py": "Python", ".pyi": "Python", ".go": "Go", ".rs": "Rust", ".rb": "Ruby", ".java": "Java", ".kt": "Kotlin", ".kts": "Kotlin", ".swift": "Swift", ".c": "C", ".h": "C", ".cpp": "C++", ".cc": "C++", ".cxx": "C++", ".hpp": "C++", ".cs": "C#", ".fs": "F#", ".php": "PHP", ".lua": "Lua", ".zig": "Zig", ".ex": "Elixir", ".exs": "Elixir", ".erl": "Erlang", ".hrl": "Erlang", ".clj": "Clojure", ".cljs": "Clojure", ".scala": "Scala", ".hs": "Haskell", ".ml": "OCaml", ".sh": "Shell", ".bash": "Shell", ".zsh": "Shell", ".fish": "Shell", ".ps1": "PowerShell", ".sql": "SQL", ".html": "HTML", ".htm": "HTML", ".css": "CSS", ".scss": "SCSS", ".less": "Less", ".md": "Markdown", ".mdx": "Markdown", ".json": "JSON", ".jsonc": "JSON", ".yaml": "YAML", ".yml": "YAML", ".toml": "TOML", ".xml": "XML", ".vue": "Vue", ".svelte": "Svelte", ".tf": "Terraform", ".proto": "Protobuf", ".graphql": "GraphQL", ".gql": "GraphQL", ".r": "R", ".jl": "Julia", ".dart": "Dart", ".dockerfile": "Dockerfile", }; /** Look up a language by file extension (with or without leading dot). */ export function languageForExtension(ext: string): string | undefined { const key = ext.startsWith(".") ? ext.toLowerCase() : `.${ext.toLowerCase()}`; return EXTENSION_TO_LANGUAGE[key]; }