From 52e5ee2736c93ab142e1665842e2a008dd5d2e8d Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 21 Jul 2026 15:24:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E4=BB=A3=E7=A0=81=E8=AF=95?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=B2=99=E7=AE=B1=E5=8A=A0=20bun=20=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SUPPORTED_LANGS 追加 'bun'(仅 canonical key,不展示别名以免按钮拥挤), default_source 加 bun 分支——示例用 TypeScript 类型注解(:string / :number) 体现 bun 跑 TS 的语言特性。 aliases(js/ts/rs 等)经 normalize_lang 归一即命中此处某项,按钮无需重复。 --- src/pages/admin/runner.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pages/admin/runner.rs b/src/pages/admin/runner.rs index d3e349e..963e2ba 100644 --- a/src/pages/admin/runner.rs +++ b/src/pages/admin/runner.rs @@ -13,7 +13,9 @@ use crate::components::ui::{ADMIN_CARD_CLASS, BTN_PRIMARY_SM}; use crate::infra::runner_config::ResourceLimits; /// 受支持的语言集合(与 LANGUAGES 注册表 / CODE_RUNNER_LANGUAGES 对齐)。 -const SUPPORTED_LANGS: &[&str] = &["python", "node", "go", "rust"]; +/// 仅列 canonical key;别名(js/ts/rs 等)经 normalize_lang 归一到此处某项, +/// 按钮不重复展示别名,避免选择拥挤。 +const SUPPORTED_LANGS: &[&str] = &["python", "node", "go", "rust", "bun"]; /// 默认示例源码(按语言)。 fn default_source(lang: &str) -> String { @@ -22,6 +24,8 @@ fn default_source(lang: &str) -> String { "node" => "console.log('Hello from author sandbox');\n[0,1,2].forEach(i => console.log(`line ${i}`));\n".to_string(), "go" => "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tfmt.Println(\"Hello from author sandbox\")\n\tfor i := 0; i < 3; i++ {\n\t\tfmt.Printf(\"line %d\\n\", i)\n\t}\n}\n".to_string(), "rust" => "fn main() {\n println!(\"Hello from author sandbox\");\n for i in 0..3 {\n println!(\"line {}\", i);\n }\n}\n".to_string(), + // bun 跑 TypeScript:示例用 TS 类型注解体现语言特性。 + "bun" => "const greeting: string = 'Hello from author sandbox';\nconsole.log(greeting);\n[0, 1, 2].forEach((i: number) => console.log(`line ${i}`));\n".to_string(), _ => String::new(), } }