# @mangar2/callbacks

> provides functions to register and call callbacks

Latest version **1.1.1** (published 2020-12-09) · LGPL-3.0-or-later license · 0 weekly downloads

## Install

```sh
npm install @mangar2/callbacks
pnpm add @mangar2/callbacks
yarn add @mangar2/callbacks
bun add @mangar2/callbacks
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2020-12-09 |
| First published | 2020-01-11 |
| Weekly downloads | 0 |
| License | LGPL-3.0-or-later |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 9.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Volker Böhm |
| Maintainers | mangar2 |
| Keywords | callback, on |

## Links

- npm: https://www.npmjs.com/package/@mangar2/callbacks
- Repository: https://github.com/Mangar2/yaha/tree/master/node_modules/@mangar2/callbacks
- Homepage: https://github.com/Mangar2/yaha.git
- npm.io page: https://npm.io/package/@mangar2/callbacks

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.1.1 (latest) — 2020-12-09
- 1.1.0 — 2020-02-15
- 1.0.0 — 2020-01-11

## README

<!-- This file is generated by jsmddoc version 0.1 -->

# Abstract

This module provides a class to manage callbacks . Use it in Classes to support setting callbacks .

## Contents

- [Meta](#Meta)
- [Class Callbacks](#Class-Callbacks)
  - [Parameters](#Callbacks-Parameters)
  - [Methods](#Callbacks-Methods)
    - [hasCallback](#hasCallback)
    - [invokeCallback](#invokeCallback)
    - [invokeCallbackAsync](#invokeCallbackAsync)
    - [on](#on)

## Meta

| | |
| --- | --- |
| **File** | callbacks.js |
| **Abstract** | This module provides a class to manage callbacks . Use it in Classes to support setting callbacks . |
| **Author** | Volker Böhm |
| **Copyright** | Copyright ( c ) 2020 Volker Böhm |
| **License** | This software is licensed under the GNU LESSER GENERAL PUBLIC LICENSE Version 3 . It is furnished "as is" , without any support , and with no warranty , express or implied , as to its usefulness for any purpose . |

## Class Callbacks

`new Callbacks(supportedEvents)`

Creates a callback manager to manage callbacks and safely call them

### Example

```javascript
callbacks = new Callbacks(['publish'])
// register a callback
callbacks.on('publish', (param) => { console.log('called publish with ' + param) })
// invoke a callback
callbacks.invokeCallback('publish', 'a parameter')
```

### Callbacks Parameters

| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| `supportedEvents` | `Array.<string>` | Names of supported callbacks ( if undefined or null , all callbacks are allowed ) . Use this to prevent a user from registering callbacks with "on" that are not used by your class . | |

### Callbacks Methods

#### hasCallback

`hasCallback (name) => {boolean}`

Checks , if a callback is registered

##### hasCallback Parameters

| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| `name` | `string` | name of the callback to look for | |

##### hasCallback returns

| Type | Description |
| ---- | ----------- |
| `boolean` | true , if the callback is registered |

#### invokeCallback

`invokeCallback (event, param) => {any}`

Calles a callback stored to an event , if registered

##### invokeCallback Parameters

| Name | Type | Attribute | Description |
| ---------- | ------------ | ------------ | ----------------- |
| `event` | `string` |  | event name ( not case sensitive ) for callback | |
| `param` | `any` | repeatable | parameters to pass to the callback | |

##### invokeCallback returns

| Type | Description |
| ---- | ----------- |
| `any` | the result of the callback or null , if the callback is not defined |

#### invokeCallbackAsync

`async invokeCallbackAsync (event, param) => {any}`

Callcs a callback stored to an event , if registered . It is the async version

##### invokeCallbackAsync Parameters

| Name | Type | Attribute | Description |
| ---------- | ------------ | ------------ | ----------------- |
| `event` | `string` |  | event name ( not case sensitive ) for callback | |
| `param` | `any` | repeatable | parameters to pass to the callback | |

##### invokeCallbackAsync returns

| Type | Description |
| ---- | ----------- |
| `any` | the result of the callback or null , if the callback is not defined |

#### on

`on (event, callback)`

Sets a callback .

##### on Parameters

| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| `event` | `string` | event name ( not case sensitive ) for the callback | |
| `callback` | `function` | function ( . . . parameter ) | |

##### on throws

| Type | Description |
| ---- | ----------- |
| `Error` | if the event is not supported |
| `Error` | if the callback is not 'function' |

---
_Source: https://npm.io/package/@mangar2/callbacks · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
