Auto Select CF Language

Auto selects the language based on file extension, when you upload a file

// ==UserScript==
// @name         Auto Select CF Language
// @namespace    http://tampermonkey.net/
// @version      0.2.1
// @description  Auto selects the language based on file extension, when you upload a file
// @author       Mushfiqur Rahman Talha
// @match        *codeforces.com/contest/*/problem/*
// @match        *codeforces.com/problemset/problem/*
// @match        *mirror.codeforces.com/contest/*/problem/*
// @match        *mirror.codeforces.com/problemset/problem/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=codeforces.com
// @grant        none
// @license      Apache-2.0
// ==/UserScript==

(function() {
    'use strict';

    /*
    Language Support:
     - GNU GCC C11 5.1.0
     - GNU G++23 14.2 (64 bit, msys2)
     - C# 10, .NET SDK 6.0
     - D DMD32 v2.105.0
     - Go 1.22.2
     - Java 21 64bit
     - Kotlin 1.9.21
     - OCaml 4.02.1
     - PHP 8.1.7
     - PyPy 3.10 (7.3.15, 64bit)
     - Ruby 3.2.2
     - Rust 1.75.0 (2021)
     - Node.js 15.8.0 (64bit)
    */
    const fileInput = document.querySelector("input[name=sourceFile]");

    const languageId = {
        // C++
        "cpp" : 91,
        "cc"  : 91,
        "cxx" : 91,
        "c++" : 91,
        "cp"  : 91,
        
        // C
        "c"   : 43,
        
        // Java
        "java": 87,
        
        // Python
        "py"  : 70,
        "pyw" : 70,
        "py3" : 70,
        
        // C#
        "cs"  : 79,
        
        // JavaScript
        "js"  : 55,
        "mjs" : 55,
        
        // D
        "d"   : 28,
        
        // Go
        "go"  : 32,
        
        // Kotlin
        "kt"  : 88,
        "kts" : 88,
        
        // OCaml
        "ml"  : 19,
        "mli" : 19,
        
        // PHP
        "php" : 6,
        "php3": 6,
        "php4": 6,
        "php5": 6,
        "phtml": 6,
        
        // Ruby
        "rb"  : 67,
        "rbw" : 67,
        
        // Rust
        "rs"  : 75,
    };

    fileInput.addEventListener("change", event => {
        const file = event.target.files[0];
        if (!file) return;
        const ext = file.name.split('.').pop().toLowerCase();
        let optionValue = languageId[ext] || 91; // Default to C++ if extension not found

        document.querySelectorAll("option").forEach(element => element.removeAttribute("selected"));
        document.querySelector(`option[value='${optionValue}']`).setAttribute("selected", "selected");
    });
})();