API reference@evolu/commonTask › map

Call Signature

function map<A, T, E, D>(
  items: Iterable<A>,
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<readonly T[], E, D>;

Defined in: packages/common/src/Task.ts:3274

Maps values to Tasks, failing fast on first error.

Sequential by default — use concurrently for concurrent execution.

Example

const result = await run(map(userIds, fetchUser));
if (!result.ok) return result;
// result.value: ReadonlyArray<User>

See

CollectOptions

Call Signature

function map<A, T, E, D, K>(
  items: Readonly<Record<K, A>>,
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<Readonly<Record<K, T>>, E, D>;

Defined in: packages/common/src/Task.ts:3289

Returns object with same keys.

const result = await run(map({ a: 1, b: 2 }, (n) => double(n)));
if (!result.ok) return result;
// result.value: { a: number, b: number }

Call Signature

function map<A, T, E, D>(
  items: readonly [A, A],
  task: (a: A) => Task<T, E, D>,
  options?: CollectOptions<true>,
): Task<readonly [T, T], E, D>;

Defined in: packages/common/src/Task.ts:3305

Guarantees non-empty result.

const ids: NonEmptyReadonlyArray<UserId> = [id1, id2];
const result = await run(map(ids, fetchUser));
if (!result.ok) return result;
// result.value: NonEmptyReadonlyArray<User>

Call Signature

function map<A, T, E, D>(
  items: Iterable<A, any, any> | Readonly<Record<string, A>>,
  task: (a: A) => Task<T, E, D>,
  options: CollectOptions<false>,
): Task<void, E, D>;

Defined in: packages/common/src/Task.ts:3319

Run for side effects only.

const result = await run(map(userIds, sendEmail, { collect: false }));
// result.value: void