index.d.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { AbortSignal } from 'bare-abort-controller'
  2. interface EventMap {
  3. [event: string | symbol]: unknown[]
  4. }
  5. interface EventHandler<in A extends unknown[] = unknown[], out R = unknown> {
  6. (...args: A): R
  7. }
  8. declare class EventEmitterError extends Error {
  9. static OPERATION_ABORTED(cause: Error, msg?: string): EventEmitterError
  10. static UNHANDLED_ERROR(cause: Error, msg?: string): EventEmitterError
  11. }
  12. interface EventEmitter<in out M extends EventMap = EventMap> {
  13. addListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  14. addOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  15. prependListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  16. prependOnceListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  17. removeListener<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  18. removeAllListeners<E extends keyof M>(name?: E): this
  19. on<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  20. once<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  21. off<E extends keyof M, R>(name: E, fn: EventHandler<M[E], R>): this
  22. emit<E extends keyof M>(name: E, ...args: M[E]): boolean
  23. listeners<E extends keyof M, R>(name: E): EventHandler<M[E], R>
  24. listenerCount<E extends keyof M>(name: E): number
  25. getMaxListeners(): number
  26. setMaxListeners(n: number): void
  27. }
  28. declare class EventEmitter<in out M extends EventMap = EventMap> {}
  29. declare namespace EventEmitter {
  30. export function on<M extends EventMap, E extends keyof M>(
  31. emitter: EventEmitter<M>,
  32. name: E,
  33. opts?: { signal?: AbortSignal }
  34. ): AsyncIterableIterator<M[E]>
  35. export function once<M extends EventMap, E extends keyof M>(
  36. emitter: EventEmitter<M>,
  37. name: E,
  38. opts?: { signal?: AbortSignal }
  39. ): Promise<M[E]>
  40. export function forward<F extends EventMap, E extends keyof F, T extends Pick<F, E>>(
  41. from: EventEmitter<F>,
  42. to: EventEmitter<T>,
  43. names: E | E[],
  44. opts?: { emit?: (name: E, ...args: T[E]) => void }
  45. ): void
  46. export function listenerCount<M extends EventMap, E extends keyof M>(
  47. emitter: EventEmitter<M>,
  48. name: E
  49. ): number
  50. export function getMaxListeners(emitter: EventEmitter): number
  51. export function setMaxListeners(n: number, ...emitters: EventEmitter[]): void
  52. export let defaultMaxListeners: number
  53. export { EventEmitter, EventEmitterError as errors, EventMap, EventHandler }
  54. }
  55. export = EventEmitter