]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/internal-event-emitter.ts
Add Podcast RSS feeds (#5487)
[github/Chocobozzz/PeerTube.git] / server / lib / internal-event-emitter.ts
1 import { MChannel, MVideo } from '@server/types/models'
2 import { EventEmitter } from 'events'
3
4 export interface PeerTubeInternalEvents {
5 'video-created': (options: { video: MVideo }) => void
6 'video-updated': (options: { video: MVideo }) => void
7 'video-deleted': (options: { video: MVideo }) => void
8
9 'channel-created': (options: { channel: MChannel }) => void
10 'channel-updated': (options: { channel: MChannel }) => void
11 'channel-deleted': (options: { channel: MChannel }) => void
12 }
13
14 declare interface InternalEventEmitter {
15 on<U extends keyof PeerTubeInternalEvents>(
16 event: U, listener: PeerTubeInternalEvents[U]
17 ): this
18
19 emit<U extends keyof PeerTubeInternalEvents>(
20 event: U, ...args: Parameters<PeerTubeInternalEvents[U]>
21 ): boolean
22 }
23
24 class InternalEventEmitter extends EventEmitter {
25
26 private static instance: InternalEventEmitter
27
28 static get Instance () {
29 return this.instance || (this.instance = new this())
30 }
31 }
32
33 export {
34 InternalEventEmitter
35 }