Init commit
This commit is contained in:
40
server/core/lib/internal-event-emitter.ts
Normal file
40
server/core/lib/internal-event-emitter.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { MChannel, MVideo, MVideoImmutable } from '@server/types/models/index.js'
|
||||
import { EventEmitter } from 'events'
|
||||
|
||||
export interface PeerTubeInternalEvents {
|
||||
'video-created': (options: { video: MVideo }) => void
|
||||
'video-updated': (options: { video: MVideo }) => void
|
||||
'video-deleted': (options: { video: MVideo }) => void
|
||||
|
||||
'channel-created': (options: { channel: MChannel }) => void
|
||||
'channel-updated': (options: { channel: MChannel }) => void
|
||||
'channel-deleted': (options: { channel: MChannel }) => void
|
||||
|
||||
'chapters-updated': (options: { video: MVideoImmutable }) => void
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
|
||||
declare interface InternalEventEmitter {
|
||||
on<U extends keyof PeerTubeInternalEvents>(
|
||||
event: U,
|
||||
listener: PeerTubeInternalEvents[U]
|
||||
): this
|
||||
|
||||
emit<U extends keyof PeerTubeInternalEvents>(
|
||||
event: U,
|
||||
...args: Parameters<PeerTubeInternalEvents[U]>
|
||||
): boolean
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
|
||||
class InternalEventEmitter extends EventEmitter {
|
||||
private static instance: InternalEventEmitter
|
||||
|
||||
static get Instance () {
|
||||
return this.instance || (this.instance = new this())
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
InternalEventEmitter
|
||||
}
|
||||
Reference in New Issue
Block a user