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(); } }; }