Files
electric-cherry/src/lib/deployment-plan.ts
T

73 lines
1.9 KiB
TypeScript

import type { ZombieGame } from './map-aliases.js';
export interface LaunchFileSummary {
name: string;
kind: 'script' | 'plugin' | 'config';
path: string;
versionId: number | null;
version: number | null;
sha256: string;
size: number;
}
export interface LaunchRecipeSummary {
game: ZombieGame;
mapSlug: string;
mapName: string;
expectedMap: string;
capturedAt: string;
image: string;
configFile: string;
configSource: string;
files: LaunchFileSummary[];
fingerprint: string;
}
export interface BlueprintSummary {
id: string;
name: string;
description: string;
createdAt: string;
recipe: LaunchRecipeSummary;
entries: { count: number; recipe: LaunchRecipeSummary }[];
totalServers: number;
}
export interface CollectionPreview {
id: string;
expiresAt: string;
blueprintName: string;
entries: { count: number; existing: number; missing: number; existingServers: string[]; recipe: LaunchRecipeSummary }[];
servers: { entryIndex: number; name: string | null; port: number | null; hasSavedKey: boolean }[];
blockers: string[];
ready: boolean;
}
export interface CollectionSummary {
id: string;
name: string;
created_at: string;
total: number;
done: number;
failed: number;
active: number;
}
export interface CollectionDetail {
collection: CollectionSummary;
servers: { id: string; server: string; port: number; map_slug: string; state: string; stage: string;
started_at: string; finished_at: string | null; error: string | null; server_exists: number }[];
}
export interface LaunchPreview {
id: string;
expiresAt: string;
name: string | null;
port: number | null;
hasSavedKey: boolean;
recipe: LaunchRecipeSummary;
blueprintName: string | null;
checks: { label: string; state: 'pass' | 'blocked' | 'info'; detail: string }[];
ready: boolean;
}