All files / src/core utils.ts

28.57% Statements 6/21
0% Branches 0/5
12.5% Functions 1/8
31.57% Lines 6/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61        3x 28x                   3x                 3x                                         3x                 3x            
/**
 * 고유 ID 생성 함수
 * @returns 고유 ID 문자열
 */
export function generateId(): string {
  return `${Date.now().toString(36)}-${Math.random()
    .toString(36)
    .substring(2, 9)}`;
}
 
/**
 * 비동기 딜레이 함수
 * @param ms 지연 시간 (밀리초)
 * @returns Promise
 */
export function delay(ms: number): Promise<void> {
  return new Promise((resolve) => setTimeout(resolve, ms));
}
 
/**
 * 객체 깊은 복사 함수
 * @param obj 복사할 객체
 * @returns 복사된 객체
 */
export function deepCopy<T>(obj: T): T {
  Iif (obj === null || typeof obj !== "object") {
    return obj;
  }
 
  Iif (Array.isArray(obj)) {
    return obj.map((item) => deepCopy(item)) as unknown as T;
  }
 
  const copied: Record<string, any> = {};
  Object.keys(obj as Record<string, any>).forEach((key) => {
    copied[key] = deepCopy((obj as Record<string, any>)[key]);
  });
 
  return copied as T;
}
 
/**
 * 현재 시간 타임스탬프(밀리초) 반환 함수
 * @returns 현재 시간 타임스탬프
 */
export function now(): number {
  return Date.now();
}
 
/**
 * 에러를 문자열로 변환하는 함수
 * @param error 에러 객체 또는 문자열
 * @returns 에러 문자열
 */
export function errorToString(error: unknown): string {
  Iif (error instanceof Error) {
    return error.message;
  }
  return String(error);
}