Package Exports
- evnty
Readme
Evnty
0-Deps, simple, fast, for browser and node js anonymous event library.
Table of Contents
Features
- Supports ESM and CommonJS
- Promises support
- Full-featured typeScript support
- Browser & Workers environment compatibility
- Performance eventemitter3/eventemitter2/event-emitter/events/native node/native browser
Roadmap
- Namespaces/Wildcards
- Times To Listen (TTL)
- Subscribe/UnSubscribe
Browser Support
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|
Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |
Installing
Using yarn:
yarn add evnty
Using npm:
npm install evnty
Interface
type Unsubscribe = () => void;
type Listener = (...args: any[]) => void;
type Dispose = () => void;
type Filter = (...args: any[]) => boolean;
type Mapper = <T = any>(...args: any[]) => T;
type Reducer = <T = any>(value: any, ...args: any[]) => T;
class Dismiss {
async after(process: () => MaybePromise<any>): Promise<void>;
afterTimes(count: number): () => void;
}
class Event {
// Merges multiple events
static merge(...events: Event[]): Event;
// Emits event by interval
static interval(interval: number): Event;
readonly size: Number;
constructor(dispose?: Dispose);
lacks(listener: Listener): boolean;
has(listener: Listener): boolean;
off(listener: Listener): void;
on(listener: Listener): Dismiss;
once(listener: Listener): Dismiss;
clear(): void;
toPromise(): Promise<any[]>;
filter(filter: Filter): Event;
map(mapper: Mapper): Event;
reduce(reducer: Reducer, init: any): Event;
dispose(): Dispose;
}
Usage
import event, { once } from 'evnty';
const handleClick = ({ button }) => console.log('Clicked button is', button);
const clickEvent = event();
const unsubscribeClick = clickEvent.on(handleClick);
const keyPressEvent = event();
const handleKeyPress = ({ key }) => console.log('Key pressed', key);
const unsubscribeKeyPress = keyPressEvent.on(handleKeyPress);
const handleInput = ({ button, key }) => {};
const inputEvent = Event.merge(clickEvent, keyPressEvent);
inputEvent.on(handleInput);
const handleLeftClick = () => console.log('Left button is clicked');
const leftClickEvent = clickEvent.filter(({ button }) => button === 'left');
leftClickEvent.on(handleLeftClick);
setTimeout(() => keyPressEvent, 100, 'Enter');
await once(keyPressEvent);
keyPressEvent({ key: 'W' });
keyPressEvent({ key: 'A' });
keyPressEvent({ key: 'S' });
keyPressEvent({ key: 'D' });
clickEvent({ button: 'right' });
clickEvent({ button: 'left' });
clickEvent({ button: 'middle' });
unsubscribeClick();
unsubscribeKeyPress.after(() => once(keyPressEvent));
leftClickEvent.off(handleLeftClick);
keyPressEvent({ key: 'Esc' });
License
License Apache-2.0 Copyright (c) 2021-present Ivan Zakharchanka