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

homebridge / HAP-NodeJS / 10228506039

03 Aug 2024 01:48PM UTC coverage: 64.121%. Remained the same
10228506039

push

github

bwp91
Updated dependencies + lint

1352 of 2499 branches covered (54.1%)

Branch coverage included in aggregate %.

6 of 10 new or added lines in 3 files covered. (60.0%)

148 existing lines in 2 files now uncovered.

6170 of 9232 relevant lines covered (66.83%)

312.71 hits per line

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

88.24
/src/lib/util/promise-utils.ts
1
import { EventEmitter } from "events";
2

3
/**
4
 * @group Utils
5
 */
6
export function PromiseTimeout(timeout: number): Promise<void> {
15✔
7
  return new Promise<void>(resolve => {
117✔
8
    setTimeout(() => resolve(), timeout);
117✔
9
  });
10
}
11

12
/**
13
 * @group Utils
14
 */
15
export function awaitEventOnce<Obj extends EventEmitter, Event extends string, T>(element: Obj, event: Event, timeout?: number): Promise<T>;
16
/**
17
 * @group Utils
18
 */
19
export function awaitEventOnce<Obj extends EventEmitter, Event extends string>(element: Obj, event: Event, timeout?: number): Promise<void>;
20
export function awaitEventOnce<Object extends EventEmitter, Event extends string, T>(element: Object, event: Event, timeout = 5000): Promise<void | T> {
15✔
21
  return new Promise<void | T>((resolve, reject) => {
207✔
22
    // eslint-disable-next-line prefer-const
23
    let timeoutId: NodeJS.Timeout;
24

25
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
    const resolveListener = (...args: any) => {
207✔
27
      clearTimeout(timeoutId);
207✔
28

29
      resolve(args.length ? (args.length === 1 ? args[0] : args) : undefined);
207✔
30
    };
31

32
    timeoutId = setTimeout(() => {
207✔
33
      element.removeListener(event, resolveListener);
×
UNCOV
34
      reject(new Error(`awaitEvent for event ${event} timed out!`));
×
35
    }, timeout);
36

37
    element.once(event, resolveListener);
207✔
38
  });
39
}
40

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

© 2025 Coveralls, Inc