API reference › @evolu/common › Task › 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.