@nextcloud/event-bus
TypeScript icon, indicating that this package has built-in type declarations

3.3.0 • Public • Published

@nextcloud/event-bus

Build Status Code coverage npm Documentation

A simple event bus to communicate between Nextcloud components.

Installation

npm install @nextcloud/event-bus --save
yarn add @nextcloud/event-bus

Usage

import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'

const h = (e) => console.info(e)

subscribe('a', h)
subscribe('b', h)

emit('a', {
	data: 123,
})

unsubscribe('a', h)
unsubscribe('b', h)

Typed events

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:

  1. Create a file like event-bus.d.ts:
declare module '@nextcloud/event-bus' {
	interface NextcloudEvents {
		'example-app:awesomeness:increased': { level: number }
	}
}

export {}
  1. 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)
})

Naming convention

To stay consistent, we encourage you to use the following syntax when declaring events

app-id:object:verb

Examples:

  • nextcloud:unified-search:closed
  • files:node:uploading
  • files:node:uploaded
  • files:node:deleted
  • contacts:contact:deleted
  • calendar:event:created
  • forms:answer:updated

Development

npm install

npm run build
npm run test

Requirements

Readme

Keywords

Package Sidebar

Install

npm i @nextcloud/event-bus

Weekly Downloads

9,134

Version

3.3.0

License

GPL-3.0-or-later

Unpacked Size

63.3 kB

Total Files

14

Last publish

Collaborators

  • susnux
  • pytal
  • gretadoci
  • mejo-
  • artonge
  • max-nextcloud
  • st3iny
  • marcoambrosinii
  • icewind1991
  • skjnldsv
  • christophwurst
  • juliushaertl
  • nickvergessen