se
sub-events
npm i sub-events
se

sub-events

Lightweight, strongly-typed events, with monitored subscriptions.

by Vitaly Tomilov

1.9.0 (see all)License:MITTypeScript:Built-In
npm i sub-events
Readme

Strongly-Typed Events

Lightweight, strongly-typed events, with monitored subscriptions.

  • Documentation: API + WiKi.
  • Compatible with all existing events - see Extras.

Install

npm i sub-events

Usage

  • On event-provider side:
import {SubEvent} from 'sub-events';

// creating a strongly-typed event: 
const e: SubEvent<string> = new SubEvent();

// triggering the event when needed:
e.emit('hello');

API: SubEvent, emit

  • On event-consumer side:
// subscribing to the event:
const sub = e.subscribe((data: string) => {
  // data = 'hello'
});

// cancel the subscription when no longer needed:
sub.cancel();

API: Subscription, subscribe, cancel

Monitoring Subscriptions

Class SubEventCount extends SubEvent with event onCount, to observe the number of subscriptions:

import {SubEventCount, ISubCountChange} from 'sub-events';

// creating a strongly-typed event:
const e: SubEventCount<string> = new SubEventCount();

e.onCount.subscribe((info: ISubCountChange) => {
    // number of subscriptions has changed;
    // info = {newCount, prevCount} 
});

// any subscription will trigger event onCount:
const sub = e.subscribe(data => {});

// cancelling a subscription will trigger onCount:
sub.cancel();

API: SubEventCount, onCount

Browser

When including directly from HTML, you can access all types under subEvents namespace:

<script src="./node_modules/sub-events/dist"></script>
<script>
    const e = new subEvents.SubEvent();
    e.subscribe(data => {
        // data received
    });
</script>

Note that pre-built script includes only the core library, without the Extras, which you can bundle yourself as needed.

Downloads/wk

2.8K

GitHub Stars

30

LAST COMMIT

2yrs ago

MAINTAINERS

1

CONTRIBUTORS

2

OPEN ISSUES

0

OPEN PRs

0
VersionTagPublished
1.9.0
latest
2mos ago
1.9.0-beta.5
beta
3yrs ago
No alternatives found
No tutorials found
Add a tutorial
No dependencies found

Rate & Review

100
No reviews found
Be the first to rate