X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Futils%2FUtils.ts;h=ae27035ff079c028f30bee9884d5b2de5521c18a;hb=f0bede86574750d1d894d16a86ef63f83948e7a0;hp=6f4517bee1b5aaf213698fbb976c421660ef1f6d;hpb=bfcd3a878051b75b9ed43421fe872121c43175f7;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 6f4517be..ae27035f 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -14,7 +14,11 @@ import { } from 'date-fns' import { Constants } from './Constants.js' -import { type TimestampedData, WebSocketCloseEventStatusString } from '../types/index.js' +import { + type EmptyObject, + type TimestampedData, + WebSocketCloseEventStatusString +} from '../types/index.js' export const logPrefix = (prefixString = ''): string => { return `${new Date().toLocaleString()}${prefixString}` @@ -77,9 +81,9 @@ export const isValidDate = (date: Date | number | undefined): date is Date | num export const convertToDate = ( value: Date | string | number | undefined | null -): Date | undefined | null => { +): Date | undefined => { if (value == null) { - return value + return undefined } if (isDate(value)) { return value @@ -236,7 +240,7 @@ const deepClone = ( return clone as O } if (value instanceof Date) { - return new Date(value.valueOf()) as O + return new Date(value.getTime()) as O } if (typeof value !== 'object' || value === null) { return value as unknown as O @@ -257,11 +261,22 @@ export const clone = (object: T): T => { return deepClone(object as CloneableData) as T } +/** + * Detects whether the given value is an asynchronous function or not. + * + * @param fn - Unknown value. + * @returns `true` if `fn` was an asynchronous function, otherwise `false`. + * @internal + */ +export const isAsyncFunction = (fn: unknown): fn is (...args: unknown[]) => Promise => { + return typeof fn === 'function' && fn.constructor.name === 'AsyncFunction' +} + export const isObject = (value: unknown): value is object => { return value != null && typeof value === 'object' && !Array.isArray(value) } -export const isEmptyObject = (object: object): object is Record => { +export const isEmptyObject = (object: object): object is EmptyObject => { if (object.constructor !== Object) { return false }