tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

EventEmitter.sys.mjs (931B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 // Simple event emitter abstraction for storage objects to use.
      6 export function EventEmitter() {
      7  this._events = new Map();
      8 }
      9 
     10 EventEmitter.prototype = {
     11  on(event, listener) {
     12    if (this._events.has(event)) {
     13      this._events.get(event).add(listener);
     14    } else {
     15      this._events.set(event, new Set([listener]));
     16    }
     17  },
     18  off(event, listener) {
     19    if (!this._events.has(event)) {
     20      return;
     21    }
     22    this._events.get(event).delete(listener);
     23  },
     24  emit(event, ...args) {
     25    if (!this._events.has(event)) {
     26      return;
     27    }
     28    for (let listener of this._events.get(event).values()) {
     29      try {
     30        listener.apply(this, args);
     31      } catch (e) {
     32        console.error(e);
     33      }
     34    }
     35  },
     36 };