"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EXT_TO_LANGUAGE = void 0;
exports.getLanguage = getLanguage;
exports.getMimeType = getMimeType;
const mime_1 = __importDefault(require("mime"));
/** Extension → programming/markup language name. */
exports.EXT_TO_LANGUAGE = {
    // JavaScript / TypeScript
    '.js': 'javascript',
    '.jsx': 'javascript',
    '.mjs': 'javascript',
    '.cjs': 'javascript',
    '.ts': 'typescript',
    '.tsx': 'tsx',
    '.mts': 'typescript',
    '.cts': 'typescript',
    // Web
    '.html': 'html',
    '.htm': 'html',
    '.css': 'css',
    '.scss': 'scss',
    '.sass': 'sass',
    '.less': 'less',
    '.svg': 'svg',
    // Data / Config
    '.json': 'json',
    '.jsonc': 'json',
    '.json5': 'json',
    '.yaml': 'yaml',
    '.yml': 'yaml',
    '.toml': 'toml',
    '.xml': 'xml',
    '.csv': 'csv',
    '.tsv': 'csv',
    '.ini': 'ini',
    '.env': 'dotenv',
    // Markdown / Docs
    '.md': 'markdown',
    '.mdx': 'markdown',
    '.rst': 'restructuredtext',
    '.txt': 'plaintext',
    // Shell
    '.sh': 'shell',
    '.bash': 'shell',
    '.zsh': 'shell',
    '.fish': 'shell',
    '.ps1': 'powershell',
    '.bat': 'batch',
    '.cmd': 'batch',
    // Python
    '.py': 'python',
    '.pyi': 'python',
    '.pyx': 'python',
    // Ruby
    '.rb': 'ruby',
    '.erb': 'ruby',
    // Go
    '.go': 'go',
    // Rust
    '.rs': 'rust',
    // Java / Kotlin / Scala
    '.java': 'java',
    '.kt': 'kotlin',
    '.kts': 'kotlin',
    '.scala': 'scala',
    // C / C++
    '.c': 'c',
    '.h': 'c',
    '.cpp': 'cpp',
    '.cc': 'cpp',
    '.cxx': 'cpp',
    '.hpp': 'cpp',
    '.hxx': 'cpp',
    // C#
    '.cs': 'csharp',
    // Swift / Objective-C
    '.swift': 'swift',
    '.m': 'objectivec',
    '.mm': 'objectivec',
    // PHP
    '.php': 'php',
    // SQL
    '.sql': 'sql',
    // Docker
    '.dockerfile': 'dockerfile',
    // GraphQL
    '.graphql': 'graphql',
    '.gql': 'graphql',
    // Protocol Buffers
    '.proto': 'protobuf',
    // Lua
    '.lua': 'lua',
    // R
    '.r': 'r',
    '.R': 'r',
    // Elixir / Erlang
    '.ex': 'elixir',
    '.exs': 'elixir',
    '.erl': 'erlang',
    // Haskell
    '.hs': 'haskell',
    // Dart
    '.dart': 'dart',
    // Zig
    '.zig': 'zig',
};
/** Look up language from file extension. Returns null if unknown. */
function getLanguage(ext) {
    return exports.EXT_TO_LANGUAGE[ext.toLowerCase()] ?? null;
}
/** Look up MIME type from file extension via `mime` library. Returns null if unknown. */
function getMimeType(ext) {
    // mime.getType accepts extension with or without dot, e.g. "ts" or ".ts"
    return mime_1.default.getType(ext) ?? null;
}
