mirror of
https://github.com/Start9Labs/start-sdk.git
synced 2026-04-04 22:39:47 +00:00
chore: Update health check
This commit is contained in:
@@ -5,13 +5,14 @@ import { HealthReceipt } from "./HealthReceipt"
|
|||||||
import { Trigger } from "./trigger"
|
import { Trigger } from "./trigger"
|
||||||
import { TriggerInput } from "./trigger/TriggerInput"
|
import { TriggerInput } from "./trigger/TriggerInput"
|
||||||
import { defaultTrigger } from "./trigger/defaultTrigger"
|
import { defaultTrigger } from "./trigger/defaultTrigger"
|
||||||
|
import { once } from "../util/once"
|
||||||
|
|
||||||
export function healthCheck(o: {
|
export function healthCheck(o: {
|
||||||
effects: Effects
|
effects: Effects
|
||||||
name: string
|
name: string
|
||||||
trigger?: Trigger
|
trigger?: Trigger
|
||||||
fn(): Promise<CheckResult> | CheckResult
|
fn(): Promise<CheckResult> | CheckResult
|
||||||
onFirstSuccess?: () => () => Promise<unknown> | unknown
|
onFirstSuccess?: () => unknown | Promise<unknown>
|
||||||
}) {
|
}) {
|
||||||
new Promise(async () => {
|
new Promise(async () => {
|
||||||
let currentValue: TriggerInput = {
|
let currentValue: TriggerInput = {
|
||||||
@@ -19,6 +20,13 @@ export function healthCheck(o: {
|
|||||||
}
|
}
|
||||||
const getCurrentValue = () => currentValue
|
const getCurrentValue = () => currentValue
|
||||||
const trigger = (o.trigger ?? defaultTrigger)(getCurrentValue)
|
const trigger = (o.trigger ?? defaultTrigger)(getCurrentValue)
|
||||||
|
const triggerFirstSuccess = once(() =>
|
||||||
|
Promise.resolve(
|
||||||
|
"onFirstSuccess" in o && o.onFirstSuccess
|
||||||
|
? o.onFirstSuccess()
|
||||||
|
: undefined,
|
||||||
|
),
|
||||||
|
)
|
||||||
for (
|
for (
|
||||||
let res = await trigger.next();
|
let res = await trigger.next();
|
||||||
!res.done;
|
!res.done;
|
||||||
@@ -33,6 +41,9 @@ export function healthCheck(o: {
|
|||||||
})
|
})
|
||||||
currentValue.hadSuccess = true
|
currentValue.hadSuccess = true
|
||||||
currentValue.lastResult = "passing"
|
currentValue.lastResult = "passing"
|
||||||
|
await triggerFirstSuccess().catch((err) => {
|
||||||
|
console.error(err)
|
||||||
|
})
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
currentValue.lastResult = "failing"
|
currentValue.lastResult = "failing"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user