-import Configuration from './Configuration';
-import { WebSocketCloseEventStatusString } from '../types/WebSocket';
-import { WorkerProcessType } from '../types/Worker';
import crypto from 'crypto';
+
import { v4 as uuid } from 'uuid';
+import { WebSocketCloseEventStatusString } from '../types/WebSocket';
+
export default class Utils {
+ private constructor() {
+ // This is intentional
+ }
+
public static logPrefix(prefixString = ''): string {
return new Date().toLocaleString() + prefixString;
}
}
public static isIterable<T>(obj: T): boolean {
- if (obj) {
- return typeof obj[Symbol.iterator] === 'function';
- }
- return false;
+ return obj ? typeof obj[Symbol.iterator] === 'function' : false;
}
public static isString(value: unknown): boolean {
return typeof value === 'string';
}
+ public static isEmptyString(value: unknown): boolean {
+ return Utils.isString(value) && (value as string).length === 0;
+ }
+
public static isUndefined(value: unknown): boolean {
return typeof value === 'undefined';
}
public static isNullOrUndefined(value: unknown): boolean {
- // eslint-disable-next-line no-eq-null, eqeqeq
- if (value == null) {
- return true;
- }
- return false;
+ // eslint-disable-next-line eqeqeq, no-eq-null
+ return value == null ? true : false;
}
public static isEmptyArray(object: unknown): boolean {
return true;
}
- public static isEmptyObject(obj: Record<string, unknown>): boolean {
+ public static isEmptyObject(obj: object): boolean {
return !Object.keys(obj).length;
}
return delay + randomSum;
}
- /**
- * Convert websocket error code to human readable string message
- *
- * @param code websocket error code
- * @returns human readable string message
- */
- public 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)';
- }
-
- public static workerPoolInUse(): boolean {
- return [WorkerProcessType.DYNAMIC_POOL, WorkerProcessType.STATIC_POOL].includes(
- Configuration.getWorkerProcess()
- );
- }
-
- public static workerDynamicPoolInUse(): boolean {
- return Configuration.getWorkerProcess() === WorkerProcessType.DYNAMIC_POOL;
- }
-
public static async promiseWithTimeout<T>(
promise: Promise<T>,
timeoutMs: number,
public static secureRandom(): number {
return crypto.randomBytes(4).readUInt32LE() / 0x100000000;
}
+
+ public static JSONStringifyWithMapSupport(
+ obj: Record<string, unknown> | Record<string, unknown>[],
+ space?: number
+ ): string {
+ return JSON.stringify(
+ obj,
+ (key, value: Record<string, unknown>) => {
+ if (value instanceof Map) {
+ return {
+ dataType: 'Map',
+ value: [...value],
+ };
+ }
+ return value;
+ },
+ space
+ );
+ }
+
+ /**
+ * Convert websocket error code to human readable string message
+ *
+ * @param code websocket error code
+ * @returns human readable string message
+ */
+ public 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)';
+ }
}