fix: 调试发布run

This commit is contained in:
npc0-hue
2026-07-22 11:44:48 +08:00
parent b06623d0ce
commit 6c3eb6e45f
41 changed files with 1289 additions and 206 deletions
+13 -1
View File
@@ -2,7 +2,7 @@ import { describe, expect, it } from "vitest";
import type { GamePluginResponse } from "../api/types";
import { defaultServerCreateForm, runtimeBindingFields } from "../contracts/serverManagement";
import { serverCreateRequestFromForm } from "./serverManagement";
import { serverCreateRequestFromForm, serverInstanceIdFromName } from "./serverManagement";
const plugin: GamePluginResponse = {
id: "game.runtime",
@@ -72,4 +72,16 @@ describe("runtime profile server creation contracts", () => {
bindings: { "server-root": "runtime.server-root", "rcon.password": "secret://runtime/server-1/rcon" }
});
});
it("generates server instance ids from the visible server name", () => {
const form = defaultServerCreateForm([plugin], []);
const request = serverCreateRequestFromForm({ ...form, name: " Runtime Server ", bindings: {} }, 17);
expect(request).toMatchObject({
id: "server-runtime-server-17",
name: "Runtime Server",
idempotencyKey: "web:create:server-runtime-server-17:17"
});
expect(serverInstanceIdFromName("测试服", 18)).toBe("server-18");
});
});
+17 -3
View File
@@ -12,7 +12,7 @@ import type {
import type { ServerCreateFormState, ServerMetadataFormState, ServerRemovalConfirmationState } from "../contracts/serverManagement";
export function serverCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest {
const id = form.id.trim();
const id = form.id.trim() || serverInstanceIdFromName(form.name, sequence);
return {
id,
pluginId: form.pluginId.trim(),
@@ -24,6 +24,20 @@ export function serverCreateRequestFromForm(form: ServerCreateFormState, sequenc
};
}
export function serverInstanceIdFromName(name: string, sequence = Date.now()): string {
const normalized = name
.trim()
.toLowerCase()
.normalize("NFKD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-+|-+$/g, "")
.slice(0, 48)
.replace(/-+$/g, "");
const suffix = String(Math.max(0, Math.floor(Number.isFinite(sequence) ? sequence : Date.now())));
return normalized ? `server-${normalized}-${suffix}` : `server-${suffix}`;
}
export function serverLifecycleCommandRequest(instance: ServerInstanceResponse, action: "start" | "stop" | "status", sequence = Date.now()): ServerLifecycleCommandRequest {
return {
expectedConfigVersion: instance.configVersion,
@@ -36,9 +50,9 @@ export function serverMetadataUpdateRequestFromForm(form: ServerMetadataFormStat
return { name: form.name.trim() };
}
export function serverArchiveConfirmation(instance: ServerInstanceResponse): ServerRemovalConfirmationState {
export function serverDeleteConfirmation(instance: ServerInstanceResponse): ServerRemovalConfirmationState {
return {
action: "archive",
action: "delete",
serverInstanceId: instance.id,
name: instance.name,
state: instance.state