feat: add patch to add generic types to eventemitter2

EventEmitter2 has types, but they're very basic and not very type safe.
I created this patch, because my improved types haven't been merged into the official package.

Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
Tilman Vatteroth 2023-02-06 13:21:58 +01:00
parent 11c2f57e4b
commit caa53e3556
16 changed files with 445 additions and 22 deletions

View file

@ -8,7 +8,7 @@ import {
encodeMetadataUpdatedMessage,
} from '@hedgedoc/commons';
import { Logger } from '@nestjs/common';
import { EventEmitter2 } from 'eventemitter2';
import { EventEmitter2, EventMap } from 'eventemitter2';
import { Awareness } from 'y-protocols/awareness';
import { Note } from '../../notes/note.entity';
@ -16,10 +16,15 @@ import { WebsocketAwareness } from './websocket-awareness';
import { WebsocketConnection } from './websocket-connection';
import { WebsocketDoc } from './websocket-doc';
export interface MapType extends EventMap {
destroy: () => void;
beforeDestroy: () => void;
}
/**
* Represents a note currently being edited by a number of clients.
*/
export class RealtimeNote extends EventEmitter2 {
export class RealtimeNote extends EventEmitter2<MapType> {
protected logger: Logger;
private readonly websocketDoc: WebsocketDoc;
private readonly websocketAwareness: WebsocketAwareness;

View file

@ -7,13 +7,13 @@ import { EventEmitter2 } from 'eventemitter2';
import { Mock } from 'ts-mockery';
import { Note } from '../../../notes/note.entity';
import { RealtimeNote } from '../realtime-note';
import { MapType, RealtimeNote } from '../realtime-note';
import { WebsocketAwareness } from '../websocket-awareness';
import { WebsocketDoc } from '../websocket-doc';
import { mockAwareness } from './mock-awareness';
import { mockWebsocketDoc } from './mock-websocket-doc';
class MockRealtimeNote extends EventEmitter2 {
class MockRealtimeNote extends EventEmitter2<MapType> {
constructor(
private note: Note,
private doc: WebsocketDoc,