All files / lib utils.ts

96.96% Statements 32/33
83.33% Branches 5/6
100% Functions 8/8
100% Lines 32/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56      2x 14x   18x         2x         8x 8x   8x   4x 4x   8x 2x 2x   8x 8x   8x 8x 3x 3x 3x 3x           2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x    
import { EventEmitter } from "events";
import { inspect } from "util";
 
export const convertCamelCaseToSnakeCase = function (value: string): string {
  return value !== undefined
    ? value.replace(/[A-Z]/g, (letter, index) => {
        return index == 0 ? letter.toLowerCase() : "_" + letter.toLowerCase();
      })
    : "";
};
 
export const waitForEvent = function <T>(
  emitter: EventEmitter,
  event: string,
  timeout?: number,
): Promise<T> {
  return new Promise((resolve, reject) => {
    let internalTimeout: NodeJS.Timeout | undefined = undefined;
 
    const success = (val: T): void => {
      // eslint-disable-next-line @typescript-eslint/no-use-before-define
      emitter.off("error", fail);
      resolve(val);
    };
    const fail = (err: Error): void => {
      emitter.off(event, success);
      reject(err);
    };
    emitter.once(event, success);
    emitter.once("error", fail);
 
    Iif (internalTimeout) clearTimeout(internalTimeout);
    if (timeout) {
      internalTimeout = setTimeout(() => {
        emitter.off(event, success);
        emitter.off("error", fail);
        reject(new Error("Timeout reached"));
      }, timeout);
    }
  });
};
 
export const initializeInspectStyles = function (): void {
  inspect.styles.special = "cyan";
  inspect.styles.number = "green";
  inspect.styles.bigint = "green";
  inspect.styles.boolean = "yellow";
  inspect.styles.undefined = "grey";
  inspect.styles.null = "bold";
  inspect.styles.string = "red";
  inspect.styles.symbol = "green";
  inspect.styles.date = "magenta";
  inspect.styles.regexp = "red";
  inspect.styles.module = "underline";
};