API reference@evolu/commonResource › createSharedResource

function createSharedResource<T, D>(
  create: Task<T, never, D>,
  __namedParameters?: SharedResourceOptions,
): Task<SharedResource<T>, never, D>;

Defined in: packages/common/src/Resource.ts:324

Creates SharedResource.

The create Task must not fail. Creation establishes shared resource state and may serve multiple concurrent acquirers, so a recoverable failure does not belong to one lease. Handle recoverable failures inside create: retry until creation succeeds (for example with a Schedule), or return a resource whose state models connection and reconnection failures.

A successfully returned resource must be live and independently owned. The create Task must not bind its disposal to that Task's DisposableRun with defer.

Create resources with disposable when their shape supports it. Its disposal guard makes calls through a lease fail eagerly after resource disposal instead of operating on disposed state.

The create Task runs while acquisition is locked and must not directly or transitively acquire from the same SharedResource. The lock is non-reentrant, so doing so deadlocks.

Internal work runs on a Run created from the Run that executes this Task, so dependencies are captured at creation time. Deps provided to later acquire calls do not change what create observes.

Lifecycle callbacks must not throw. A throwing onDisposed is a defect that panics the Run tree.