[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › Schedule

Composable scheduling strategies.

## Composition

| Name                                                                                       | Description                                                                  |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| [ScheduleStep](https://evolu.dev/docs/api-reference/common/Schedule/interfaces/ScheduleStep)            | Base interface for schedule-based task helpers.                              |
| [intersectSchedules](https://evolu.dev/docs/api-reference/common/Schedule/functions/intersectSchedules) | Combines two schedules with AND semantics.                                   |
| [sequenceSchedules](https://evolu.dev/docs/api-reference/common/Schedule/functions/sequenceSchedules)   | Sequences schedules: runs each until it stops, then continues with the next. |
| [unionSchedules](https://evolu.dev/docs/api-reference/common/Schedule/functions/unionSchedules)         | Combines two schedules with OR semantics.                                    |
| [whenInput](https://evolu.dev/docs/api-reference/common/Schedule/functions/whenInput)                   | Selects between two schedules based on input.                                |

## Constructors

| Name                                                                               | Description                                                                                                              |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| [elapsed](https://evolu.dev/docs/api-reference/common/Schedule/variables/elapsed)               | A schedule that outputs the total elapsed time since the schedule started.                                               |
| [forever](https://evolu.dev/docs/api-reference/common/Schedule/variables/forever)               | A schedule that never stops and has no delay.                                                                            |
| [once](https://evolu.dev/docs/api-reference/common/Schedule/variables/once)                     | A schedule that runs exactly once with no delay.                                                                         |
| [always](https://evolu.dev/docs/api-reference/common/Schedule/functions/always)                 | A schedule that always outputs a constant value.                                                                         |
| [during](https://evolu.dev/docs/api-reference/common/Schedule/functions/during)                 | A schedule that runs for a specified duration then stops.                                                                |
| [exponential](https://evolu.dev/docs/api-reference/common/Schedule/functions/exponential)       | Exponential backoff schedule.                                                                                            |
| [fibonacci](https://evolu.dev/docs/api-reference/common/Schedule/functions/fibonacci)           | Fibonacci backoff schedule.                                                                                              |
| [fixed](https://evolu.dev/docs/api-reference/common/Schedule/functions/fixed)                   | Fixed interval schedule aligned to time windows.                                                                         |
| [fromDelay](https://evolu.dev/docs/api-reference/common/Schedule/functions/fromDelay)           | A schedule that runs once with a single delay.                                                                           |
| [fromDelays](https://evolu.dev/docs/api-reference/common/Schedule/functions/fromDelays)         | A schedule that runs through a sequence of delays.                                                                       |
| [linear](https://evolu.dev/docs/api-reference/common/Schedule/functions/linear)                 | Linear backoff schedule.                                                                                                 |
| [passthrough](https://evolu.dev/docs/api-reference/common/Schedule/functions/passthrough)       | Creates a schedule that outputs its input, or wraps an existing schedule to output input instead of the original output. |
| [recurs](https://evolu.dev/docs/api-reference/common/Schedule/functions/recurs)                 | A schedule that recurs a fixed number of times.                                                                          |
| [spaced](https://evolu.dev/docs/api-reference/common/Schedule/functions/spaced)                 | Constant delay schedule.                                                                                                 |
| [unfoldSchedule](https://evolu.dev/docs/api-reference/common/Schedule/functions/unfoldSchedule) | Creates a schedule by unfolding a state.                                                                                 |
| [windowed](https://evolu.dev/docs/api-reference/common/Schedule/functions/windowed)             | Divides the timeline into fixed windows and sleeps until the next boundary.                                              |

## Limiting

| Function                                                                   | Description                                          |
| -------------------------------------------------------------------------- | ---------------------------------------------------- |
| [maxDelay](https://evolu.dev/docs/api-reference/common/Schedule/functions/maxDelay)     | Caps the delay to a maximum value.                   |
| [maxElapsed](https://evolu.dev/docs/api-reference/common/Schedule/functions/maxElapsed) | Limits schedule execution to a maximum elapsed time. |
| [take](https://evolu.dev/docs/api-reference/common/Schedule/functions/take)             | Limits a schedule to a maximum number of attempts.   |

## Delay

| Function                                                                     | Description                                          |
| ---------------------------------------------------------------------------- | ---------------------------------------------------- |
| [addDelay](https://evolu.dev/docs/api-reference/common/Schedule/functions/addDelay)       | Adds a fixed delay to the schedule's existing delay. |
| [compensate](https://evolu.dev/docs/api-reference/common/Schedule/functions/compensate)   | Adjusts delay by subtracting execution time.         |
| [delayed](https://evolu.dev/docs/api-reference/common/Schedule/functions/delayed)         | Adds an initial delay before the first attempt.      |
| [jitter](https://evolu.dev/docs/api-reference/common/Schedule/functions/jitter)           | Adds randomized jitter to delays.                    |
| [modifyDelay](https://evolu.dev/docs/api-reference/common/Schedule/functions/modifyDelay) | Transforms the delay of a schedule.                  |

## Filtering

| Function                                                                                     | Description                                       |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [untilScheduleInput](https://evolu.dev/docs/api-reference/common/Schedule/functions/untilScheduleInput)   | Continues until the input satisfies a predicate.  |
| [untilScheduleOutput](https://evolu.dev/docs/api-reference/common/Schedule/functions/untilScheduleOutput) | Continues until the output satisfies a predicate. |
| [whileScheduleInput](https://evolu.dev/docs/api-reference/common/Schedule/functions/whileScheduleInput)   | Continues while the input satisfies a predicate.  |
| [whileScheduleOutput](https://evolu.dev/docs/api-reference/common/Schedule/functions/whileScheduleOutput) | Continues while the output satisfies a predicate. |

## State

| Function                                                                                   | Description                                       |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------- |
| [resetScheduleAfter](https://evolu.dev/docs/api-reference/common/Schedule/functions/resetScheduleAfter) | Resets the schedule after a period of inactivity. |

## Transform

| Function                                                                       | Description                                                                                                              |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| [delays](https://evolu.dev/docs/api-reference/common/Schedule/functions/delays)             | Outputs the delay between recurrences.                                                                                   |
| [foldSchedule](https://evolu.dev/docs/api-reference/common/Schedule/functions/foldSchedule) | Folds over the outputs of a schedule, accumulating state.                                                                |
| [mapSchedule](https://evolu.dev/docs/api-reference/common/Schedule/functions/mapSchedule)   | Transforms the output of a schedule.                                                                                     |
| [passthrough](https://evolu.dev/docs/api-reference/common/Schedule/functions/passthrough)   | Creates a schedule that outputs its input, or wraps an existing schedule to output input instead of the original output. |
| [repetitions](https://evolu.dev/docs/api-reference/common/Schedule/functions/repetitions)   | Wraps a schedule to output the number of repetitions instead of original output.                                         |

## Collection

| Function                                                                                                   | Description                                      |
| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [collectAllScheduleOutputs](https://evolu.dev/docs/api-reference/common/Schedule/functions/collectAllScheduleOutputs)   | Collects all outputs into an array.              |
| [collectScheduleInputs](https://evolu.dev/docs/api-reference/common/Schedule/functions/collectScheduleInputs)           | Collects all inputs into an array.               |
| [collectUntilScheduleOutput](https://evolu.dev/docs/api-reference/common/Schedule/functions/collectUntilScheduleOutput) | Collects outputs until a predicate becomes true. |
| [collectWhileScheduleOutput](https://evolu.dev/docs/api-reference/common/Schedule/functions/collectWhileScheduleOutput) | Collects outputs while a predicate is true.      |

## Side effects

| Function                                                                                 | Description                                                            |
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| [tapScheduleInput](https://evolu.dev/docs/api-reference/common/Schedule/functions/tapScheduleInput)   | Executes a side effect for every input without altering the schedule.  |
| [tapScheduleOutput](https://evolu.dev/docs/api-reference/common/Schedule/functions/tapScheduleOutput) | Executes a side effect for every output without altering the schedule. |

## Retry Strategies

| Variable                                                                               | Description                  |
| -------------------------------------------------------------------------------------- | ---------------------------- |
| [retryStrategyAws](https://evolu.dev/docs/api-reference/common/Schedule/variables/retryStrategyAws) | AWS standard retry strategy. |

## Type Aliases

| Type Alias                                                                        | Description                                                                                                                                                                                 |
| --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Schedule](https://evolu.dev/docs/api-reference/common/Schedule/type-aliases/Schedule)         | Composable scheduling strategies for [retry](https://evolu.dev/docs/api-reference/common/Task/functions/retry), [repeat](https://evolu.dev/docs/api-reference/common/Task/functions/repeat), rate limiting, and more. |
| [ScheduleDeps](https://evolu.dev/docs/api-reference/common/Schedule/type-aliases/ScheduleDeps) | Dependencies provided to a [Schedule](https://evolu.dev/docs/api-reference/common/Schedule/type-aliases/Schedule).                                                                                       |