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