internal-event-emitter.ts 993 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { MChannel, MVideo } from '@server/types/models'
  2. import { EventEmitter } from 'events'
  3. export interface PeerTubeInternalEvents {
  4. 'video-created': (options: { video: MVideo }) => void
  5. 'video-updated': (options: { video: MVideo }) => void
  6. 'video-deleted': (options: { video: MVideo }) => void
  7. 'channel-created': (options: { channel: MChannel }) => void
  8. 'channel-updated': (options: { channel: MChannel }) => void
  9. 'channel-deleted': (options: { channel: MChannel }) => void
  10. }
  11. declare interface InternalEventEmitter {
  12. on<U extends keyof PeerTubeInternalEvents>(
  13. event: U, listener: PeerTubeInternalEvents[U]
  14. ): this
  15. emit<U extends keyof PeerTubeInternalEvents>(
  16. event: U, ...args: Parameters<PeerTubeInternalEvents[U]>
  17. ): boolean
  18. }
  19. class InternalEventEmitter extends EventEmitter {
  20. private static instance: InternalEventEmitter
  21. static get Instance () {
  22. return this.instance || (this.instance = new this())
  23. }
  24. }
  25. export {
  26. InternalEventEmitter
  27. }