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';
return formatDurationMilliSeconds(secondsToMilliseconds(duration));
};
-// More efficient date validation function than the one provided by date-fns
-export const isValidDate = (date: unknown): boolean => {
+// More efficient time validation function than the one provided by date-fns
+export const isValidTime = (date: unknown): boolean => {
if (typeof date === 'number') {
return !isNaN(date);
} else if (isDate(date)) {
if (isNullOrUndefined(value)) {
return value as null | undefined;
}
- if (value instanceof Date) {
- return value;
+ if (isDate(value)) {
+ return value as Date;
}
if (isString(value) || typeof value === 'number') {
return new Date(value!);
);
};
-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 => {