Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nextcloud-libraries/nextcloud-event-bus
A event bus to communicate between Nextcloud components https://npmjs.org/@nextcloud/event-bus
https://github.com/nextcloud-libraries/nextcloud-event-bus
eventbus events nextcloud-plugin
Last synced: 1 day ago
JSON representation
A event bus to communicate between Nextcloud components https://npmjs.org/@nextcloud/event-bus
- Host: GitHub
- URL: https://github.com/nextcloud-libraries/nextcloud-event-bus
- Owner: nextcloud-libraries
- License: other
- Created: 2019-09-20T12:38:29.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-09-21T01:13:51.000Z (7 days ago)
- Last Synced: 2024-09-22T10:03:11.367Z (5 days ago)
- Topics: eventbus, events, nextcloud-plugin
- Language: TypeScript
- Homepage: https://nextcloud-libraries.github.io/nextcloud-event-bus/
- Size: 3.88 MB
- Stars: 5
- Watchers: 4
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @nextcloud/event-bus
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud-libraries/nextcloud-event-bus)](https://api.reuse.software/info/github.com/nextcloud-libraries/nextcloud-event-bus)
[![Build Status](https://img.shields.io/github/actions/workflow/status/nextcloud/nextcloud-event-bus/node.yml?branch=master)](https://github.com/nextcloud/nextcloud-event-bus/actions/workflows/node.yml?query=branch%3Amaster) [![Code coverage](https://img.shields.io/codecov/c/gh/nextcloud/nextcloud-event-bus/master)](https://app.codecov.io/gh/nextcloud/nextcloud-event-bus) [![npm](https://img.shields.io/npm/v/@nextcloud/event-bus.svg)](https://www.npmjs.com/package/@nextcloud/event-bus)
[![Documentation](https://img.shields.io/badge/Documentation-online-brightgreen)](https://nextcloud.github.io/nextcloud-event-bus/)A simple event bus to communicate between Nextcloud components.
## Installation
```sh
npm install @nextcloud/event-bus --save
``````sh
yarn add @nextcloud/event-bus
```## Usage
```js
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`:
```ts
declare module '@nextcloud/event-bus' {
interface NextcloudEvents {
'example-app:awesomeness:increased': { level: number }
}
}export {}
```2. Now if you use any of the event bus functions, the parameters will automatically be typed correctly:
```ts
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
```sh
npm installnpm run build
npm run test
```### Requirements
- [Node 20 or higher](https://nodejs.org/en/download/)
- [NPM 10 or higher](https://www.npmjs.com/package/npm)