From e68b4b76527eed3eb04a869d90a3123434268155 Mon Sep 17 00:00:00 2001 From: BluJ Date: Thu, 4 May 2023 13:59:20 -0600 Subject: [PATCH] chore: Update health check --- lib/health/HealthCheck.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/health/HealthCheck.ts b/lib/health/HealthCheck.ts index d787869..46c9573 100644 --- a/lib/health/HealthCheck.ts +++ b/lib/health/HealthCheck.ts @@ -5,13 +5,14 @@ import { HealthReceipt } from "./HealthReceipt" import { Trigger } from "./trigger" import { TriggerInput } from "./trigger/TriggerInput" import { defaultTrigger } from "./trigger/defaultTrigger" +import { once } from "../util/once" export function healthCheck(o: { effects: Effects name: string trigger?: Trigger fn(): Promise | CheckResult - onFirstSuccess?: () => () => Promise | unknown + onFirstSuccess?: () => unknown | Promise }) { new Promise(async () => { let currentValue: TriggerInput = { @@ -19,6 +20,13 @@ export function healthCheck(o: { } const getCurrentValue = () => currentValue const trigger = (o.trigger ?? defaultTrigger)(getCurrentValue) + const triggerFirstSuccess = once(() => + Promise.resolve( + "onFirstSuccess" in o && o.onFirstSuccess + ? o.onFirstSuccess() + : undefined, + ), + ) for ( let res = await trigger.next(); !res.done; @@ -33,6 +41,9 @@ export function healthCheck(o: { }) currentValue.hadSuccess = true currentValue.lastResult = "passing" + await triggerFirstSuccess().catch((err) => { + console.error(err) + }) } catch (_) { currentValue.lastResult = "failing" }