@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
88 lines (87 loc) • 2.78 kB
TypeScript
/**
* An object that is disposable.
*/
export interface Disposable {
/**
* A function called on the object when it is disposed.
*/
dispose(): void;
}
export declare type ActionOrDisposable = MsftSme.Action | Disposable;
export interface RegisterForDisposeFunction {
(disposables: ActionOrDisposable[]): LifetimeManagerBase;
(disposable: ActionOrDisposable): LifetimeManagerBase;
}
/**
* An object that can limit the lifetime of other objects. When a LifetimeManager object
* is disposed, it will dispose all other objects that were registered for disposal.
*/
export interface LifetimeManagerBase {
/**
* Registers an object to be disposed. It will throw if the object doesn't have dispose method.
*
* @param disposable An object to be disposed once the LifetimeManager object itself is disposed.
*/
registerForDispose: RegisterForDisposeFunction;
}
export interface LifetimeManager extends LifetimeManagerBase {
/**
* Create a createChildLifetime to localize the LifetimeManager.
* It will provide the function on tracking who create it and when it dispose,
* it will remove itself from Container's lifetimeManager
*/
createChildLifetime(): DisposableLifetimeManager;
}
export interface DisposableLifetimeManager extends Disposable, LifetimeManager {
/**
* A value indicating whether or not the lifetime is disposed.
*/
isDisposed(): boolean;
}
/**
* An object that tracks and invokes disposal callbacks. This can be used
* in other classes that wish to implement LifetimeManager.
*/
export declare class TriggerableLifetimeManager implements DisposableLifetimeManager {
private disposables;
private isDisposedInternal;
private isDisposing;
private container;
private children;
/**
* Gets a value indicating whether or not the lifetime is disposed.
*/
isDisposed(): boolean;
/**
* See interface.
*/
registerForDispose(disposable: any): TriggerableLifetimeManager;
/**
* See interface.
*/
createChildLifetime(): DisposableLifetimeManager;
/**
* Causes the instance to regard itself as disposed, and to trigger any
* callbacks that were already registered.
*/
dispose(): void;
private unregisterChildForDispose;
private isRegistered;
private registerForDisposeInternal;
}
/**
* Auto disposer class used with lifetime manager.
*/
export declare class Disposer implements Disposable {
private callback;
/**
* Initializes a new instance of the Disposer class.
*
* @param callback the callback function.
*/
constructor(callback: () => void);
/**
* dispose function called when lifetime is gone.
*/
dispose(): void;
}