Guide
Installation
| 1 | npm install @xpulse/event --registry=https://npm.xpulse.one |
Quickstart
| 1 | import event from '@xpulse/event'; |
| 2 | |
| 3 | |
| 4 | event.on('app:ready', (data) => { |
| 5 | console.log('App ready:', data.env); |
| 6 | }); |
| 7 | |
| 8 | |
| 9 | event.emit('app:ready', { env: 'production' }); |
Listening
| 1 | |
| 2 | event.on('page:ready', (data) => { |
| 3 | console.log(data.lang); |
| 4 | }); |
| 5 | |
| 6 | |
| 7 | event.once('project:ready', (data) => { |
| 8 | console.log('Project loaded:', data.name); |
| 9 | }); |
| 10 | |
| 11 | |
| 12 | const handler = (data) => { ... }; |
| 13 | event.on('page:ready', handler); |
| 14 | event.off('page:ready', handler); |
Emitting
| 1 | event.emit('page:ready', { lang: 'en', route: '/privacy/' }); |
Payload is optional β an event can be emitted without data:
| 1 | event.emit('app:stopping'); |
Registration (optional)
Events can optionally be registered for documentation purposes β
this is not required before calling emit().
| 1 | event.register('page:ready', { |
| 2 | description: 'Page rendered, i18n can take over', |
| 3 | emittedBy: '@xpulse/project', |
| 4 | payload: '{ lang: string, route: string }', |
| 5 | }); |
Emitting an unregistered event works fine β it just won't appear in event.list().
Introspection
| 1 | |
| 2 | event.list(); |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | event.listeners('page:ready'); |
| 10 | |
| 11 | |
| 12 | |
| 13 | event.listenerCount('page:ready'); |
| 14 | |