Skip to content

nextcloud-libraries/nextcloud-event-bus

Folders and files

NameName
Last commit message
Last commit date
Sep 2, 2024
May 27, 2024
Nov 15, 2024
May 27, 2024
May 7, 2024
May 27, 2024
May 27, 2024
May 27, 2024
May 27, 2024
May 27, 2024
Jul 15, 2024
Jul 15, 2024
Jan 22, 2025
Jan 22, 2025
May 7, 2024
May 27, 2024
May 27, 2024

Repository files navigation

@nextcloud/event-bus

REUSE status 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