diff --git a/apps/web/src/utils/judge.ts b/apps/web/src/utils/judge.ts index 6015d21..614ad85 100644 --- a/apps/web/src/utils/judge.ts +++ b/apps/web/src/utils/judge.ts @@ -1,20 +1,27 @@ import axios from "axios" import { decode, encode } from "./functions" -import { Code } from "./types" +import type { Code, LANGUAGE } from "./types" const http = axios.create({ baseURL: import.meta.env.PUBLIC_JUDGE0_URL }) +// Judge0 的语言 id。Flowchart 和 SQL 不在其中 —— 前者根本不是可执行代码, +// 后者由本站自己的 SQL 沙箱判,都走不到 Judge0。 +const JUDGE0_LANGUAGE_ID: Partial> = { + C: 50, + "C++": 54, + Java: 62, + Golang: 60, + JavaScript: 63, + Python2: 70, + Python3: 71, +} + export async function createTestSubmission(code: Code, input: string) { const encodedCode = encode(code.value) - const id = { - C: 50, - "C++": 54, - Java: 62, - Golang: 60, - JavaScript: 63, - Python2: 70, - Python3: 71, - }[code.language] + const id = JUDGE0_LANGUAGE_ID[code.language] + if (id === undefined) { + return { status: null, output: `${code.language} 不支持在线试运行` } + } let compilerOptions = "" if (id === 50) compilerOptions = "-lm" // 解决 GCC 的链接问题 const payload = {