import * as TE from "fp-ts/lib/TaskEither"; import * as O from "fp-ts/lib/Option"; import type { Job } from "./job"; import type { D } from "../util"; export enum TestType { EMAIL = "email", PING = "ping", HEALTHCHECK = "healthcheck", DNS = "dns", } export interface Schedule { every: D.Duration; jitter: D.Duration; } export interface Test { name: string; type: TestType; job: Job; schedule: Schedule; } export type Testable = (job: T) => TE.TaskEither; export const parseTestType = (testType: string): O.Option => Object.values(TestType).includes(testType as TestType) ? O.some(testType as TestType) : O.none;