All Projects → Morglod → tsee

Morglod / tsee

Licence: MIT license
Typed EventEmitter implemented with tsargs

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to tsee

events
Tiny type-safe event emitter
Stars: ✭ 25 (+13.64%)
Mutual labels:  events, eventemitter, event-emitter
tiny-typed-emitter
Fully type-checked NodeJS EventEmitter
Stars: ✭ 96 (+336.36%)
Mutual labels:  events, eventemitter, event-emitter
micro-typed-events
The smallest, most convenient typesafe TS event emitter you'll ever need
Stars: ✭ 39 (+77.27%)
Mutual labels:  events, event-listener, event-emitter
VBA-Userform-EventListener
🎉 A very easy way to add event listeners to a userform.
Stars: ✭ 17 (-22.73%)
Mutual labels:  events, eventlistener
telephone-ts
Telephone-ts: The "Event Emitter-less" TypeScript Event Architecture.
Stars: ✭ 22 (+0%)
Mutual labels:  events, event-emitter
node-await-event-emitter
await events library like EventEmitter
Stars: ✭ 19 (-13.64%)
Mutual labels:  events, event-emitter
spa-bus
🔥Tools for multilevel components to pass values in any SPA
Stars: ✭ 15 (-31.82%)
Mutual labels:  events, event-emitter
Eventemitter
Evented JavaScript for the browser
Stars: ✭ 3,107 (+14022.73%)
Mutual labels:  events, eventemitter
Event Dispatcher
The EventDispatcher component provides tools that allow your application components to communicate with each other by dispatching events and listening to them.
Stars: ✭ 7,946 (+36018.18%)
Mutual labels:  events, event-listener
ng2-events
Supercharge your Angular2+ event handling
Stars: ✭ 17 (-22.73%)
Mutual labels:  events, event-listener
EventEmitter
Simple EventEmitter with multiple listeners
Stars: ✭ 19 (-13.64%)
Mutual labels:  events, event-emitter
event-emitter
Event Emitter module for Nest framework (node.js) 🦋
Stars: ✭ 102 (+363.64%)
Mutual labels:  events, event-emitter
transceiver
Channel based event bus with request/reply pattern, using promises. For node & browser.
Stars: ✭ 25 (+13.64%)
Mutual labels:  events, event-listener
keycloak-session-restrictor
Simple event-listener for Keycloak which restricts the current user sessions to one (last one wins) only. Demo purposes only!
Stars: ✭ 48 (+118.18%)
Mutual labels:  events, event-listener
event
📆 Strictly typed event emitter with asynciterator support
Stars: ✭ 30 (+36.36%)
Mutual labels:  events, event-emitter
Mitt
🥊 Tiny 200 byte functional event emitter / pubsub.
Stars: ✭ 6,945 (+31468.18%)
Mutual labels:  event-listener, eventemitter
consolidated-events
Manage multiple event handlers using few event listeners
Stars: ✭ 44 (+100%)
Mutual labels:  events, event-listener
trainmanjs
TrainmanJS - Cross-Origin Communication Library
Stars: ✭ 16 (-27.27%)
Mutual labels:  events, eventemitter
dead-simple
💀💡 Dead simple PubSub and EventEmitter in JavaScript
Stars: ✭ 21 (-4.55%)
Mutual labels:  events, eventemitter
PyDREAM
Python Implementation of Decay Replay Mining (DREAM)
Stars: ✭ 22 (+0%)
Mutual labels:  events

NPM Version NPM Downloads

tsee

Typed EventEmitter implemented with typed args, based on nodejs EventEmitter.
Fully implements NodeJS.EventEmitter type, provides interface & proxy class.

Install & use

npm i tsee

Simple usage:

import { EventEmitter } from 'tsee';

const events = new EventEmitter<{
    foo: (a: number, b: string) => void,
}>();

// foo's arguments is fully type checked
events.emit('foo', 123, 'hello world');

Cast any other compatible to NodeJS.EventEmitter to typed:

import { asTypedEventEmitter } from 'tsee';

const typedEmitter = asTypedEventEmitter<{
    foo: (a: number, b: string) => void,
    boo: (a: number, b: string) => void,
}>(myEmitter);

typedEmitter.emit('foo', 123, 'hello world');

Advenced usage for non default event emitters

If you use custom EventEmitter implementation, you can simply cast it to tsee.IEventEmitter interface:

import { CustomEventEmitter } from 'my-event-emitter';
import * as tsee from 'tsee';

// Simple type case
const typed = new CustomEventEmitter() as any as tsee.IEventEmitter<{ ... }>;

// Functional cast with `NodeJS.EventEmitter` type constraints
const typed = asTypedEventEmitter<{ ... }>(new CustomEventEmitter());

tsee.EventEmitter class is implemented EventEmitter from 'events' package.

Api

EventEmitter<T> where T extends { [eventName]: Call signature }.

EventEmitter.emit's args is fully typed based on events map.

For foo event in example above, signature is: emit(eventName: 'foo', a: number, b: string).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].