+import Configuration from './Configuration';
+import { WebSocketCloseEventStatusString } from '../types/WebSocket';
+import { WorkerProcessType } from '../types/Worker';
import { v4 as uuid } from 'uuid';
export default class Utils {
}
static secondsToHHMMSS(seconds: number): string {
- return new Date(seconds * 1000).toISOString().substr(11, 8);
+ return Utils.milliSecondsToHHMMSS(seconds * 1000);
}
static milliSecondsToHHMMSS(milliSeconds: number): string {
return new Date(milliSeconds).toISOString().substr(11, 8);
}
- static removeExtraEmptyLines(tab): void {
+ static removeExtraEmptyLines(tab: string[]): void {
// Start from the end
for (let i = tab.length - 1; i > 0; i--) {
// Two consecutive empty lines?
return date.toLocaleString() + prefixString;
}
- static cloneObject(object) {
- return JSON.parse(JSON.stringify(object));
+ static cloneObject<T>(object: T): T {
+ return JSON.parse(JSON.stringify(object)) as T;
}
static isIterable(obj): boolean {
}
static isNullOrUndefined(value): boolean {
- // eslint-disable-next-line no-eq-null
+ // eslint-disable-next-line no-eq-null, eqeqeq
if (value == null) {
return true;
}
const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay
return delay + randomSum;
}
+
+ static getWebSocketCloseEventStatusString(code: number): string {
+ if (code >= 0 && code <= 999) {
+ return '(Unused)';
+ } else if (code >= 1016) {
+ if (code <= 1999) {
+ return '(For WebSocket standard)';
+ } else if (code <= 2999) {
+ return '(For WebSocket extensions)';
+ } else if (code <= 3999) {
+ return '(For libraries and frameworks)';
+ } else if (code <= 4999) {
+ return '(For applications)';
+ }
+ }
+ if (!Utils.isUndefined(WebSocketCloseEventStatusString[code])) {
+ return WebSocketCloseEventStatusString[code] as string;
+ }
+ return '(Unknown)';
+ }
+
+ static workerPoolInUse(): boolean {
+ return Configuration.getWorkerProcess() === WorkerProcessType.DYNAMIC_POOL || Configuration.getWorkerProcess() === WorkerProcessType.STATIC_POOL;
+ }
+
+ static workerDynamicPoolInUse(): boolean {
+ return Configuration.getWorkerProcess() === WorkerProcessType.DYNAMIC_POOL;
+ }
}