Fixes to performance:
[e-mobility-charging-stations-simulator.git] / src / utils / Utils.ts
index f27f06660227643ebe516f8972ee08206334af22..08e87320ce2c83f9ab563c46e53ec01718723cb1 100644 (file)
@@ -1,5 +1,7 @@
 import crypto from 'crypto';
 
+import clone from 'just-clone';
+
 import { WebSocketCloseEventStatusString } from '../types/WebSocket';
 
 export default class Utils {
@@ -163,8 +165,12 @@ export default class Utils {
     );
   }
 
-  public static cloneObject<T>(object: T): T {
-    return JSON.parse(JSON.stringify(object)) as T;
+  public static isObject(item: unknown): boolean {
+    return item && typeof item === 'object' && Array.isArray(item) === false;
+  }
+
+  public static cloneObject<T extends object>(object: T): T {
+    return clone<T>(object);
   }
 
   public static isIterable<T>(obj: T): boolean {
@@ -253,7 +259,7 @@ export default class Utils {
   }
 
   public static JSONStringifyWithMapSupport(
-    obj: Record<string, unknown> | Record<string, unknown>[],
+    obj: Record<string, unknown> | Record<string, unknown>[] | Map<string, unknown>,
     space?: number
   ): string {
     return JSON.stringify(