Launch Week Day 2: Introducing Reports: An Extensible Reporting Framework for Socket Data.Learn More
Socket
Book a DemoSign in
Socket

@vates/disposable

Package Overview
Dependencies
Maintainers
12
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@vates/disposable

Utilities for disposables

latest
Source
npmnpm
Version
0.1.6
Version published
Maintainers
12
Created
Source

@vates/disposable

Package Version License PackagePhobia Node compatibility

Utilities for disposables

Install

Installation of the npm package:

npm install --save @vates/disposable

Usage

This library contains utilities for disposables as defined by the promise-toolbox library.

deduped(fn, keyFn)

Creates a new function that wraps fn and instead of creating a new disposables at each call, returns copies of the same one when keyFn returns the same keys.

Those copies contains the same value and can be disposed independently, the source disposable will only be disposed when all copies are disposed.

keyFn is called with the same context and arguments as the wrapping function and must returns an array of keys which will be used to identify which disposables should be grouped together.

import { deduped } from '@vates/disposable/deduped'

// the connection with the passed host will be established once at the first call, then, it will be shared with the next calls
const getConnection = deduped(async function (host)) {
  const connection = new Connection(host)
  return new Disposabe(connection, () => connection.close())
}, host => [host])

debounceResource(disposable, delay)

Creates a new disposable with the same value and with a delayed disposer.

On calling this disposer, the source disposable will be disposed when the delay is passed.

import { createDebounceResource } from '@vates/disposable/debounceResource'

const debounceResource = createDebounceResource()

// it will wait for 10 seconds before calling the disposer
Disposable.use(debounceResource(getConnection(host), 10e3), connection => {})

debounceResource.flushAll()

Disposes all delayed disposers and cancels the delaying of the disposables that are in usage.

import { createDebounceResource } from '@vates/disposable/debounceResource'

const debounceResource = createDebounceResource()

const res1 = await debounceResource(res, 10e3)
const res2 = await debounceResource(res, 10e3)
const res3 = await debounceResource(res, 10e3)

rest1.dispose()
rest2.dispose()
// res3 is in usage

debounceResource.flushAll()
// res1 and res2 are immediately disposed
// res3 will be disposed immediately when its disposer will be called

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

ISC © Vates SAS

FAQs

Package last updated on 28 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts