import { Trigger } from './index' export function changeOnFirstSuccess(o: { beforeFirstSuccess: Trigger afterFirstSuccess: Trigger }): Trigger { return async function* (getInput) { let currentValue = getInput() while (!currentValue.lastResult) { yield currentValue = getInput() } const beforeFirstSuccess = o.beforeFirstSuccess(getInput) 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() } } }