2.0.4 • Published 6 months ago

eventin v2.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

eventin version license npm.io

Strongly-typed event emitter.

Install & Usage

npm install eventin
import Eventin from 'eventin';

enum EventType {
  OPEN = 'open',
  CLOSE = 'close',
  TOGGLE = 'toggle',
}

const e = new Eventin<
  EventType,
  {
    [EventType.OPEN]: { id: string };
    [EventType.CLOSE]: { source: number };
    [EventType.TOGGLE]: boolean;
  }
>();

const unlisten = e.listen(EventType.OPEN, ({ id }) => console.log(id));
const unlisten = e.listen(EventType.OPEN, ({ source }) => console.log(source)); // it will throw typescript error

e.emit(EventType.OPEN, { id: 'eventin' });
e.emit(EventType.OPEN, 123); // it will throw typescript error

/** listen once */
const unlisten = e.listen(EventType.OPEN, ({ id }) => console.log(id), {
  once: true,
});

/** trigger listener synchronously */
e.emit(EventType.OPEN, { id: 'eventin' }, { sync: true });

/** unlistenAll */
e.unlistenAll(EventType.OPEN);
e.unlistenAll();

Also you can use e.unlisten to remove a listener:

import Eventin, { Listener } from 'eventin';

enum EventType {
  OPEN = 'open',
  CLOSE = 'close',
  TOGGLE = 'toggle',
}
type EventTypeMapData = {
  [EventType.OPEN]: { id: string };
  [EventType.CLOSE]: { source: number };
  [EventType.TOGGLE]: boolean;
};
const e = new Eventin<EventType, EventTypeMapData>();

// (data: { id: string }) => void
type OpenListener = Listener<EventType, EventTypeMapData, EventType.OPEN>;

const openListener: OpenListener = (data) => console.log(data);
e.listen(EventType.OPEN, openListener);
e.unlisten(EventType.OPEN, openListener);

License

MIT

2.0.3

6 months ago

2.0.2

6 months ago

2.0.4

6 months ago

2.0.1

6 months ago

2.0.0

6 months ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago