(obj: T)
| 277 | } |
| 278 | |
| 279 | export function deepCopy<T extends Record<string, any>>(obj: T) { |
| 280 | const resultObj = {} as T; |
| 281 | const keys: Array<keyof T> = Object.keys(obj); |
| 282 | |
| 283 | if (!keys.length) { |
| 284 | return obj; |
| 285 | } |
| 286 | |
| 287 | keys.forEach((prop) => { |
| 288 | if (isObject(obj[prop])) { |
| 289 | resultObj[prop] = Array.isArray(obj[prop]) ? deepCopyArray(obj[prop]) : deepCopy(obj[prop]); |
| 290 | } else { |
| 291 | resultObj[prop] = obj[prop]; |
| 292 | } |
| 293 | }); |
| 294 | |
| 295 | return resultObj as T; |
| 296 | } |
| 297 | |
| 298 | export function sortCategories(x: number | string, y: number | string) { |
| 299 | return isInteger(x) ? Number(x) - Number(y) : new Date(x).getTime() - new Date(y).getTime(); |
no test coverage detected