UNPKG

sub-events

Version:

Lightweight, strongly-typed events, with monitored subscriptions.

98 lines (69 loc) 2.74 kB
# Strongly-Typed Events [![Build Status](https://github.com/vitaly-t/sub-events/actions/workflows/ci.yml/badge.svg)](https://github.com/vitaly-t/sub-events/actions/workflows/ci.yml) Lightweight, strongly-typed events, with monitored subscriptions. * Documentation: [API] + [WiKi]. * Compatible with all existing events - see [Extras]. ## Install ```sh npm i sub-events ``` ## Usage * On event-provider side: ```ts 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: ```ts // 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: ```ts 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: ```html <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. [Extras]:https://github.com/vitaly-t/sub-events/tree/master/extras [API]:https://vitaly-t.github.io/sub-events [WiKi]:https://github.com/vitaly-t/sub-events/wiki [Subscription]:https://vitaly-t.github.io/sub-events/classes/Subscription.html [subscribe]:https://vitaly-t.github.io/sub-events/classes/SubEvent.html#subscribe [cancel]:https://vitaly-t.github.io/sub-events/classes/Subscription.html#cancel [emit]:https://vitaly-t.github.io/sub-events/classes/SubEvent.html#emit [onCount]:https://vitaly-t.github.io/sub-events/classes/SubEventCount.html#onCount [Extras]:./extras [SubEvent]:https://vitaly-t.github.io/sub-events/classes/SubEvent.html [SubEventCount]:https://vitaly-t.github.io/sub-events/classes/SubEventCount.html