mirror of
https://github.com/Start9Labs/start-sdk.git
synced 2026-04-02 05:23:21 +00:00
feat:Deamons need over time after start
This commit is contained in:
@@ -15,7 +15,6 @@ export function healthCheck(o: {
|
|||||||
}) {
|
}) {
|
||||||
new Promise(async () => {
|
new Promise(async () => {
|
||||||
let currentValue: TriggerInput = {
|
let currentValue: TriggerInput = {
|
||||||
lastResult: null,
|
|
||||||
hadSuccess: false,
|
hadSuccess: false,
|
||||||
}
|
}
|
||||||
const getCurrentValue = () => currentValue
|
const getCurrentValue = () => currentValue
|
||||||
@@ -33,9 +32,9 @@ export function healthCheck(o: {
|
|||||||
message,
|
message,
|
||||||
})
|
})
|
||||||
currentValue.hadSuccess = true
|
currentValue.hadSuccess = true
|
||||||
currentValue.lastResult = "success"
|
currentValue.lastResult = "passing"
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
currentValue.lastResult = "failure"
|
currentValue.lastResult = "failing"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
import { HealthStatus } from "../../types"
|
||||||
|
|
||||||
export type TriggerInput = {
|
export type TriggerInput = {
|
||||||
lastResult?: "success" | "failure" | null
|
lastResult?: HealthStatus
|
||||||
hadSuccess?: boolean
|
hadSuccess?: boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export function changeOnFirstSuccess(o: {
|
|||||||
beforeFirstSuccess.next()
|
beforeFirstSuccess.next()
|
||||||
for (
|
for (
|
||||||
let res = await beforeFirstSuccess.next();
|
let res = await beforeFirstSuccess.next();
|
||||||
currentValue?.lastResult !== "success" && !res.done;
|
currentValue?.lastResult !== "passing" && !res.done;
|
||||||
res = await beforeFirstSuccess.next()
|
res = await beforeFirstSuccess.next()
|
||||||
) {
|
) {
|
||||||
yield
|
yield
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { HealthReceipt, ReadyProof } from "../health"
|
import { HealthReceipt, ReadyProof, TriggerInput } from "../health"
|
||||||
import { CheckResult } from "../health/checkFns"
|
import { CheckResult } from "../health/checkFns"
|
||||||
import { Trigger } from "../health/trigger"
|
import { Trigger } from "../health/trigger"
|
||||||
import { defaultTrigger } from "../health/trigger/defaultTrigger"
|
import { defaultTrigger } from "../health/trigger/defaultTrigger"
|
||||||
@@ -82,21 +82,26 @@ export class Daemons<Ids extends string | never> {
|
|||||||
const { command } = daemon
|
const { command } = daemon
|
||||||
|
|
||||||
const child = effects.runDaemon(command)
|
const child = effects.runDaemon(command)
|
||||||
let currentInput = {}
|
let currentInput: TriggerInput = {}
|
||||||
const getCurrentInput = () => currentInput
|
const getCurrentInput = () => currentInput
|
||||||
const trigger = (daemon.ready.trigger ?? defaultTrigger)(
|
const trigger = (daemon.ready.trigger ?? defaultTrigger)(
|
||||||
getCurrentInput,
|
getCurrentInput,
|
||||||
)
|
)
|
||||||
for (
|
return new Promise(async (resolve) => {
|
||||||
let res = await trigger.next();
|
for (
|
||||||
!res.done;
|
let res = await trigger.next();
|
||||||
res = await trigger.next()
|
!res.done;
|
||||||
) {
|
res = await trigger.next()
|
||||||
const response = await daemon.ready.fn()
|
) {
|
||||||
if (response.status === "passing") {
|
const response = await daemon.ready.fn()
|
||||||
return child
|
currentInput.lastResult = response.status || null
|
||||||
|
if (!currentInput.hadSuccess && response.status === "passing") {
|
||||||
|
currentInput.hadSuccess = true
|
||||||
|
resolve(child)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
resolve(child)
|
||||||
|
})
|
||||||
return child
|
return child
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import {
|
|||||||
} from "../config/configTypes"
|
} from "../config/configTypes"
|
||||||
import { deepMerge } from "../util"
|
import { deepMerge } from "../util"
|
||||||
import { InputSpec, matchInputSpec } from "./output"
|
import { InputSpec, matchInputSpec } from "./output"
|
||||||
|
import * as _I from "../index"
|
||||||
|
|
||||||
export type IfEquals<T, U, Y = unknown, N = never> = (<G>() => G extends T
|
export type IfEquals<T, U, Y = unknown, N = never> = (<G>() => G extends T
|
||||||
? 1
|
? 1
|
||||||
|
|||||||
Reference in New Issue
Block a user