@freemework/common
Version:
Common library of the Freemework Project.
17 lines (16 loc) • 1.32 kB
TypeScript
import { FDisposable } from "./f_disposable.js";
import { FInitable } from "./f_initable.js";
import { FExecutionContext } from "../execution_context/f_execution_context.js";
export declare namespace FUsing {
type ResourceInitializerWithExecutionContext<T> = (executionContext: FExecutionContext) => T | Promise<T>;
type ResourceInitializerWithoutExecutionContext<T> = () => T | Promise<T>;
type ResourceInitializer<T> = ResourceInitializerWithExecutionContext<T> | ResourceInitializerWithoutExecutionContext<T>;
type WorkerWithExecutionContext<TResource, TResult> = (executionContext: FExecutionContext, resource: TResource) => Result<TResult>;
type WorkerWithoutExecutionContext<TResource, TResult> = (resource: TResource) => Result<TResult>;
type Worker<TResource, TResult> = WorkerWithExecutionContext<TResource, TResult> | WorkerWithoutExecutionContext<TResource, TResult>;
type Result<T> = T | Promise<T>;
}
/**
* @deprecated Use TypeScript 5.2 introduces a new keyword - 'using'. See https://github.com/tc39/proposal-explicit-resource-management
*/
export declare function FUsing<TResource extends FInitable | FDisposable, TResult>(executionContext: FExecutionContext, resourceFactory: FUsing.ResourceInitializer<TResource>, worker: FUsing.Worker<TResource, TResult>): Promise<TResult>;