public static formatDurationMilliSeconds(duration: number): string {
duration = Utils.convertToInt(duration);
const hours = Math.floor(duration / (3600 * 1000));
- const minutes = Math.floor((duration - (hours * (3600 * 1000))) / (60 * 1000));
- const seconds = (duration - (hours * 3600 * 1000) - (minutes * 60 * 1000)) / 1000;
- let hoursStr: string = hours.toString();
- let minutesStr: string = minutes.toString();
- let secondsStr: string = seconds.toString();
+ const minutes = Math.floor((duration / 1000 - (hours * 3600)) / 60);
+ const seconds = duration / 1000 - (hours * 3600) - (minutes * 60);
+ let hoursStr = hours.toString();
+ let minutesStr = minutes.toString();
+ let secondsStr = seconds.toString();
if (hours < 10) {
hoursStr = '0' + hours.toString();
minutesStr = '0' + minutes.toString();
}
if (seconds < 10) {
- secondsStr = ('0' + seconds.toString()).substring(0, 6);
+ secondsStr = '0' + seconds.toString();
}
- return hoursStr + ':' + minutesStr + ':' + secondsStr;
+ return hoursStr + ':' + minutesStr + ':' + secondsStr.substring(0, 6);
}
public static formatDurationSeconds(duration: number): string {
return Utils.formatDurationMilliSeconds(duration * 1000);
}
- public static removeExtraEmptyLines(tab: string[]): void {
- // Start from the end
- for (let i = tab.length - 1; i > 0; i--) {
- // Two consecutive empty lines?
- if (tab[i].length === 0 && tab[i - 1].length === 0) {
- // Remove the last one
- tab.splice(i, 1);
- }
- // Check last line
- if (i === 1 && tab[i - 1].length === 0) {
- // Remove the first one
- tab.splice(i - 1, 1);
- }
- }
- }
-
public static convertToDate(value: unknown): Date {
// Check
if (!value) {
}
public static getRandomFloat(max: number, min = 0, negative = false): number {
+ if (max < min || min < 0 || max < 0) {
+ throw new RangeError('Invalid interval');
+ }
const randomPositiveFloat = crypto.randomBytes(4).readUInt32LE() / 0xffffffff;
- const sign = (negative && randomPositiveFloat < 0.5) ? 1 : -1;
+ const sign = (negative && randomPositiveFloat < 0.5) ? -1 : 1;
return sign * (randomPositiveFloat * (max - min) + min);
}
- public static getRandomInt(max: number, min = 0): number {
+ public static getRandomInteger(max: number, min = 0): number {
+ if (max < 0) {
+ throw new RangeError('Invalid interval');
+ }
max = Math.floor(max);
if (min) {
+ if (max < min || min < 0) {
+ throw new RangeError('Invalid interval');
+ }
min = Math.ceil(min);
return Math.floor(Utils.secureRandom() * (max - min + 1)) + min;
}
return false;
}
- public static isEmptyJSon(document: unknown): boolean {
- // Empty?
- if (!document) {
- return true;
- }
- // Check type
- if (typeof document !== 'object') {
- return true;
- }
- // Check
- return Object.keys(document).length === 0;
- }
-
public static isString(value: unknown): boolean {
return typeof value === 'string';
}