Files
HexaHost-GameCloud/packages/contracts/src/join.ts
smueller b335f6a497
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 9s
CI / Go — edge-gateway build (push) Successful in 17s
Phase8
2026-06-26 13:33:03 +02:00

39 lines
1.2 KiB
TypeScript

import { z } from 'zod';
import { gameServerStatusSchema, serverEditionSchema } from './servers';
export const edgeBackendSchema = z.object({
host: z.string(),
port: z.number().int(),
});
export const edgeActionSchema = z.enum(['proxy', 'start', 'wait', 'reject']);
export const edgeResolveResponseSchema = z.object({
serverId: z.string().uuid(),
slug: z.string(),
status: gameServerStatusSchema,
joinToStartEnabled: z.boolean(),
edition: serverEditionSchema,
backend: edgeBackendSchema.nullable(),
action: edgeActionSchema,
message: z.string().optional(),
});
export const edgeStartRequestSchema = z.object({
clientIp: z.string().min(1).max(64),
});
export const edgeStartResponseSchema = z.object({
resolve: edgeResolveResponseSchema,
started: z.boolean(),
jobId: z.string().optional(),
queuePosition: z.number().int().optional(),
});
export type EdgeBackend = z.infer<typeof edgeBackendSchema>;
export type EdgeAction = z.infer<typeof edgeActionSchema>;
export type EdgeResolveResponse = z.infer<typeof edgeResolveResponseSchema>;
export type EdgeStartRequest = z.infer<typeof edgeStartRequestSchema>;
export type EdgeStartResponse = z.infer<typeof edgeStartResponseSchema>;