• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

i18next / i18next / #12544

19 Apr 2018 07:07AM UTC coverage: 87.43% (+2.0%) from 85.448%
#12544

push

jamuhl
rebuild

932 of 1066 relevant lines covered (87.43%)

39.04 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.29
/src/EventEmitter.js
1
class EventEmitter {
2
  constructor() {
3
    this.observers = {};
1✔
4
  }
5

6
  on(events, listener) {
7
    events.split(' ').forEach((event) => {
65✔
8
      this.observers[event] = this.observers[event] || [];
9
      this.observers[event].push(listener);
1✔
10
    });
1✔
11
  }
65✔
12

13
  off(event, listener) {
65✔
14
    if (!this.observers[event]) {
15
      return;
16
    }
1✔
17

15✔
18
    this.observers[event].forEach(() => {
19
      if (!listener) {
15✔
20
        delete this.observers[event];
15✔
21
      } else {
15✔
22
        const index = this.observers[event].indexOf(listener);
23
        if (index > -1) {
24
          this.observers[event].splice(index, 1);
25
        }
1✔
26
      }
1✔
27
    });
28
  }
1✔
29

×
30
  emit(event, ...args) {
31
    if (this.observers[event]) {
32
      const cloned = [].concat(this.observers[event]);
1✔
33
      cloned.forEach((observer) => {
1✔
34
        observer(...args);
×
35
      });
36
    }
1✔
37

1✔
38
    if (this.observers['*']) {
1✔
39
      const cloned = [].concat(this.observers['*']);
40
      cloned.forEach((observer) => {
41
        observer.apply(observer, [event].concat(...args));
42
      });
43
    }
44
  }
1✔
45
}
32✔
46

84✔
47
export default EventEmitter;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc