UNPKG

sussudio

Version:

An unofficial VS Code Internal API

55 lines (54 loc) 2.35 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { DisposableStore, IDisposable } from "../lifecycle.mjs"; import { IReader, IObservable, IObserver } from "./base.mjs"; export declare function autorun(debugName: string, fn: (reader: IReader) => void): IDisposable; interface IChangeContext { readonly changedObservable: IObservable<any, any>; readonly change: unknown; didChange<T, TChange>(observable: IObservable<T, TChange>): this is { change: TChange; }; } export declare function autorunHandleChanges(debugName: string, options: { /** * Returns if this change should cause a re-run of the autorun. */ handleChange: (context: IChangeContext) => boolean; }, fn: (reader: IReader) => void): IDisposable; export declare function autorunWithStore(fn: (reader: IReader, store: DisposableStore) => void, debugName: string): IDisposable; export declare class AutorunObserver implements IObserver, IReader, IDisposable { readonly debugName: string; private readonly runFn; private readonly _handleChange; needsToRun: boolean; private updateCount; private disposed; /** * The actual dependencies. */ private _dependencies; get dependencies(): Set<IObservable<any, void>>; /** * Dependencies that have to be removed when {@link runFn} ran through. */ private staleDependencies; constructor(debugName: string, runFn: (reader: IReader) => void, _handleChange: ((context: IChangeContext) => boolean) | undefined); subscribeTo<T>(observable: IObservable<T>): void; handleChange<T, TChange>(observable: IObservable<T, TChange>, change: TChange): void; beginUpdate(): void; endUpdate(): void; private runIfNeeded; dispose(): void; toString(): string; } export declare namespace autorun { const Observer: typeof AutorunObserver; } export declare function autorunDelta<T>(name: string, observable: IObservable<T>, handler: (args: { lastValue: T | undefined; newValue: T; }) => void): IDisposable; export {};