fix: 调试发布run
This commit is contained in:
@@ -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");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user