mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-11-03 14:58:18 +00:00
17 lines
709 B
TypeScript
17 lines
709 B
TypeScript
import { withOwnedResource, type DisposableResource } from "octagonal-wheels/resource";
|
|
|
|
/**
|
|
* Run a finite operation with a flow-owned remote resource and release it
|
|
* after either success or failure.
|
|
*
|
|
* Resource implementations make `dispose()` idempotent. This helper makes the
|
|
* caller's ownership boundary explicit and prevents finite flows from leaking
|
|
* a provider-owned resource when their operation rejects.
|
|
*/
|
|
export function withOwnedRemoteResource<TResource extends DisposableResource & { dispose(): Promise<void> }, TResult>(
|
|
resource: TResource,
|
|
operation: (ownedResource: TResource) => Promise<TResult>
|
|
): Promise<TResult> {
|
|
return withOwnedResource(resource, operation);
|
|
}
|