Files
start-sdk/lib/health/trigger/changeOnFirstSuccess.ts
2023-04-25 10:32:02 -06:00

32 lines
846 B
TypeScript

import { TriggerInput } from "./TriggerInput";
import { Trigger } from "./index";
export function changeOnFirstSuccess(o: {
beforeFirstSuccess: Trigger;
afterFirstSuccess: Trigger;
}): Trigger {
return async function* (getInput) {
const beforeFirstSuccess = o.beforeFirstSuccess(getInput);
yield;
let currentValue = getInput();
beforeFirstSuccess.next();
for (
let res = await beforeFirstSuccess.next();
currentValue?.lastResult !== "success" && !res.done;
res = await beforeFirstSuccess.next()
) {
yield;
currentValue = getInput();
}
const afterFirstSuccess = o.afterFirstSuccess(getInput);
for (
let res = await afterFirstSuccess.next();
!res.done;
res = await afterFirstSuccess.next()
) {
yield;
currentValue = getInput();
}
};
}