Skip to main content

lib/disposable

Disposable pattern for resource cleanup, similar to VSCode's IDisposable pattern.

Example

import { DisposableStore, toDisposable } from "@core/disposable";
 
const disposables = new DisposableStore();
 
// Add disposables from event subscriptions
disposables.add(someEvent.on(() => { ... }));
 
// Add custom cleanup logic
disposables.add(toDisposable(() => {
    clearInterval(myTimer);
}));
 
// Create nested stores for features that can be enabled/disabled
const featureStore = disposables.createChild();
featureStore.add(someFeatureEvent.on(() => { ... }));
// featureStore is automatically disposed when parent is disposed
 
// Clean up everything
disposables.dispose();

Classes

ClassDescription
DisposableStoreA container that manages multiple disposables. Useful for collecting event subscriptions and other cleanup tasks in a module. Supports nesting: a DisposableStore can be added to another DisposableStore.

Interfaces

InterfaceDescription
IDisposableRepresents a resource that can be disposed/cleaned up. Extends TypeScript's built-in Disposable for using declaration support.

Functions

FunctionDescription
toDisposableCreates a disposable from a dispose function. Returns an object that implements IDisposable (which extends native Disposable).