LCOV - code coverage report
Current view: top level - pkg/lib/cockpit - event.ts Coverage Total Hit
Test: cockpit Lines: 100.0 % 16 16
Test Date: 2026-07-17 14:32:59

            Line data    Source code
       1          795 : /*
       2              :  * Copyright (C) 2024 Red Hat, Inc.
       3              :  * SPDX-License-Identifier: GPL-3.0-or-later
       4              :  */
       5              : 
       6          740 : export class EventEmitter<EM extends { [E in keyof EM]: (...args: never[]) => void }> {
       7          740 :     #listeners: { [E in keyof EM]?: EM[E][] } = {};
       8              : 
       9          740 :     public on<E extends keyof EM>(event: E, listener: EM[E]) {
      10          740 :         const listeners = this.#listeners[event] ||= [];
      11          740 :         listeners.push(listener);
      12            4 :         return () => {
      13            4 :             listeners.splice(listeners.indexOf(listener), 1);
      14            4 :         };
      15          740 :     }
      16              : 
      17          767 :     protected emit<E extends keyof EM>(event: E, ...args: Parameters<EM[E]>) {
      18          293 :         for (const listener of this.#listeners[event] || []) {
      19          767 :             listener(...args);
      20          767 :         }
      21          767 :     }
      22          795 : }
        

Generated by: LCOV version 2.0-1