UNPKG

@freemework/common

Version:

Common library of the Freemework Project.

58 lines (57 loc) 2.12 kB
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(); }