@sussudio/base
Version:
Internal APIs for VS Code's utilities and user interface building blocks.
34 lines (32 loc) • 1.35 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IReader, IObservable, BaseObservable, IObserver } from './base.mjs';
export declare function derived<T>(
debugName: string | (() => string),
computeFn: (reader: IReader) => T,
): IObservable<T>;
export declare class Derived<T> extends BaseObservable<T, void> implements IReader, IObserver {
private readonly _debugName;
private readonly computeFn;
private hadValue;
private hasValue;
private value;
private updateCount;
private _dependencies;
get dependencies(): ReadonlySet<IObservable<any>>;
/**
* Dependencies that have to be removed when {@link runFn} ran through.
*/
private staleDependencies;
get debugName(): string;
constructor(_debugName: string | (() => string), computeFn: (reader: IReader) => T);
protected onLastObserverRemoved(): void;
get(): T;
beginUpdate(): void;
handleChange<T, TChange>(_observable: IObservable<T, TChange>, _change: TChange): void;
endUpdate(): void;
subscribeTo<T>(observable: IObservable<T>): void;
toString(): string;
}