events.d.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * A callback function called when a an event is triggered.
  3. */
  4. export type Listener = (...args: Array<any>) => void;
  5. /**
  6. * An **EventEmitterable** behaves similar to an EventEmitter
  7. * except provides async access to its methods.
  8. *
  9. * An EventEmitter implements the observer pattern.
  10. */
  11. export interface EventEmitterable<T> {
  12. /**
  13. * Registers a %%listener%% that is called whenever the
  14. * %%event%% occurs until unregistered.
  15. */
  16. on(event: T, listener: Listener): Promise<this>;
  17. /**
  18. * Registers a %%listener%% that is called the next time
  19. * %%event%% occurs.
  20. */
  21. once(event: T, listener: Listener): Promise<this>;
  22. /**
  23. * Triggers each listener for %%event%% with the %%args%%.
  24. */
  25. emit(event: T, ...args: Array<any>): Promise<boolean>;
  26. /**
  27. * Resolves to the number of listeners for %%event%%.
  28. */
  29. listenerCount(event?: T): Promise<number>;
  30. /**
  31. * Resolves to the listeners for %%event%%.
  32. */
  33. listeners(event?: T): Promise<Array<Listener>>;
  34. /**
  35. * Unregister the %%listener%% for %%event%%. If %%listener%%
  36. * is unspecified, all listeners are unregistered.
  37. */
  38. off(event: T, listener?: Listener): Promise<this>;
  39. /**
  40. * Unregister all listeners for %%event%%.
  41. */
  42. removeAllListeners(event?: T): Promise<this>;
  43. /**
  44. * Alias for [[on]].
  45. */
  46. addListener(event: T, listener: Listener): Promise<this>;
  47. /**
  48. * Alias for [[off]].
  49. */
  50. removeListener(event: T, listener: Listener): Promise<this>;
  51. }
  52. /**
  53. * When an [[EventEmitterable]] triggers a [[Listener]], the
  54. * callback always ahas one additional argument passed, which is
  55. * an **EventPayload**.
  56. */
  57. export declare class EventPayload<T> {
  58. #private;
  59. /**
  60. * The event filter.
  61. */
  62. readonly filter: T;
  63. /**
  64. * The **EventEmitterable**.
  65. */
  66. readonly emitter: EventEmitterable<T>;
  67. /**
  68. * Create a new **EventPayload** for %%emitter%% with
  69. * the %%listener%% and for %%filter%%.
  70. */
  71. constructor(emitter: EventEmitterable<T>, listener: null | Listener, filter: T);
  72. /**
  73. * Unregister the triggered listener for future events.
  74. */
  75. removeListener(): Promise<void>;
  76. }
  77. //# sourceMappingURL=events.d.ts.map