import { getRequiredEnv, getStdout, type HealthChecker, type HealthCheckInput, HealthCheckOutput, type IEither, type ITraceable, type ServerTrace, TraceUtil, } from "@emprespresso/pengueno"; export const healthCheck: HealthChecker = ( input: ITraceable, ): Promise> => input .bimap(TraceUtil.withFunctionTrace(healthCheck)) .move(getRequiredEnv("LAMINAR_HOST")) // ensure LAMINAR_HOST is propagated to getStdout for other procedures .map((tEitherEnv) => tEitherEnv .get() .flatMapAsync((_hasEnv) => getStdout(tEitherEnv.move(["laminarc", "show-jobs"])), ), ) .map( TraceUtil.promiseify((stdout) => stdout.get().moveRight(HealthCheckOutput.YAASSSLAYQUEEN), ), ) .get();