0.3.0 • Published 16 days ago

extra-defer v0.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
16 days ago

extra-defer

Install

npm install --save extra-defer
# or
yarn add extra-defer

Usage

import { Destructor } from 'extra-defer'

const d = new Destructor()
try {
  const handle = open()
  d.defer(() => handle.close())
  // ...
} finally {
  await d.execute()
}

API

Constructor

class Constructor {
  get size(): number

  defer(callback: () => Awaitable<unknown>): void
  remove(callback: () => Awaitable<unknown>): void

  execute(): Promise<void>
  executeSettled(): Promise<void>

  all(concurrency: number = Infinity): Promise<void>
  allSettled(concurrency: number = Infinity): Promise<void>
}

Callbacks are executed in same order of defer.

Destructor

class Destructor {
  get size(): number

  defer(callback: () => Awaitable<unknown>): void
  remove(callback: () => Awaitable<unknown>): void

  execute(): Promise<void>
  executeSettled(): Promise<void>

  all(concurrency: number = Infinity): Promise<void>
  allSettled(concurrency: number = Infinity): Promise<void>
}

Callbacks are executed in reverse order of defer.

SyncConstructor

class SyncConstructor {
  get size(): number

  defer(callback: () => unknown): void
  remove(callback: () => unknown): void

  execute(): void
  executeSettled(): void
}

Callbacks are executed in same order of defer.

SyncDestructor

class SyncDestructor {
  get size(): number

  defer(callback: () => unknown): void
  remove(callback: () => unknown): void

  execute(): void
  executeSettled(): void
}

Callbacks are executed in reverse order of defer.

GeneratorConstructor

type ICallback<Yield, Next> = () =>
| void
| Generator<Yield, void, Next>

class GeneratorConstructor<Yield = unknown, Next = unknown> extends GeneratorExecutor<Yield, Next> {
  get size(): number

  defer(callback: ICallback<Yield, Next>): void
  remove(callback: ICallback<Yield, Next>): void

  execute(): Generator<Yield, void, Next>
  executeSettled(): Generator<Yield, void, Next>
}

Callbacks are executed in same order of defer.

GeneratorDestructor

type ICallback<Yield, Next> = () =>
| void
| Generator<Yield, void, Next>

class GeneratorDestructor<Yield = unknown, Next = unknown> extends GeneratorExecutor<Yield, Next> {
  get size(): number

  defer(callback: ICallback<Yield, Next>): void
  remove(callback: ICallback<Yield, Next>): void

  execute(): Generator<Yield, void, Next>
  executeSettled(): Generator<Yield, void, Next>
}

Callbacks are executed in reverse order of defer.

AsyncGeneratorConstructor

type ICallback<Yield, Next> = () =>
| void
| Generator<Yield, void, Next>
| AsyncGenerator<Yield, void, Next>

class AsyncGeneratorConstructor<Yield = unknown, Next = unknown> extends AsyncGeneratorExecutor<Yield, Next> {
  get size(): number

  defer(callback: ICallback<Yield, Next>): void
  remove(callback: ICallback<Yield, Next>): void

  execute(): AsyncGenerator<Yield, void, Next>
  executeSettled(): AsyncGenerator<Yield, void, Next>
}

Callbacks are executed in same order of defer.

AsyncGeneratorDestructor

type ICallback<Yield, Next> = () =>
| void
| Generator<Yield, void, Next>
| AsyncGenerator<Yield, void, Next>

class AsyncGeneratorDestructor<Yield = unknown, Next = unknown> extends AsyncGeneratorExecutor<Yield, Next> {
  get size(): number

  defer(callback: ICallback<Yield, Next>): void
  remove(callback: ICallback<Yield, Next>): void

  execute(): AsyncGenerator<Yield, void, Next>
  executeSettled(): AsyncGenerator<Yield, void, Next>
}

Callbacks are executed in reverse order of defer.

0.3.0

16 days ago

0.2.8

11 months ago

0.2.7

1 year ago

0.2.6

1 year ago

0.2.5

2 years ago

0.2.3

2 years ago

0.2.4

2 years ago

0.2.1

2 years ago

0.2.2

2 years ago

0.2.0

2 years ago