MCPcopy Create free account
hub / github.com/Effect-TS/effect / max

Function max

packages/effect/src/Schedule.ts:618–650  ·  view source on GitHub ↗
(
  schedules: Schedules
)

Source from the content-addressed store, hash-verified

616 * @since 4.0.0
617 */
618export const max = <
619 const Schedules extends NonEmptyReadonlyArray<
620 Schedule<any, any, any, any>
621 >
622>(
623 schedules: Schedules
624): Schedule<
625 Duration.Duration,
626 UnionToIntersection<
627 Input<Schedules[number]>
628 >,
629 Error<Schedules[number]>,
630 Env<Schedules[number]>
631> =>
632 fromStep(effect.map(
633 effect.all(schedules.map(toStep)),
634 (steps) => (now, input) =>
635 effect.flatMap(
636 effect.forEach(steps, (step) =>
637 Pull.matchEffect(step(now, input as never), {
638 onSuccess: (result) => effect.succeed(result[1]),
639 onDone: () => effect.undefined,
640 onFailure: effect.failCause
641 })),
642 (results) => {
643 const duration = maxDuration(results)
644 if (duration === undefined) {
645 return Cause.done(Duration.zero)
646 }
647 return effect.succeed([duration, duration] as [Duration.Duration, Duration.Duration])
648 }
649 )
650 ))
651
652const maxDuration = (results: ReadonlyArray<Duration.Duration | undefined>): Duration.Duration | undefined => {
653 let max = results[0]

Callers

nothing calls this directly

Calls 8

fromStepFunction · 0.85
maxDurationFunction · 0.85
allMethod · 0.80
stepFunction · 0.70
forEachMethod · 0.65
mapMethod · 0.45
succeedMethod · 0.45
doneMethod · 0.45

Tested by

no test coverage detected