import { HOST_LINUX_PLATFORMS } from "./platform"; export interface IScript { id: number; team_id: number | null; name: string; created_at: string; updated_at: string; } export const isScriptSupportedPlatform = (hostPlatform: string) => ["darwin", "windows", ...HOST_LINUX_PLATFORMS].includes(hostPlatform); // excludes chrome, ios, ipados, android see also https://github.com/fleetdm/fleet/blob/5a21e2cfb029053ddad0508869eb9f1f23997bf2/server/fleet/hosts.go#L775 export const addTeamIdCriteria = ( pred: any, teamId: number, isFreeTier?: boolean ) => (isFreeTier ? { ...pred } : { ...pred, team_id: teamId }); export type IScriptExecutionStatus = "ran" | "pending" | "error"; export interface ILastExecution { execution_id: string; executed_at: string; status: IScriptExecutionStatus; } export type ScriptContent = string; export interface IHostScript { script_id: number; name: string; last_execution: ILastExecution | null; } const SCRIPT_BATCH_STATUSES = ["started", "scheduled", "finished"] as const; export type ScriptBatchStatus = typeof SCRIPT_BATCH_STATUSES[number]; export const isValidScriptBatchStatus = ( status: string | null | undefined ): status is ScriptBatchStatus => { return SCRIPT_BATCH_STATUSES.includes((status ?? "") as ScriptBatchStatus); }; export const SCRIPT_BATCH_HOST_EXECUTED_STATUSES = ["ran", "errored"]; export const SCRIPT_BATCH_HOST_NOT_EXECUTED_STATUSES = [ "pending", "incompatible", "canceled", ]; export const SCRIPT_BATCH_HOST_STATUSES = SCRIPT_BATCH_HOST_EXECUTED_STATUSES.concat( SCRIPT_BATCH_HOST_NOT_EXECUTED_STATUSES ); export type ScriptBatchHostStatus = typeof SCRIPT_BATCH_HOST_STATUSES[number]; export const isValidScriptBatchHostStatus = ( status: string | null | undefined ): status is ScriptBatchHostStatus => { return SCRIPT_BATCH_HOST_STATUSES.includes( (status ?? "") as ScriptBatchHostStatus ); };