@guanghechen/disposable
v2.0.0
Published
<header> <h1 align="center"> <a href="https://github.com/guanghechen/sora/tree/@guanghechen/[email protected]/packages/disposable#readme">@guanghechen/disposable</a> </h1> <div align="center"> <a href="https://www.npmjs.com/package/@guanghech
Downloads
462
Readme
Disposable pattern implementation for resource cleanup and memory management.
Install
npm
npm install --save @guanghechen/disposableyarn
yarn add @guanghechen/disposable
Usage
| Name | Description |
| :----------------: | :-------------------------------------------------------: |
| Disposable | Single disposable resource with cleanup callback |
| BatchDisposable | Batch disposable for managing multiple resources |
| disposeAll | Utility to dispose all disposable items |
| isDisposable | Type guard to check if object is disposable |
Example
Basic disposable:
import { Disposable } from '@guanghechen/disposable' const resource = new Disposable(() => { console.log('Resource cleaned up!') }) console.log(resource.disposed) // false resource.dispose() console.log(resource.disposed) // true // Output: "Resource cleaned up!"Batch disposable:
import { BatchDisposable, Disposable } from '@guanghechen/disposable' const batch = new BatchDisposable() const resource1 = new Disposable(() => console.log('Resource 1 disposed')) const resource2 = new Disposable(() => console.log('Resource 2 disposed')) batch.registerDisposable(resource1) batch.registerDisposable(resource2) batch.dispose() // Output: "Resource 1 disposed" // Output: "Resource 2 disposed"Utility functions:
import { disposeAll, isDisposable } from '@guanghechen/disposable' const items = [ new Disposable(() => console.log('Disposed 1')), new Disposable(() => console.log('Disposed 2')), 'not disposable' ] items.forEach(item => { if (isDisposable(item)) { console.log('Item is disposable') } }) disposeAll(items) // Disposes all disposable items in the array
