A simple event bus to communicate between Nextcloud components.
npm install @nextcloud/event-bus --saveyarn add @nextcloud/event-busimport{emit,subscribe,unsubscribe}from'@nextcloud/event-bus'consth=(e)=>console.info(e)subscribe('a',h)subscribe('b',h)emit('a',{data: 123,})unsubscribe('a',h)unsubscribe('b',h)It is also possible to type events, which allows type infering on the event-bus methods like emit, subscribe and unsubscribe.
To register new events, simply extend the NextcloudEvents interface:
- Create a file like
event-bus.d.ts:
declare module '@nextcloud/event-bus'{interfaceNextcloudEvents{'example-app:awesomeness:increased': {level: number}}}export{}- Now if you use any of the event bus functions, the parameters will automatically be typed correctly:
import{subscribe}from'@nextcloud/event-bus'subscribe('example-app:awesomeness:increased',(event)=>{// "event" automatically infers type { level: number}console.log(event.level)})To stay consistent, we encourage you to use the following syntax when declaring events
app-id:object:verb
nextcloud:unified-search:closedfiles:node:uploadingfiles:node:uploadedfiles:node:deletedcontacts:contact:deletedcalendar:event:createdforms:answer:updated
npm install
npm run build
npm run test