All files / lib/trigger lastStatus.ts

6.25% Statements 1/16
0% Branches 0/3
0% Functions 0/2
6.25% Lines 1/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34              5x                                                    
import { Trigger } from "."
import { HealthStatus } from "../types"
 
export type LastStatusTriggerParams = { [k in HealthStatus]?: Trigger } & {
  default: Trigger
}
 
export function lastStatus(o: LastStatusTriggerParams): Trigger {
  return async function* (getInput) {
    let trigger = o.default(getInput)
    const triggers: {
      [k in HealthStatus]?: AsyncIterator<unknown, unknown, never>
    } & { default: AsyncIterator<unknown, unknown, never> } = {
      default: trigger,
    }
    while (true) {
      let currentValue = getInput()
      let prev: HealthStatus | "default" | undefined = currentValue.lastResult
      Iif (!prev) {
        yield
        continue
      }
      Iif (!(prev in o)) {
        prev = "default"
      }
      Iif (!triggers[prev]) {
        triggers[prev] = o[prev]!(getInput)
      }
      await triggers[prev]?.next()
      yield
    }
  }
}