perf: switch to deep-clone for cloning (20% faster)
[e-mobility-charging-stations-simulator.git] / src / utils / Utils.ts
index 73bb0ba927d2edce72ddf493635915a461d85051..c5a276bc92609e21bb55f79f2df4549a5f0fe447 100644 (file)
@@ -12,7 +12,7 @@ import {
   minutesToSeconds,
   secondsToMilliseconds,
 } from 'date-fns';
-import clone from 'just-clone';
+import deepClone from 'deep-clone';
 
 import { Constants } from './Constants';
 import { type TimestampedData, WebSocketCloseEventStatusString } from '../types';
@@ -206,8 +206,19 @@ export const isObject = (item: unknown): boolean => {
   );
 };
 
-export const cloneObject = <T extends object>(object: T): T => {
-  return clone<T>(object);
+type CloneableData =
+  | number
+  | string
+  | boolean
+  | null
+  | undefined
+  | Date
+  | CloneableData[]
+  | { [key: string]: CloneableData };
+
+export const cloneObject = <T>(object: T): T => {
+  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
+  return deepClone(object as CloneableData) as T;
 };
 
 export const hasOwnProp = (object: unknown, property: PropertyKey): boolean => {