@freemework/common
Version:
Common library of the Freemework Project.
58 lines (57 loc) • 2.12 kB
TypeScript
import { FDisposable } from "./f_disposable.js";
import { FExecutionContext } from "../execution_context/f_execution_context.js";
import "./tc39.js";
export declare abstract class FInitable extends FDisposable {
abstract init(executionContext: FExecutionContext): Promise<void>;
static initAll(executionContext: FExecutionContext, ...instances: ReadonlyArray<FInitable>): Promise<void>;
static instanceOf(test: unknown): test is FInitable;
}
export declare abstract class FInitableBase extends FInitable {
private _initialized?;
private _initializingPromise?;
private _disposed?;
private _disposingPromise?;
private _initExecutionContext;
get initialized(): boolean;
get initializing(): boolean;
get disposed(): boolean;
get disposing(): boolean;
constructor();
init(executionContext: FExecutionContext): Promise<void>;
dispose(): Promise<void>;
/**
* @remark Defined as property to be able to use inside dispose()
*/
protected get initExecutionContext(): FExecutionContext;
/**
* Override this method to insert own logic at initialize phase
*
* Note: this.initExecutionContext may be used here
*/
protected abstract onInit(): void | Promise<void>;
/**
* Override this method to insert own logic at disposing phase
*
* Note: this.initExecutionContext may be used here
*/
protected abstract onDispose(): void | Promise<void>;
protected verifyInitialized(): void;
protected verifyNotDisposed(): void;
protected verifyInitializedAndNotDisposed(): void;
}
export declare class FInitableMixin extends FInitableBase {
static applyMixin(targetClass: any): void;
/**
* Override this method to insert own logic at initialize phase
*
* Note: this.initExecutionContext may be used here
*/
protected onInit(): void | Promise<void>;
/**
* Override this method to insert own logic at disposing phase
*
* Note: this.initExecutionContext may be used here
*/
protected onDispose(): void | Promise<void>;
private constructor();
}