API reference@evolu/commonSchedule › whileScheduleInput

function whileScheduleInput<Input>(
  predicate: Predicate<Input>,
): <Output>(schedule: Schedule<Output, Input>) => Schedule<Output, Input>;

Defined in: packages/common/src/Schedule.ts:1164

Continues while the input satisfies a predicate.

Stops (returns Err(Done<void>)) when Predicate returns false. Useful for input-aware retry strategies, e.g., only retry certain error types.

Continuing by input

import {
  assertErr,
  assertOk,
  done,
  exponential,
  testCreateDeps,
  whileScheduleInput,
  type Typed,
} from "@evolu/common";

interface MyError extends Typed<"Transient" | "Fatal"> {}

// Retry only transient errors.
const retryTransient = whileScheduleInput(
  (error: MyError) => error.type === "Transient",
)(exponential("100ms"));
const step = retryTransient(testCreateDeps());
assertOk(step({ type: "Transient" }), [100, 100]);
assertErr(step({ type: "Fatal" }), done());