API reference@evolu/commonTask › SemaphoreByKey

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

A keyed Semaphore registry.

Provides semaphore operations per key while preserving the same API shape as Semaphore.

By default, createSemaphoreByKey uses reference identity for keys, matching native Map. Callers may instead provide a lookup so logical equality is based on a derived stable key.

Extends

Methods

[dispose]()

dispose: void;

Defined in: node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts:36

Inherited from

Disposable.[dispose]

Properties

snapshot

readonly snapshot: (key: K) =>
  | SemaphoreSnapshot
  | null;

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

Returns current semaphore state for a key, or null if absent.

withPermit

readonly withPermit: <T, E, D>(key: K, task: Task<T, E, D>) => Task<T, E, D>;

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

Executes a Task while holding one permit for a specific key.

Behaves like Semaphore.withPermit, scoped to key.

withPermits

readonly withPermits: <T, E, D>(key: K, permits: Concurrency) => (task: Task<T, E, D>) => Task<T, E, D>;

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

Executes a Task while holding permits for a specific key.

Behaves like Semaphore.withPermits, scoped to key.