UNPKG

@freemework/common

Version:

Common library of the Freemework Project.

17 lines (16 loc) 1.32 kB
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>;