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 07:33:01

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

Generated by: LCOV version 2.0-1