API reference › @evolu/common › Resource › createSharedResourceByKey

Call Signature

function createSharedResourceByKey<
  K = unknown,
  T extends Resource = Resource,
  D = unknown,
>(
  create: (key: K) => Task<T, never, D>,
): Task<SharedResourceByKey<K, T>, never, D>;

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

Creates SharedResourceByKey.

The create callback returns a Task scoped to one key. The returned Task must not fail, matching createSharedResource.

Create each resource with disposable when its shape supports it. The same disposal-guard recommendation as createSharedResource applies.

The returned Task must not directly or transitively acquire the same logical key or call forEachCurrent on this registry. Same-key acquisition is non-reentrant, and forEachCurrent attempts to acquire every registered key. Different keys remain independent.

Like createSharedResource, dependencies are captured when the registry is created; dependencies provided to later acquire calls do not change what the returned Task observes.

Call Signature

function createSharedResourceByKey<K, T extends Resource, D, L = K>(
  create: (key: K) => Task<T, never, D>,
  options: SharedResourceByKeyOptions<K, L>,
): Task<SharedResourceByKey<K, T>, never, D>;

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

Creates SharedResourceByKey with lookup or lifecycle options.