API reference › @evolu/common › Schedule › modifyDelay
function modifyDelay(
f: (
delay: number &
Brand<"NonNaN"> &
Brand<"Finite"> &
Brand<"Int"> &
Brand<"NonNegative"> &
Brand<"LessThan281474976710655"> &
Brand<"Millis">,
) => number,
): <Output, Input>(
schedule: Schedule<Output, Input>,
) => Schedule<Output, Input>;
Defined in: packages/common/src/Schedule.ts:1057
Transforms the delay of a schedule.
More flexible than maxDelay — can implement any delay transformation.
Transforming delays
import {
assertOk,
exponential,
modifyDelay,
testCreateDeps,
} from "@evolu/common";
// Arbitrary transformations can double or cap delays.
const slower = modifyDelay((delay) => delay * 2)(exponential("100ms"));
// Equivalent to maxDelay("10s") for this schedule.
const capped = modifyDelay((delay) => Math.min(delay, 10000))(
exponential("20s"),
);
const deps = testCreateDeps();
assertOk(slower(deps)(undefined), [100, 200]);
assertOk(capped(deps)(undefined), [20000, 10000]);