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

## Call Signature

```ts
function passthrough<A>(): Schedule<A, A>;
```

Defined in: [packages/common/src/Schedule.ts:1451](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Schedule.ts#L1451)

Creates a schedule that outputs its input, or wraps an existing schedule to
output input instead of the original output.

When called with no arguments, creates a schedule that outputs its input
directly (the "identity" schedule). When called with a schedule, wraps it to
preserve timing behavior but replace output with input.

### Passing through input

```ts
import {
  assertEqual,
  assertOk,
  assertType,
  Data,
  exponential,
  passthrough,
  testCreateDeps,
} from "@evolu/common";

interface MyError {
  readonly message: string;
}

// Constructor form emits input immediately; combinator form keeps timing.
const identity = passthrough<MyError>();
const withInput = passthrough(exponential("100ms"));
const error = { message: "Unavailable" };
const deps = testCreateDeps();

const identityResult = identity(deps)(error);
assertOk(identityResult);
assertType(Data, identityResult.value);
assertEqual(identityResult.value, [error, 0]);

const inputResult = withInput(deps)(error);
assertOk(inputResult);
assertType(Data, inputResult.value);
const inputValue: Data = inputResult.value;
assertEqual(inputValue, [error, 100]);
```

## Call Signature

```ts
function passthrough<Output, Input>(
  schedule: Schedule<Output, Input>,
): Schedule<Input, Input>;
```

Defined in: [packages/common/src/Schedule.ts:1453](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Schedule.ts#L1453)