@nichoth/events v3.2.0
events
An extra minimal event emitter
featuring
- 0 production dependencies
- CJS and ESM versions
- 637 bytes minified and gzipped
install
npm i -S @nichoth/eventsexample
You can pass in an array of valid event names. If you subscribe to or emit an
event not in the list, this will throw a runtime error. Also, you can create
a typed event bus because Bus takes a type argument.
create an event bus, with types
import { Bus } from '@nichoth/events'
const eventTree = Bus.createEvents({
a: ['b', 'c', 'd'],
b: {
_: ['e', 'f'],
c: ['1', '2', '3']
}
})
const events = Bus.flatten(eventTree)
const bus = new Bus<Array<typeof events[number]>>(events)
bus.on(eventTree.a)create an event bus
import { Bus } from '@nichoth/events'
const bus = new Bus()
// you can pass in a list of event names that are allowed.
// If you subscribe or emit something not in the list, it will throw an error.
const bus2 = new Bus(['valid', 'events'])create namespaced events
Take an object of arrays of strings, and return a new object where the leaf nodes are strings containing the full object path.
import { Bus } from '@nichoth/events'
Bus.createEvents({
a: {
_: [1, 2, 3]
b: {
c: [1,2,3]
}
}
})
// => {
// a: {
// 1: 'a.1',
// 2: 'a.2',
// 3: 'a.3
// b: {
// c: {
// 1: 'a.b.c.1',
// 2: 'a.b.c.2',
// 3: 'a.b.c.3'
// }
// }
// },
// }
//Bus.flatten
Get an array of the leaf node values of an object of any shape, for example the return value of Bus.createEvents.
It's recommended to use the .flatten static function to get the event name values after calling .createEvents. Or, if you pass in anything that is not an array, the constructor will call .flatten on it.
import { Bus } from '@nichoth/events'
const events = Bus.createEvents({
a: {
_: [1, 2, 3]
b: {
c: [1,2,3]
}
}
})
// pass in a list of valid event names
const bus = new Bus(Bus.flatten(events))
// is the same as
const bust2 = new Bus(events)subscribe
import { Bus } from '@nichoth/events'
const bus = new Bus()
const off = bus.on(events.a['1'], (data) => {
t.equal(data, 'test data', 'first listener gets the event')
off() // unsubscribe
})emit events
import { Bus } from '@nichoth/events'
const bus = new Bus()
bus.emit(events.a['1'], 'test data')You can partially apply the the .emit function
const emitFoo = bus.emit('foo')
bus.on('foo', data => {
console.log(data)
// => { example: 'data' }
})
emitFoo({ example: 'data' })develop
Install dev deps with --legacy-peer-deps.
npm i --legacy--peer-depstest
npm test2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago